文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python检查端口是否打开(七种方法)

2023-10-28 08:48

关注

sock.connect_ex

使用socket模块的connect_ex来判断端口是否打开,如果返回值是0表示连接成功,端口打开,否则端口关闭。

import socketdef check_port(ip, port):      sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)      sock.settimeout(5)        try:          result = sock.connect_ex((ip, port))          if result == 0:              return True        else:              return False    except Exception as e:          print(f"错误: {str(e)}")      finally:          sock.close()        host = 'localhost'port = 80if check_port(host, port):    print(f'The port {port} on {host} is open.')else:    print(f'The port {port} on {host} is closed.')

sock.connect

使用socket模块的connect来判断端口是否打开,如果未发生异常表示连接成功,端口打开,否则端口关闭。

import socketdef check_port(host, port):    try:        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        sock.settimeout(1)        sock.connect((host, port))        sock.close()        return True    except:        return False    finally:          sock.close()

telnet命令

调用telnet命令来判断端口是否打开。
使用telnet命令:在大多数操作系统中,telnet命令可以用于测试端口是否开放。你可以在命令行中输入"telnet <端口>",如果端口是开放的,则telnet会连接成功并返回一些信息。否则,它将返回一个错误消息。

import os    def check_port(ip, port):      result = os.system(f"telnet {ip} {port} > /dev/null 2>&1")      if result == 0:          print(f"端口 {port} 是开放的")      else:          print(f"端口 {port} 是关闭的")

nc命令

使用nc命令(也称为netcat):nc命令是一个强大的工具,可以用于测试端口是否开放。你可以在命令行中输入"nc -zv <端口>",如果端口是开放的,则nc会连接成功并返回一些信息。否则,它将返回一个错误消息。

import os    def check_port(ip, port):      result = os.system(f"nc -zv {ip} {port} > /dev/null 2>&1")      if result == 0:          print(f"端口 {port} 是开放的")      else:          print(f"端口 {port} 是关闭的")

ping命令

使用ping命令:ping命令可以用于测试网络连接是否畅通,也可以用于检查端口是否开放。在命令行中输入"ping -n <端口>",如果端口是开放的,则ping会返回一些信息。否则,它将返回一个错误消息。

import os    def check_port(ip, port):      result = os.system(f"ping {ip} -n {port} > /dev/null 2>&1")      if result == 0:          print(f"端口 {port} 是开放的")      else:          print(f"端口 {port} 是关闭的")

注意:如果目标服务器禁用ping,就无法判断出来了。

requests检查http端口

requests库是Python的一个HTTP库,可以用来发送所有类型的HTTP请求,包括GET、POST、PUT、DELETE等。它也可以用来处理cookies、会话、重定向等。

要检查一个端口是否开放,我们通常会使用requests库来尝试向该端口发送HTTP请求,并查看是否能够成功连接。以下是一个简单的示例:

import requests    def check_port(ip, port):      try:          response = requests.get(f"http://{ip}:{port}")          if response.status_code == 200:              print(f"端口 {port} 是开放的")          else:              print(f"端口 {port} 是关闭的")      except requests.exceptions.ConnectionError:          print(f"端口 {port} 是关闭的")

在上述代码中,我们使用requests.get方法向指定的IP地址和端口发送GET请求。如果请求成功,并且返回的状态码为200,则表示该端口是开放的。如果发生requests.exceptions.ConnectionError异常,则表示该端口是关闭的。requests检查端口方法仅适用于HTTP和HTTPS端口。

Scapy

Scapy是一个强大的Python库,用于创建、解析、发送、接收并解析网络数据包。使用Scapy来检查端口是否开放。

from scapy.all import *    def check_port(ip, port):      # 构造一个ICMP数据包,并发送到目标IP地址和端口      packet = IP(dst=ip) / ICMP() / Raw(load=str(port))      # 发送数据包并获取响应      response = sr1(packet, timeout=1)      # 检查响应是否为ICMP错误类型      if response is None or response.type != ICMP.DEST_UNREACH:          print(f"端口 {port} 是开放的")      else:          print(f"端口 {port} 是关闭的")    # 测试函数  check_port('127.0.0.1', 80)

我们使用Scapy构造了一个ICMP数据包,并将目标端口作为负载包含在其中。然后,我们发送该数据包并等待响应。如果响应是ICMP错误类型(目的地不可达),则表示端口是关闭的。否则,表示端口是开放的。这种方法只适用于ICMP端口扫描。对于其他类型的端口扫描(如TCP或UDP端口扫描),需要使用不同的协议和字段。

来源地址:https://blog.csdn.net/lilongsy/article/details/132145421

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯