如何编写以多个ping作为运行命令条件的脚本



我需要确保2台机器正常工作,1台机器处于睡眠状态才能运行我的命令。这里的逻辑:

#!/bin/bash
ping1=$(192.168.2.15)
ping2=$(192.168.2.15)
ping3=$(192.168.2.21)
if [ $ping1 = OK ] && [ $ping2 = OK ] && [ $ping3 = failure ]
then run_command
elif [ ping1 = OK ] && [ ping2 = OK ] && [ ping3 = OK ]
then echo 'machine 3 already running'
fi

我知道语法不好,因为我不知道我必须在[]中写什么?

Shell命令具有可由$?访问的返回状态,如果成功,ping将返回0,而不是其他状态,因此我们不妨对此进行测试。

我们可以通过以下方式检索状态:

ping -c 1 192.168.2.15; ping1=$?
ping -c 1 192.168.2.17; ping2=$?
ping -c 1 192.168.2.21; ping3=$?

其中CCD_ 3将告诉ping只发送一个请求。

然后我们可以使用数值比较来测试这些值:

if [ $ping1 -eq 0 ] && [ $ping2 -eq 0 ] && [ $ping3 -ne 0 ]

顺便说一句,我会把你的测试纳入这种形式:

if ping1 && ping2 then
  if ping3 then
  else #(if ! ping3)
  fi
fi

最新更新