我需要确保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
我知道语法不好,因为我不知道在[]中要写什么?
答案 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