サーバーのタイムスタンプ付きの ping RTT を継続的にログに記録するために、次のコードを作成しました。スクリプトはコマンド ラインでファイルを実行していますが、ログ ファイル Ping_10.112.114.11.txt が空で、コードにエラー、警告、または構文エラーが表示されません。
以下は私のコードです:
#!/user/bin/perl
use Net::Ping;
use Time::HiRes;
use strict;
open (LOG , ">Ping_10.112.114.11.txt") || die "Cannot create log file :$!";
print LOG "File is ready to write\n\n";
my $host ="10.112.114.11";
my $p = Net::Ping->new(); #tcp echo request for ping check
$p->hires();
do
{ my ($ret, $duration, $ip) = $p->ping($host);
my $time = localtime;
my $dur = (int(1000*$duration))/1000;
print "$time\t$host is alive (packet RTT: $dur ms)\n";
print LOG "$time\t$host is alive (packet RTT: $dur ms)\n";
} while(1);
#END
また、出力を変数に保存してからファイルハンドルに送信して印刷しようとしましたが、残念ながら私の努力はどれもうまく機能していないようです。
my $output = ""$time\t$host is alive (packet RTT: $dur ms)\n";
print LOG "$output";
同じ perl 構文を使用しているが正常に動作する多くのスクリプトを書いているので、誰かが私の愚かな間違いを強調するのを手伝ってくれませんか?
私の全体的な要求の合間に、サーバーの RTT と接続をタイムスタンプ付きで継続的にログ ファイルに記録するスクリプトを作成する必要があります。追加のタイムスタンプ値を含む Ping -t からの出力と同様です。
前もって感謝します :)