私は、システムに設定されたTime_WaitおよびClosed_Wait接続の数を計算して端末に印刷するスクリプト(Perlを使用しますが必須ではありません)を作成しようとしています。これまで、私は以下が利用可能であることがわかりました。
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
すべての接続を印刷しようとしていますが、スクリプトで実行すると、端末に印刷されず、Listenやforeignなど、私が探していなかったいくつかの接続も提供されます。設定済み、Time_Wait、および Closed_Wait のみを表示する必要があるのは、スクリプトがモニターで使用中で、他の接続タイプが発生した場合に失敗するためです。誰でも提案できますか?ありがとうございます!
答え1
必要な状態のみを処理するようにスクリプトを少し変更できます。
netstat -ant | awk '/ESTABLISHED|LISTEN|CLOSE_WAIT/ {print $6}' | \
sort | uniq -c | sort -n
追加のステップは、を使用してすべてのコンテンツを確認することですawk
。たとえば、次のようになります。
netstat -ant | awk '
/ESTABLISHED|LISTEN|CLOSE_WAIT/ {count[$6]++}
END {
for(s in count) {
printf("%12s : %6d\n", s, count[s]);
}
}'
答え2
行数を計算します。
netstat -nat | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l
次の行だけを印刷します。
netstat -nat | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT'