扫描端口占用情况的python脚本

简介:

  之前项目上线前,领导要求让写一个脚本用来判断端口的占用情况。由于现在python3使用也比较多,基于python2修改了一下,做了个python3版本的,现在做一下总结。

一、python脚本实现扫描端口:

    pthon2下代码如下(当时的环境):

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

        效果图:

    wKiom1lKNMixnGGfAABDtYb7fIA745.png-wh_50

    python3的代码:

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

    效果:

    wKiom1lKNYOh2GtpAABwqoRjik8857.png二、linux命令判断

    1. lsof -i:端口号   用于查看指定端口号的占用情况,如下查看80端口的情况。

wKioL1lKNuDw8nIVAAAkIWYgxks058.png    2.netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看25端口的情况,netstat -tunlp |grep 25

wKiom1lKN7iA4vaYAABGY_J4_4o959.png三、写python脚本中出现的问题

   1.ImportError: No module named 'thread'

    说没有thread这个模块,python3中没有了thread模块,取而代之的是_thread和threading(推荐使用),_thread是为了过渡使用的。

  2.IndentationError: unindent does not match any outer indentation level

    百度后发现原因是因为混用了空格和tab。

    tab键设置为4位。vim  /etc/vimrc  增加set ts=4




本文转自 ping9527 51CTO博客,原文链接:http://blog.51cto.com/babyhanggege/1940700,如需转载请自行联系原作者

目录
打赏
0
0
0
0
265
分享
相关文章
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
54 6
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
4月前
|
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
376 61
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
111 14
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
101 28
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
173 7
21个Python脚本自动执行日常任务(2)
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
326 5
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
183 7
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等