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

おすすめ記事