iperf3 결과는 로그 파일에 잘 표시되어야 합니다.

iperf3 결과는 로그 파일에 잘 표시되어야 합니다.

나는 다음과 같은 결과를 얻었습니다.

Wed Aug 15 19:35:11 CEST 2018
Connecting to host x.x.x.x, port 5201
[  4] local x.x.x.x port 48944 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   375 MBytes  3.14 Gbits/sec  273    471 KBytes
[  4]   1.00-2.00   sec   428 MBytes  3.59 Gbits/sec  145    376 KBytes
[  4]   2.00-3.00   sec   360 MBytes  3.02 Gbits/sec  148    454 KBytes
[  4]   3.00-4.00   sec   339 MBytes  2.84 Gbits/sec   83    407 KBytes
[  4]   4.00-5.00   sec   305 MBytes  2.56 Gbits/sec  104    414 KBytes
[  4]   5.00-6.00   sec   301 MBytes  2.53 Gbits/sec  186    440 KBytes
[  4]   6.00-7.00   sec   325 MBytes  2.73 Gbits/sec  174    485 KBytes
[  4]   7.00-8.00   sec   434 MBytes  3.64 Gbits/sec   81    677 KBytes
[  4]   8.00-9.00   sec   412 MBytes  3.46 Gbits/sec  226    537 KBytes
[  4]   9.00-10.00  sec   409 MBytes  3.43 Gbits/sec   47    372 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  3.60 GBytes  3.09 Gbits/sec  1467             sender
[  4]   0.00-10.00  sec  3.60 GBytes  3.09 Gbits/sec                      receiver

나는 단지 이런 라인을 원한다 :-)

17-08-15 19:35:11 0.00-10.00  sec  3.60 GBytes  3.09 Gbits/sec  1467

어떻게 이럴 수있어?

이렇게 스크립트를 시작했는데 awk, cut 등을 사용해야 할 것 같습니다.

host=x.x.x.x
log=/data/div/sh/iperf.log
logr=reverseiperf.log
runs=2

for run in $(seq 1 $runs); do
    date >> $log && iperf3 -c $host >> $log
done

답변1

이것은 가장 간단한 방법은 아니지만 "단방향"을 보여주기를 바랍니다.

$ printf "%s%s\n" \
   "$(TZ=CEST date -d "$(head -1 iperf.txt)" "+%y-%m-%d %H:%M:%S")" \
   "$(grep sender iperf.txt | awk -F"]  " '{print $2}')"
18-08-15 19:35:11 0.00-10.00  sec  3.60 GBytes  3.09 Gbits/sec  1467             sender

작동 방식은 다음과 같습니다.

  • printf "%s%s\n"iperf.txt- 출력에서 ​​구문 분석할 2개의 문자열을 인쇄합니다.
  • "$(TZ=CEST date -d "$(head -1 iperf.txt)" "+%y-%m-%d %H:%M:%S")"iperf.txt- ( )의 첫 번째 줄을 구문 분석하여 명령 head -1에 전달 date하고 예제에 표시된 대로 날짜 형식을 다시 지정합니다.
  • "$(grep sender iperf.txt | awk -F"] " '{print $2}')"- 문자열이 포함된 행을 구문 분석한 sender다음 문자별로 행을 분할하고 ]분할 인수의 오른쪽을 인쇄합니다. ]이것이 결과입니다 $2.

관련 정보