我在Perl中的两台linux(centos)计算机之间运行iperf
。服务器端生成显示在底部的输出。我需要收集测试持续时间(在这种情况下为0.4秒)并将其放入变量中。这应该不难,但我很难过,因为我是一个perl新手。
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
答案 0 :(得分:1)
您可以使用此正则表达式从命令输出中提取“0.4秒”
/^\[\s*\d+\]\s*\d+\.\d+\s*\-\s*(\d+\.\d+)\s*sec/
例如:
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";
}
}
注意:此脚本将等待命令输出,直到您手动中断