Linux

將 xdpdump 的輸出保存到變數

  • October 3, 2022

如何將 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
var=$(timeout 2s xdpdump -i ens3 -w lol.pcap | awk '/packets captured/{print $1}')

或者,如果您在問題中顯示的第一個命令的輸出轉到 stderr 而不是 stdout,那麼:

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

引用自:https://unix.stackexchange.com/questions/719557