SSHを介してリモートデバイスに接続し、パケット損失カウンタを取得します。
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
上記のコマンドの出力:
Tot Pkt Lost : 1083761951
Tot Pkt 不足している数だけ抽出するコマンドが必要です。
答え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
また、ワイルドカードパターンがローカルではなくリモートホストで拡張されるようにリモートホストで実行する必要があるコマンドを引用しました。
これにより、同じ出力が提供されます。
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
これは各行の先頭と:
それに続く文字列と一致します。一致する文字列を削除し、残りの行を印刷します。他のすべてのデータは削除されます。