68user's page 掲示板

Prev< No. 261〜264> Next  [最新発言に戻る] [過去ログ一覧]
No. 261 # M.Masuda 1999/04/13 (火) 19:59
すいませんまたまた教えて欲しいのです。
下のスクリプトでおかしい所は無いでしょうか。

#!/usr/bin/perl -w

use Net::Ping;
print "Content-type: text/plain\n\n";

$hostname = 'pingコマンドの返らないホスト';
print "Checking $hostname\n";
if (pingecho($hostname,$timeout)){print "Echo on\n"}
else{print "Echo off\n"}

$hostname = 'pingの返るホスト';
print "Checking $hostname\n";
if (pingecho($hostname,$timeout)){print "Echo on\n"}
else{print "Echo off\n"}
exit;
リャマ本のP531でのNet::Pingを試しているのですが、
上記の試験結果は両方ともEcho offです。
もちろんホストの指定の間違いもありません。

初めて use コマンドを使うので、何か他に間違いがあるのかと
use行をコメントアウトしたり、他のコマンドを使ってみましたが
(use Cwdの結果は正常に表示)原因が不明です。
最初このコマンドを知らずに、自分で`ping -c1`とararmを使って
コーディングしましたが、シグナルを受け取った後の制御がうまく
できずにリャマ本を調べていたら、「なんだこんな便利なものがあ
るじゃないの!」と思い使ってみましたがこれもまたうまく行かず
原因が分かりません。

Net/Ping.pmも存在しますが、その記述内容は私には高度すぎて
全然分からずお手上げ状態です。

どうかご教授よろしくお願いします。

No. 262 # M.Masuda 1999/04/13 (火) 20:02
下には書き忘れましたが、$timeout=2;も指定してあります。

No. 263 # 68user 1999/04/13 (火) 23:59
リャマ本って、「プログラミングPerl改訂版」ですよね?
ラクダ本じゃなくてリャマ本が正式名(というか通称)なんですか?
それとも「ラクダ本=旧版」「リャマ本=新版」?

何も試さずに書きますが、リャマ本にも書いてある通り、pingechoは
「TCPのechoプロトコル」を使って ホストが生きているかどうか調べます。
が、少くともFreeBSDのデフォルトでは echoポートは閉じられていますので、
一般的に「echoが通る=生きている」とは言えないでしょう。

echoプロトコルってのは
    http://X68000.startshop.co.jp/~68user/net/echo-1.html
です。だから、telnet hostname echoでお話しできたら、pingechoでも
正しい答えが返ってくるはずです。

No. 264 # 68user 1999/04/14 (水) 00:08
追加。これまた何も試さずに書きますが、さらっとNet.Pmを見た限りでは
適切な引数を渡せば ICMPのecho も使えるようです。これを使えば
/sbin/ping と同じ挙動をさせられると思います。

Prev< No. 261〜264> Next  [最新発言に戻る] [過去ログ一覧]