centos 如果ssh连接断开

nhhxz33t  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(193)

我从ssh user@server连接到一台安装了CentOS 6.10的服务器......
而且,我在这个服务器上有一个bash脚本,命名为“jamaica.sh“,代码是......


# !/bin/bash

rm -rf jamaica.sh

很简单,但问题是。我需要找到一个命令来删除jamaica.sh,如果ssh连接下来,当我运行“退出”或当我关闭窗口。
类似的东西...

if $(service sshd status | grep "running") == false
then
rm -rf jamaica.sh
fi

我能找到一个方法来做这件事吗?

vfwfrxfs

vfwfrxfs1#

您可以尝试使用bang !来否定退出状态,类似于。

if ! service sshd status 2>&1 | grep -Fq 'running'; then
  rm -rf jamaica.sh
fi

根据Charles Duffy的评论,不需要grep。

if ! service sshd status >/dev/null; then
   rm -rf jamaica.sh
fi

请参阅
help test | grep '^ *!'
grep --help

brjng4g3

brjng4g32#

您可能希望在cron选项卡中实现此功能(运行crontab -e):


* /5   *   *   *   *   systemctl -q is-active sshd || rm -f jamaica.sh

它每五分钟运行一次。使用短路逻辑,rm只在systemd系统控制器报告SSH不活动时运行。(我删除了-r,因为它只需要删除一个目录。)
如果您没有运行systemd,请将第一个命令(在||之前)更改为service sshd status >/dev/null
如果您是root用户,您可以尝试先重新启动sshd(在/etc/crontab中):


* /5  *  *  *  *  root  systemctl -q is-active sshd || service sshd restart >/dev/null 2>&1 || rm -f jamaica.sh

(It最好是将较长的命令放在从cron调用的脚本中,而不是直接将逻辑放在其中。第二个示例推动了它,至少对于像我这样坚持80列宽的人来说是这样。)

相关问题