扫描端口占用情况的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,如需转载请自行联系原作者

相关文章
|
30天前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
67 1
思科设备巡检命令Python脚本大集合
|
26天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
124 68
|
9天前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
46 5
|
10天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
36 2
|
12天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
27 3
|
17天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
23 3
|
17天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
18 2
|
18天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
19天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
2天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###