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}')