首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

shell脚本获取本机端口号,该怎么处理

2013-01-18 
shell脚本获取本机端口号#netstat -tln-----输出如下-------Active Internet connections (only servers)P

shell脚本获取本机端口号
#netstat -tln

-----输出如下-------
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:5801            0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:427           0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:2544          0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:631             0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      
tcp        0      0 :::22                   :::*                    LISTEN      
tcp        0      0 ::1:25                  :::*                    LISTEN  

-------------------------
想得到的输出结果如下:
5801,427,5901,111,2544,631,25,22

请问shell语句要怎么写?
[解决办法]

[nicenight@CSDN ~]# netstat -tln 
[解决办法]
 awk 'BEGIN{ORS=","}; NR>2{sub(".*:", "", $4); print $4}'
  
[解决办法]
命令:
#netstat -tln 


[解决办法]
 awk '{if($1=="tcp"){num=split($4,A,":");B[A[num]]++;if(B[A[num]]==1)str=str""A[num]","}}END{print substr(str,1,length(str)-1)}'

#cat test.txt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:5801            0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:427           0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:2544          0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:631             0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      
tcp        0      0 :::22                   :::*                    LISTEN      
tcp        0      0 ::1:25                  :::*                    LISTEN  

-------------------------

#awk '{if($1=="tcp"){num=split($4,A,":");B[A[num]]++;if(B[A[num]]==1)str=str""A[num]","}}END{print substr(str,1,length(str)-1)}'  test.txt
5801,427,5901,111,2544,631,25,22
[解决办法]

netstat -tln 
------解决方案--------------------


 awk -F '[: ]+' 'NR>2{printf $5","}'


[解决办法]
netstat -tln 
[解决办法]
 awk -F '[: ]+' 'NR>2{printf $5","}END{print ""}'

[解决办法]
引用:
引用:C/C++ code?1[nicenight@CSDN ~]# netstat -tln 
[解决办法]
 awk 'BEGIN{ORS=","}; NR>2{sub(".*:", "", $4); print $4}'

厉害,基本实现了我想要的效果,不过没有过滤重复端口。

会输出两个25
5801,427,5901,111,25……

netstat -tln 
[解决办法]
 awk 'NR>2{sub(".*:", print $4}' 
[解决办法]
 sort 
[解决办法]
 uniq 
[解决办法]
 tr '\r\n' ','

去重的。

热点排行