perl程序显示本机的tcp连接数例子

  1. #!/usr/bin/perl 
  2.  
  3. my $_cmd="netstat -an|grep -v unix"
  4. my @_output=`$_cmd`; 
  5.  
  6. my $_estab      = 0
  7. my $_listen     = 0
  8. my $_timewait   = 0
  9. my $_timeclose  = 0
  10. my $_finwait1   = 0
  11. my $_finwait2   = 0
  12. my $_synsent    = 0
  13. my $_synrecv    = 0
  14. my $_closewait  = 0
  15.  
  16. foreach (@_output) { 
  17.         $_estab++       if /ESTABLISHED/; 
  18.         $_listen++      if /LISTEN/; 
  19.         $_timewait++    if /TIME_WAIT/; 
  20.         $_timeclose++   if /TIME_CLOSE/; 
  21.         $_finwait1++    if /FIN_WAIT1/; 
  22.         $_finwait2++    if /FIN_WAIT2/; 
  23.         $_synsent++     if /SYN_SENT/; 
  24.         $_synrecv++     if /SYN_RECV/; 
  25.         $_closewait++   if /CLOSE_WAIT/; 
  26. print " established:$_estab\n listen:$_listen\n timewait:$_timewait\n timeclose:$_timeclose\n finwait1:$_finwait1\n finwait2:$_finwait2\n synsent:$_synsent\n synrecv:$_synrecv\n closewait:$_closewait\n"; 

运行结果如下

以上运行结果等效于

netstat -an|awk '/^tcp/{++A[$NF]}END{for(a in A) print a,A[a]}'