使用 Netstat 仅计算已建立、TIME_WAIT 和已关闭等待连接的脚本

使用 Netstat 仅计算已建立、TIME_WAIT 和已关闭等待连接的脚本

我正在尝试制作一个脚本(使用 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'

相关内容