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