读书人

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

发布时间: 2013-01-18 10:22:42 作者: rapoo

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' ','

去重的。

读书人网 >UNIXLINUX

热点推荐