linux如何查看端口占用情况?

嵌入式操作系统

57人已加入

描述

  今天要使用python写一个端口探测的小程序,以检测一些特定的服务端口有没有被占用,突然发现自己居然不知道在linux中如何查询端口被占用的情况。

  Linux如何查看端口

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

端口

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

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

端口

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

端口

  附加一个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 如何开放端口和关闭端口

  一、查看哪些端口被打开 netstat -anp

  二、关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP  iptables -A OUTPUT -p tcp --dport 端口号-j DROP

  三、打开端口号:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT

  四、以下是linux打开端口命令的使用方法。  nc -lp 23 &(打开23端口,即telnet)  netstat -an | grep 23 (查看是否打开23端口)

  五、linux打开端口命令每一个打开的端口,都需要有相应的监听程序才可以

  Linux下端口被占用解决方法

  有时候关闭软件后,后台进程死掉,导致端口被占用。下面以JBoss端口8083被占用为例,列出详细解决过程。

  解决方法:

  1.查找被占用的端口

  netstat -tln

  netstat -tln | grep 8083

  netstat -tln 查看端口使用情况,而netstat -tln | grep 8083 则是只查看端口8083的使用情况

  2.查看端口属于哪个程序?端口被哪个进程占用

  lsof -i :8083

  3.杀掉占用端口的进程

  kill -9 进程id

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分