次のスクリプトを使用して、確立された接続の数と、特定の範囲のTCPポートの待機状態をカウントしています。
スクリプトはnetstatとegrepを使用して、有効な接続を除外しようとします。スクリプトはまた、ファイルから入力を読み取り、観察された接続の数をカウントします。
#!/bin/bash
START=121
END=9089
[ -f /tmp/ports.txt ] && rm -f /tmp/ports.txt
for ((a=$START; a <= $END; a++)); do
netstat -an | nawk '/TIME_WAIT|ESTABLISHED/ && !/127.0.0.1/{split($4,a,".");print a[5]}' | egrep -c ^${a}$ | \
awk -v x=$a '\
$0 != 0 {printf("%d %d\n",x,$0)}' | tee -a /tmp/ports.txt
done
awk -v s=$START -v e=$END '\
BEGIN{t=0}
{t=t+$2}
END{printf("\nTotal Connections on ports %d-%d: %d\n",s,e,t)}' /tmp/ports.txt
rm -f /tmp/ports.txt
スクリプトのパフォーマンスを向上させる方法を探しています。現在のポート範囲(121〜9089)では、完了するまでに約77秒かかります。
サンプルスクリプトとともに、パフォーマンスを改善するための提案を探しています。