我正在分布式 Linux 系统上工作。在我的 bash 脚本中,我想 grep 的输出:
ssh $ipaddress ibstat
如果机器宕机,上面的命令将会挂起。如何处理挂起并以非零值退出 bash 脚本?
答案1
使用ConnectTimeOut
较低值的选项,您可能需要根据您的特定环境进行调整:
$ ssh -o ConnectTimeout=2 $ipaddress
ssh: connect to host 192.168.123.123 port 22: Connection timed out
$ echo $?
255
您甚至可以获得一个可以测试的返回值 -255
意味着处理命令时发生错误。
答案2
该timeout
实用程序可能是您的选择:
timeout 5 ssh $ipaddress ibstat
将在 5 秒后以非零结果退出,将其设置为足以让 ibstat 完成的合理值
答案3
您可以先尝试检查主机可用性:
if ping -c 1 $ipaddress &> /dev/null
then
ssh $ipaddress ibstat
else
exit 1
fi