ルータやスイッチなどのネットワーク機器の現在のトラフィックを SNMP でさらっと確認する方法。
ネットワークエンジニアなどの専門家ならもっと良い方法を知っているのかもしれませんが(telnet でログインしてあれやこれやとか)、詳しくないのでこんな方法しか思いつきませんでした。
まずは snmpwalk
で IF-MIB::interface
から下層を表示します。
$ snmpwalk -v2c -c community 192.0.2.123 interface
だらーっと沢山表示されるので、その中から目的の OID を探します。
そして、次のように 1 秒ごとの差分を表示します。
old=$(snmpget -v2c -c community 192.0.2.123 ifInOctets.1 -Ovq)
while :; do
sleep 1
val=$(snmpget -v2c -c community 192.0.2.123 ifInOctets.1 -Ovq)
echo $((val - old))
old=$val
done
1 秒ごとの転送量(バイト単位)が表示されます。
例えば、超でかいファイルをネットワーク越しに転送するときに、設定ミスなどによって意図しないルータやスイッチにトラフィックが流れてしまってえらい人に怒られてしまうのを防止できます。