我想写一个脚本,它会不断地检查网络中的任何设备,它应该一整天都在线,真的是在线的。我试着用ping,但是
if [ "`ping -c 1 some_ip_here`" ]
then
echo 1
else
echo 0
fi提供1,无论输入有效ip地址还是无效ip地址。如何检查某个特定地址(或更好的ip地址列表中的任何设备)是否脱机?
发布于 2013-08-08 10:08:46
Ping根据错误类型返回不同的退出代码。
ping 256.256.256.256 ; echo $?
# 68
ping -c 1 127.0.0.1 ; echo $?
# 0
ping -c 1 192.168.1.5 ; echo $?
# 20表示可到达的主机
2意味着无法到达
发布于 2013-08-08 10:15:09
你不需要if语句中的后排。你可以用这张支票
if ping -c 1 some_ip_here &> /dev/null
then
echo 1
else
echo 0
fiif命令检查以下命令( ping)的退出代码。如果退出代码为零(这意味着命令成功退出),那么将执行该块。如果它返回一个非零的退出代码,则会执行else块.
发布于 2015-08-15 22:02:44
我能想到一个这样的班轮来运行
ping -c 1 127.0.0.1 &> /dev/null && echo success || echo fail将127.0.0.1替换为IP或主机名,将echo命令替换为在这两种情况下都需要完成的操作。
上面的代码会成功的,也许可以尝试使用您知道的无法访问的IP或主机名。
如下所示:
ping -c 1 google.com &> /dev/null && echo success || echo fail还有这个
ping -c 1 lolcatz.ninja &> /dev/null && echo success || echo failhttps://stackoverflow.com/questions/18123211
复制相似问题