web-dev-qa-db-ja.com

iftopの結果にawkとgrepを使用する

Iftopを使用してサーバーネットワークの送受信速度を監視したかったのです。これは私のために働くものです:

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

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

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
Amin
  1. インターフェイス名とMACアドレスはstderrに出力されるため、grepにパイプされません。 stderrを/ dev/nullにリダイレクトすることで、stderrを取り除くことができます。
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}'
2
cas

iftopは、一度だけ呼び出された場合、またはオプションなしで呼び出された場合、トラフィックの最後の40秒間をリッスンし、アップしている期間をリッスンします。実行中に実行するポーリングは、時間の経過に伴うサーバーの実際の使用状況を反映していません。

Iftopを使用してトラフィックをスニッフィングすると、システムに負担がかかります。これは、ネットワークデータをpcap APIに供給して処理する必要があるため、トラフィックの量に応じて多少大きくなる可能性があります。

ネットワークの問題をデバッグするための優れたツールであり、特に特定のトランジットフローに注意することはできますが、長期間使用するための優れたツールではありません。

トラフィックまたは帯域幅については、より専門的な環境でSNMPを使用するか、ifconfigをより簡単に使用することをお勧めします。

私はもっ​​と詳しく説明しますが、トラフィックと速度の監視について私が思っていたよりも詳細に説明している以前の投稿を見つけました。

ifconfig出力を処理してリンク速度を決定するにはどうすればよいですか?

最後の詳細として、あなたがそれを理解していれば、iftopに反対するものは何もありません

1)スクリプトを実行するたびに(5分ごとに?)瞬間速度を測定しているだけです。

2)高負荷のシステムでは使用しないでください

2
Rui F Ribeiro