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

或者如果您在问题中显示的第一个命令的输出转到 stderr 而不是 stdout 那么:

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

相关内容