mon*_*hef 2 linux scripting ksh awk perl
我正在尝试制作一个脚本(使用 Perl,但不是必需的),它只会计算系统上已建立、Time_Wait 和 Closed_Wait 连接的数量并在终端中打印它们。到目前为止,我已经发现我可以使用:
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
为了打印所有连接,但是当我从脚本运行它时,它不会在终端中打印,它还为我提供了一些我不想要的连接,例如 Listen 和 Foreign。它必须只显示已建立、Time_Wait 和 Closed_Wait 的原因是因为脚本正在被监视程序使用,如果出现任何其他连接类型,该脚本将失败。任何人都可以提出建议吗?谢谢!
您可以稍微修改脚本以仅处理您需要的状态:
netstat -ant | awk '/ESTABLISHED|LISTEN|CLOSE_WAIT/ {print $6}' | \
    sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
进一步的步骤是使用awk,例如:
netstat -ant | awk '
/ESTABLISHED|LISTEN|CLOSE_WAIT/ {count[$6]++}
END {
  for(s in count) {
    printf("%12s : %6d\n", s, count[s]);
  }
}'
Run Code Online (Sandbox Code Playgroud)