リモート デバイスに SSH 接続し、パケット損失カウンターを取得します。
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
上記コマンドの出力:
Tot Pkt Lost : 1083761951
失われた総パケット数だけを取得するコマンドが必要です。
答え1
GNU をお持ちの場合はgrep
、次の操作を実行できます。
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -oP 'Tot Pkt Lost\s*:\s*\K\d+'
1083761951
しかし、awk
ここではよりシンプルで移植性が高いかもしれません:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
awk '/Tot Pkt Lost/{print $NF}'
1083761951
答え2
-E
この場合、拡張正規表現を使用しないため、 with を使用する必要はありませんgrep
。 また、リモート システムではなくローカル マシンでグロビング パターンを展開するため、間違った結果が返される可能性があります。
したがって、コマンドは次のように書き換える必要があります。
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost'
-F
ここでは、正規表現ではなく文字列と一致させるため、 with を使用していますgrep
。また、リモート ホストで実行する必要があるコマンドを引用符で囲んでいるため、globbing パターンはローカルではなくリモート ホストで展開されます。
これにより、同じ出力が得られるはずです。
Tot Pkt Lost : 1083761951
これから数字だけを取得するには、次のように渡しますgrep -E -o '[[:digit:]]+'
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost' |
grep -E -o '[[:digit:]]+'
あるいは、次のようにしますsed
:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
sed -n 's/^Tot Pkt Lost.*: //p'
Tot Pkt Lost
これは、各行の先頭とその後の文字列と一致します:
。一致した文字列を削除し、行の残りの部分を出力します。その他のデータはすべて破棄されます。