ssh连接断开时的IF



我通过ssh连接到了一个带有CentOS6.10的服务器user@server......

而且,我在这个服务器上有一个bash脚本,由"命名;jamaica.sh";,代码是…

#!/bin/bash
rm -rf jamaica.sh

很简单,但问题是。如果ssh连接关闭,我需要找到一个删除jamaica.sh的命令,当我运行"退出";或者当我关上窗户的时候。

类似的。。。

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

我能找到一种方法吗?

您可以尝试用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

help test | grep '^ *!'

砰的一声输出!

! EXPR         True if expr is false.

您可能希望在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

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

最新更新