我正在尝试制作一个脚本(使用 Perl,但不是必需的),该脚本将仅计算系统上的已建立、Time_Wait 和 Closed_Wait 连接的数量,并在终端中打印它们。到目前为止,我发现我可以使用:
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
为了打印所有连接,但是当我从脚本运行它时,它不会在终端中打印,并且它还给了我一些我不寻找的连接,例如 Listen 和foreign。它必须只显示Established、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'