如何在Perl中收集“iperf”输出

时间:2012-01-20 20:52:07

标签: perl

我在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

1 个答案:

答案 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";
  }
}

注意:此脚本将等待命令输出,直到您手动中断