awkとgrepを使用してiftop結果を取得する

awkとgrepを使用してiftop結果を取得する

iftopを使ってサーバーネットワークの送受信速度を監視したいと思います。これは私にとって効果的です。

iftop -t -s 1 -n -N | grep 'Total send and receive rate: ' | awk '{print $8}'

結果には、次のようにMacアドレスとIPが含まれます。

interface: eth0
IP address is: 192.254.78.90
MAC address is: 00:26:9e:b5:81:de
14.7Mb

最後の行だけが必要です。だからスクリプトを作成しました。

iftop -t -s 1 -n -N >> result.txt
cat result.txt | grep 'Total send and receive rate: ' | awk '{print $8}'

コマンドラインで使用すると正常に動作し、最後の行である「14.7Mb」のみが表示されます。一方、.shスクリプトとして使用すると、MACアドレスとIPがまだ含まれます。

問題を解決する方法をご存知ですか? sedを使用するより良い解決策が必要だと思いますか?

ベストアンサー1

  1. インターフェイス名とMACアドレスはstderrに印刷されるため、grepで接続されません。 stderrを/ dev / nullにリダイレクトすることで削除できます。
iftop -t -s 1 -n -N 2>/dev/null
  1. awkを使用しているので、grepも必要ありません。
iftop -t -s 1 -n -N 2>/dev/null | awk '/send and receive/ {print $8}'

おすすめ記事