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