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

时间:2016-04-13 11:25:15

标签: bash 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

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

1 个答案:

答案 0 :(得分:3)

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=$?

其中-c 1会告诉ping只发送一个请求。

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

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

顺便说一句,我会将你的测试考虑在内:

if ping1 && ping2 then
  if ping3 then

  else #(if ! ping3)

  fi
fi