2009-05-28 37 views
11

pingコマンドを使用しようとすると、私のPerlスクリプトがexit statusで止まってしまいます。少なくとも一つ 応答を指定 ホストから聞こえた場合pingコマンドの終了ステータス

+0

これはおそらくhttp://serverfault.comに属しています。 –

答えて

9

pingユーティリティは、ゼロの出口 ステータスを返します。 送信が成功したが、 応答が受信されなかった場合は2のステータス、エラー が発生した場合は別の の値(元)です。

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

実際の戻り値は、システムに依存してもよいです。

14

Google is your friend

をpingがそれはコード1で終了しますまったく返事パケットを受信しない場合:

第4リンクダウンは述べているthisです。パケットのカウントとデッドラインの両方が指定されていて、デッドラインに到着するまでにカウントパケットが受信されない場合、コード1で終了します。その他のエラーコード2で終了しますの場合は、コード0で終了します。これにより、終了コードを使用して、ホストが生存しているかどうかを確認することができます。

結果一覧表示するには:

  • 成功:コード0
  • 応答がありません:コード1つの
  • その他のエラー:ページは、私がにリンクするコード2

注意を"Linux/Unixのpingコマンド"と書かれていますが、他のシステム、LinuxやUnixの変種もこの値を変える可能性があります。

可能であれば、問題のシステムで正しいものがあるかどうかをテストします。

0

man pingをコマンドラインから試してください。戻り値は、下部にリストされています。

+3

いいえ、そうではありません。たとえば、GNU pingは、すべてのパケットを送信するのに十分な時間を与えなかった場合、255を返すようです。これはどこにも書かれていないようです。 –

9

これはOS上でいくつかのテストを行う価値があります。 e。ダウンしている

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 

戻り

0 

解決可能なホスト/ pingに応答しない:OSX

ping -c 1 google.com ; echo $? 

回答アップで解決可能なホスト上のグラム

件の
ping -c 1 localhost ; echo $? 

回答:

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 

戻り値:

2 

非解決可能なホスト

ping -c 1 sdhjfjsd ; echo $? 

回答:

ping: cannot resolve sdhjfjsd: Unknown host 

戻り値:失敗した接続が常にコード1との上を返しますながら

68 
0

成功した接続は常に、コード0を返します。あなたはまた、例えばpingは「ネットワーク到達不能」ICMP応答を受信した場合、それが応答としてカウントされますので、成功を返すことを考慮すべきである

#!/bin/bash 
light_red='\e[1;91m%s\e[0m\n'      
light_green='\e[1;92m%s\e[0m\n'     
ping -c 4 -q google.comz       
if [ "$?" -eq 0 ]; then       
    printf "$light_green" "[ CONNECTION AVAILABLE ]" 
else            
    printf "$light_red" "[ HOST DISCONNECTED ]"  
fi 
0

このスニペットを試してみてください、これをテストするには

ステータス0(ウィンドウでcygwinのpingでテスト済み)したがって、ホストが生存していて、IMOのバグがあるかどうかをテストするのにはあまり役に立ちません。

関連する問題