首页 > 编程语言 >记一个简单测试端口的python脚本

记一个简单测试端口的python脚本

时间:2024-04-23 11:33:17浏览次数:16  
标签:socket python 端口 sock mode 测试 ip Mode

脚本的简单功能:

  • 支持IPv4和IPv6
  • 支持TCP和UDP端口
import socket, ipaddress
from enum import Enum


class Mode(Enum):
    TCP = 0
    UDP = 1

    def __repr__(self):
        return self.name

    __str__ = __repr__


def is_port_open(ip: str, port: int, mode: Mode = Mode.TCP, timeout: int = 5):
    sock = None
    ip = ip.strip()
    try:
        version = ipaddress.ip_address(ip).version
        if version == 4:
            af = socket.AF_INET
        elif version == 6:
            af = socket.AF_INET6
        else:
            print("IP地址不合法")
            exit(0)
        if mode == Mode.TCP:
            # 创建一个 TCP socket
            skt = socket.SOCK_STREAM
        elif mode == Mode.UDP:
            # 创建一个 UDP socket
            skt = socket.SOCK_DGRAM
        else:
            print("模式错误,端口无法测试")
            exit(1)
        sock = socket.socket(af, skt)
        # 设置一个超时值,以防止程序无限期地等待连接
        sock.settimeout(timeout)
        if mode == Mode.UDP:
            sock.sendto(b"Hello, World!", (ip, port))
            sock.recvfrom(1024)
        else:
            # 尝试连接到指定的主机和端口
            sock.connect((ip, port))
        # 如果连接成功,则端口是开放的
        return True
    except socket.error as e:
        print("socket连接失败:", e)
        # 如果连接失败,则端口是关闭的
        return False
    except ValueError as e:
        print(e)
        exit(1)
    finally:
        if sock:
            sock.close()


host = "10.0.0.10"
p = 22
mode = Mode.TCP
if is_port_open(host, p, mode):
    print(f"{host}的{mode}端口{p}是open")
else:
    print(f"{host}的{mode}端口{p}是closed")

标签:socket,python,端口,sock,mode,测试,ip,Mode
From: https://www.cnblogs.com/guangdelw/p/18152469

相关文章

  • JMeter做WEB和API自动化测试
    一、软件安装1、下载安装OpenJDK,只要是大于等于8的版本就可以:下载地址2、下载安装JMeter,绿色包解压及可用,需要将bin目录加入到环境变量Path中:下载地址二、Web测试用例录制1、创建工作目录,启动JMeter。mkdir-pE:\code\JMeter-AutoTestcdE:\code\JMeter-AutoTestjmeter......
  • 2.功能测试
    常用参数-count运行的次数默认为1多次运行gotest命令,可以看到输出的结果中有了一个(cache)标识,通过使用参数-count=1可以达到“禁用缓存”的效果-v通过使用参数-v可以从输出结果中清晰的看到每个测试用例的运行情况-timeout测试运行超时时间默认为10分钟......
  • python随机点名-图片版
    先创建图片文件夹,图片名就是用户名fromtkinterimport*fromPILimportImage,ImageTkimporttime,random,osclassRandomName(Frame):def__init__(self,parent=None,**kw):Frame.__init__(self,parent,kw)self._timer=Noneself.......
  • Metasploit Pro 4.22.3-2024041701 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.3-2024041701(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,ReleaseApr17,2024请访问原文链接:MetasploitPro4.22.3-2024041701(Linux,Windows)-专业渗透测试框架,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世......
  • Invicti v24.4.0 for Windows - Web 应用程序安全测试
    Invictiv24.4.0forWindows-Web应用程序安全测试InvictiStandard17Apr2024v24.4.0请访问原文链接:Invictiv24.4.0forWindows-Web应用程序安全测试,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgInvicti是一种自动化但完全可配置的Web应用程序安全......
  • python实现随机点名
    新建txt文本,输入名字,每个进行换行fromtkinterimport*importtimeclassRandomName(Frame):def__init__(self,parent=None,**kw):Frame.__init__(self,parent,kw)self._timer=Noneself._start=0.0self._elapsedtime=0......
  • Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据
    全文链接:https://tecdat.cn/?p=36004原文出处:拓端数据部落公众号随着大数据时代的来临,深度学习技术在各个领域中得到了广泛的应用。长短期记忆(LSTM)网络作为深度学习领域中的一种重要模型,因其对序列数据的强大处理能力,在自然语言处理、时间序列预测等领域中取得了显著的成果。然......
  • Python利用GPU进行深度学习
    在深度学习当中,我们训练模型通常要对模型进行反复的优化训练,仅用CPU来进行训练的话需要花费很长时间,但是我们可以使用GPU来加速训练模型,这样就可以大大减少训练模型花费的时间。 首先我们需要一张NVIDIA显卡在搜索栏中搜索设备管理器前往NVIDIA官网下载显卡对应的Studio......
  • Python企业面试题5 —— 网络编程和并发
    1.简述进程、线程和协程的区别以及应用场景?#进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度。#线程:拥有自己独立的栈和共享的堆,线程也由操作系统调度。#协程和线程:协程避免了无意义的调度,由此可以提高性能;但同时协程失去了线程使用多CPU的能力。进程与......
  • RDMA网卡测试
    ibv_devices系统中所有的RDMA设备,包括其名称和端口信息ibstat显示系统中所有的RDMA设备的详细信息,包括名称、状态 ibv_devinfo显示系统中所有的RDMA设备的详细信息,包括名称、端口信息、状态ibdev2netdev列出RDMA设备与其对应的网络设备之间的映射关系,包括RDMA设......