我正在使用以下脚本来计算已建立的连接数,以及特定 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 秒才能完成。
我正在寻找提高性能的建议以及示例脚本。