2012-01-20 10 views
2

私はPerlの2つのLinux(centos)マシン間でiperfを実行しています。サーバー側は、下側に表示されている出力を生成します。私はテスト期間(この場合は0.4秒)を収集し、それを変数に入れる必要があります。それは難しいことではありませんが、私はperlの初心者ですので、苦労しています。Perlで "iperf"の出力を収集する方法

Server listening on TCP port 5001 
TCP window size: 85.3 KByte (default) 
[ 4] local 192.168.18.2 port 5001 connected with 192.168.17.2 port 32840 
[ 4] 0.0- 0.4 sec 10240 KBytes 210890 Kbits/sec 
あなたはたとえば、コマンド出力

/^\[\s*\d+\]\s*\d+\.\d+\s*\-\s*(\d+\.\d+)\s*sec/ 

から「0.4秒」を抽出するために、この正規表現を使用することができます

答えて

1

use IPC::Open2; 

my $pid = open2(\*CHLD_OUT, \*CHLD_IN, "iperf -s"); # open iperf server process 

my $time_duration; 

while (<CHLD_OUT>) { # waiting for command output 
    if (/^\[\s*\d+\]\s*\d+\.\d+\s*\-\s*(\d+\.\d+)\s*sec/) { 
    $time_duration = $1; 
    print "time duration: $1\n"; 
    } 
} 

注:このスクリプトは、あなたまで、コマンドの出力を待っています手でそれを中断する

+0

ありがとう、非常に役に立つ – user1161409

関連する問題