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