首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中使用ping检查主机可用性

在bash脚本中使用ping检查主机可用性
EN

Stack Overflow用户
提问于 2013-08-08 10:06:00
回答 11查看 327.6K关注 0票数 91

我想写一个脚本,它会不断地检查网络中的任何设备,它应该一整天都在线,真的是在线的。我试着用ping,但是

代码语言:javascript
复制
if [ "`ping -c 1 some_ip_here`" ]
then
  echo 1
else
  echo 0
fi

提供1,无论输入有效ip地址还是无效ip地址。如何检查某个特定地址(或更好的ip地址列表中的任何设备)是否脱机?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-08-08 10:08:46

Ping根据错误类型返回不同的退出代码。

代码语言:javascript
复制
ping 256.256.256.256 ; echo $?
# 68

ping -c 1 127.0.0.1 ; echo $?
# 0

ping -c 1 192.168.1.5 ; echo $?
# 2

0表示可到达的主机

2意味着无法到达

票数 86
EN

Stack Overflow用户

发布于 2013-08-08 10:15:09

你不需要if语句中的后排。你可以用这张支票

代码语言:javascript
复制
if ping -c 1 some_ip_here &> /dev/null
then
  echo 1
else
  echo 0
fi

if命令检查以下命令( ping)的退出代码。如果退出代码为零(这意味着命令成功退出),那么将执行该块。如果它返回一个非零的退出代码,则会执行else块.

票数 79
EN

Stack Overflow用户

发布于 2015-08-15 22:02:44

我能想到一个这样的班轮来运行

代码语言:javascript
复制
ping -c 1 127.0.0.1 &> /dev/null && echo success || echo fail

将127.0.0.1替换为IP或主机名,将echo命令替换为在这两种情况下都需要完成的操作。

上面的代码会成功的,也许可以尝试使用您知道的无法访问的IP或主机名。

如下所示:

代码语言:javascript
复制
ping -c 1 google.com &> /dev/null && echo success || echo fail

还有这个

代码语言:javascript
复制
ping -c 1 lolcatz.ninja &> /dev/null && echo success || echo fail
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18123211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档