2012-01-20 2 views
2

나는 Perl에서 두 개의 Linux (centos) 머신 사이에서 iperf을 실행 중입니다. 서버 측은 아래쪽에 표시된 출력을 생성합니다. 테스트 기간 (이 경우 0.4 초)을 수집하여 변수에 넣어야합니다. 그것은 열심히해서는 안된다. 그러나 나는 펄 뉴비이기 때문에 힘든 시간을 보내고있다.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

관련 문제