xdpdump의 출력을 변수에 저장

xdpdump의 출력을 변수에 저장

xdpdump의 출력을 변수에 저장하는 방법. 캡처된 패킷 수를 저장하고 싶습니다.

root@front:/home/ubuntu# timeout 2s xdpdump -i ens3 -w lol.pcap 
listening on ens3, ingress XDP program ID 192 func xdp_filter, capture mode entry, capture size 262144 bytes

385449 packets captured
0 packets dropped by perf ring

캡처된 패킷에서 얻은 값을 변수에 저장하고 싶습니다. 위의 예는 385449입니다. grep, awk 또는 sed를 사용하여 이 작업을 어떻게 수행합니까?

내가 이것을 사용할 때

#!/bin/bash
var=$(timeout 2s xdpdump -i ens3 -w lol.pcap | awk '/packets captured/{print $1}')
echo $var

bash -x script.sh의 출력은 다음과 같습니다.

root@front:/home/ubuntu# bash -x d.sh 
++ timeout 2s xdpdump -i ens3 -w lol.pcap
++ awk '/packets captured/{print $1}'
listening on ens3, ingress XDP program ID 1330 func xdp_filter, capture mode entry, capture size 262144 bytes

369588 packets captured
0 packets dropped by perf ring
+ var=
+ echo

답변1

var=$(timeout 2s xdpdump -i ens3 -w lol.pcap | awk '/packets captured/{print $1}')

또는 질문에 표시한 첫 번째 명령의 출력이 stdout 대신 stderr로 이동하는 경우:

var=$(timeout 2s xdpdump -i ens3 -w lol.pcap 2>&1 | awk '/packets captured/{print $1}')

관련 정보