未分類

netstat -s コマンドっぽい表示をシェルで実現する

最近のLinuxはデフォルトではnet-toolsのコマンド(ifconfig、netstat等)はインストールされておらず、代わりにiproute2(ip、ss等)の使用を推奨していたりする。多くの先人の方がnet-toolsからiproute2へ移行する人向けにコマンド対応の一覧まとめて展開してくれているので大抵のコマンドは困らないで済む(ありがたや)。

orebibou.com

対応するコマンドがない…

だけど、1つだけどんなに調べても対応するコマンドが見つからない。

それは、ネットワーク統計を表示するnetstat -s だ。
(いや、あるよって方がいたら教えてください)

先人の方々がまとめた記事を見ると、”ss -s”を代替コマンドとしている方が多いのだが実際のコマンド結果を見ると欲しいのはソレじゃない感スゴイ。(私だけ?)

netstat -sの表示

ss -sの結果

これは、いくらなんでも端折りではないだろうか…
そもそも、ss -s はヘルプをみるとソケットのサマリーと書いてあってネットワークの統計とは言ってない。

無ければ作る

net-toolsをインストールすれば済む話ですが、それは何だか負けた気がするので自分で代わりのコマンド(シェルスクリプト)を作ってみた。

netstat-s.sh

表示結果

単に/proc/net/snmpと/proc/net/netstatを整形して表示するだけ。
IPv6系は/proc/net/snmp6を直接catで覗けばよい。

[参考]
逆引きシェルスクリプト/スペース区切りの文字列を配列に格納する方法 – Linuxと過ごす
ソートしないで重複行を削除する – Qiita