ping命令的退出状态

19 unix

exit status尝试使用ping命令时,我的Perl脚本卡住了.

ang*_*son 26

根据这个网站:

如果ping根本没有收到任何回复数据包,它将以代码1退出.如果指定了数据包计数和截止时间,并且在截止时间到达之前接收到的计数数据包少于它,则它也将以代码1退出.在其他错误上,它将以代码2退出.否则它以代码0退出.这使得可以使用退出代码来查看主机是否处于活动状态.

列出结果:

  • 成功:代码0
  • 没有回复:代码1
  • 其他错误:代码2

请注意,我链接到的页面显示"Linux/Unix ping命令",但其他系统,甚至Linux和Unix的变体,可能会改变此值.

如果可能的话,我会在相关系统上进行测试,以确保您拥有正确的系统.


Stu*_*ard 13

值得在您的操作系统上对此进行一些测试.例如在OSX上

可解决的主机是什么

ping -c 1 google.com ;  echo $?
Run Code Online (Sandbox Code Playgroud)

回复:

PING google.com (173.194.38.14): 56 data bytes
64 bytes from 173.194.38.14: icmp_seq=0 ttl=51 time=16.878 ms

--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 16.878/16.878/16.878/0.000 ms
Run Code Online (Sandbox Code Playgroud)

返回

0
Run Code Online (Sandbox Code Playgroud)

关闭/不响应ping的可解析主机

ping -c 1 localhost  ;  echo $?
Run Code Online (Sandbox Code Playgroud)

回复:

PING stuart-woodward.local (127.0.0.1): 56 data bytes

--- stuart-woodward.local ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
Run Code Online (Sandbox Code Playgroud)

返回:

2
Run Code Online (Sandbox Code Playgroud)

不可解析的主机

ping -c 1 sdhjfjsd  ;  echo $?
Run Code Online (Sandbox Code Playgroud)

回复:

ping: cannot resolve sdhjfjsd: Unknown host
Run Code Online (Sandbox Code Playgroud)

返回:

68
Run Code Online (Sandbox Code Playgroud)


Len*_*ann 11

如果从指定的主机听到至少一个响应,ping实用程序将返回零退出状态; 如果传输成功但没有收到回复,则为2; 如果发生错误,则返回另一个值(from).

http://www.manpagez.com/man/8/ping

实际返回值可能取决于您的系统.