阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

linux中如何查询端口被占用的情况

235次阅读
没有评论

共计 2256 个字符,预计需要花费 6 分钟才能阅读完成。

今日要运用 Python 写一个端口勘探的小程序,以检测一些特定的效劳端口有没有被占用,突然发现自个竟然不知道在 Linux 中怎么查询端口被占用的情况,天呐,从速学习一下。

Linux 如何查看端口

1、lsof -i: 端口号 用于查看某一端口的占用情况,比如查看 8000 端口使用情况,lsof -i:8000

# lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lwfs 22065 root 6u IPv4 4395053 0t0 TCP *:irdmi (LISTEN)

可以看到 8000 端口已经被轻量级文件系统转发服务 lwfs 占用

2、netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看 8000 端口的情况,netstat -tunlp |grep 8000

# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 4814/rpcbind
tcp 0 0 0.0.0.0:5908 0.0.0.0:* LISTEN 25492/qemu-kvm
tcp 0 0 0.0.0.0:6996 0.0.0.0:* LISTEN 22065/lwfs
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 38296/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5278/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5013/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5962/master
tcp 0 0 0.0.0.0:8666 0.0.0.0:* LISTEN 44868/lwfs
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 22065/lwfs
# netstat -tunlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 22065/lwfs

 

说明一下几个参数的含义:

 

-t (tcp) 仅显示 tcp 相关选项
                                 -u (udp) 仅显示 udp 相关选项
                                 -n 拒绝显示别名,能显示数字的全部转化为数字
                                 -l 仅列出在 Listen(监听) 的服务状态
                                 -p 显示建立相关链接的程序名

附加一个 Python 端口占用监测的程序,该程序可以监测指定 IP 的端口是否被占用。

1 #!/usr/bin/env Python
2 # -*- coding:utf-8 -*-
3
4 import socket, time, thread
5 socket.setdefaulttimeout(3) #设置默认超时时间
6
7 def socket_port(ip, port):
8 """
9 输入 IP 和端口号,扫描判断端口是否占用
10 """
11 try:
12 if port >=65535:
13 print u'端口扫描结束'
14 s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
15 result=s.connect_ex((ip, port))
16 if result==0:
17 lock.acquire()
18 print ip,u':',port,u'端口已占用'
19 lock.release()
20 except:
21 print u'端口扫描异常'
22
23 def ip_scan(ip):
24 """
25 输入 IP,扫描 IP 的 0 -65534 端口情况
26 """
27 try:
28 print u'开始扫描 %s' % ip
29 start_time=time.time()
30 for i in range(0,65534):
31 thread.start_new_thread(socket_port,(ip, int(i)))
32 print u'扫描端口完成,总共用时:%.2f' %(time.time()-start_time)
33 # raw_input("Press Enter to Exit")
34 except:
35 print u'扫描 ip 出错'
36
37 if __name__=='__main__':
38 url=raw_input('Input the ip you want to scan:')
39 lock=thread.allocate_lock()
40 ip_scan(url)

该程序履行成果如下:

# Python scan_port.py
Input the ip you want to scan: 20.0.208.112
开端扫描 20.0.208.112
20.0.208.112 : 111 端口已占用
20.0.208.112 : 22 端口已占用
20.0.208.112 : 8000 端口已占用
20.0.208.112 : 15996 端口已占用
20.0.208.112 : 41734 端口已占用
扫描端口完结,一共用时:9.38

 

马哥学习交流群

马哥教育 -Linux 学习 - 1 群 485374463

马哥教育 -Linux 学习 - 2 群 339184057

 

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计2256字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中