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

这篇具有很好参考价值的文章主要介绍了Python检查端口是否打开(七种方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sock.connect_ex

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

import socket

def 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 = 80
if 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 socket

def 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 <IP地址> <端口>",如果端口是开放的,则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 <IP地址> <端口>",如果端口是开放的,则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 <IP地址> -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://www.toymoban.com/news/detail-631379.html

到了这里,关于Python检查端口是否打开(七种方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎么检查服务器的端口是否开放

    检查服务器端口是否开放可以通过多种方法实现,包括使用命令行工具、网络扫描工具或在线服务。以下是一些常用方法: 1. 使用命令行工具 1.1. telnet telnet 是一个非常基础的工具,可以用来检查指定端口的开放状态。不过, telnet 可能不是默认安装在所有操作系统上。 如果

    2024年04月08日
    浏览(32)
  • Python检查文件是否存在,若不存在则创建

    Python检查文件是否存在,若不存在则创建 在Python中,我们经常需要操作文件。在处理文件时,有时候需要判断目录是否存在。如果目录不存在,则需要创建一个新的目录。本篇文章将介绍如何使用Python来检查目录是否存在,如果不存在则创建一个新的目录。 使用os.path.exist

    2024年02月07日
    浏览(44)
  • 如何在 Python 中检查一个字符是否为数字?

    在编程中,我们经常需要检查一个字符是否为数字。这种判断对于数据验证、文本处理和输入验证等场景非常有用。Python 提供了多种方法来检查一个字符是否为数字。本文将详细介绍在 Python 中检查字符是否为数字的几种常用方法,并提供示例代码帮助你理解和应用这些方法

    2024年02月07日
    浏览(24)
  • 检查Python中的变量是否为字符串

    我们将通过示例介绍两种不同的方法来检查 Python 中的变量是否为字符串。 在 Python 中,每个变量都有一个数据类型。 数据类型表示变量内部存储的数据类型。 数据类型是编程语言最重要的特征,用于区分我们可以存储的不同类型的数据,例如字符串、整型和浮点型。 在处

    2024年02月08日
    浏览(33)
  • 检查值是否存在于 Java 中的数组中的4种详细方法介绍

    在 Java 中,有许多方法可以检查此数组中是否存在特定元素。 使用线性搜索方法 使用二进制搜索方法 使用 List.contains() 方法 使用 Stream.anyMatch() 方法 时间复杂度:O(N) 辅助空间:O(1) 通过将搜索间隔重复分成两半来搜索排序数组。从覆盖整个数组的区间开始。如果搜索

    2024年02月14日
    浏览(33)
  • python:Paramiko / SCP-检查文件是否在远程主机上

    关于python:Paramiko / SCP-检查文件是否在远程主机上 | 码农家园 (codenong.com)

    2024年02月06日
    浏览(34)
  • 详解【计算机类&面试真题】军队文职考试——第8期:OSI的七层模型 | 数据通信的三种方式 | 通信网络的检查方法,附Python进行网络连通性检查、带宽测试、端口扫描、链路质量测试、安全性扫描

      不知道命运是什么,才知道什么是命运。———史铁生     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能领域优质创作者🏆

    2024年01月25日
    浏览(35)
  • Python 中检查字符串是否包含列表中的元素

    使用 any() 函数检查字符串是否包含列表中的元素。 如果字符串至少包含列表中的一个元素, any() 函数将返回 True,否则返回 False。 如果需要检查列表中的任何元素是否包含字符串,可以看以下方式: 检查列表中的任何元素是否包含字符串 我们使用生成器表达式来迭代字符

    2024年02月09日
    浏览(49)
  • 用python实现检查一个文件夹中所有word文件内容是否重复

    要检查一个文件夹中所有Word文件的内容是否重复,你可以使用Python的 python-docx 库来读取Word文件的内容,并使用Python的集合数据结构来检查重复项。 以下是一个示例代码,演示如何实现这个功能: python复制代码 import os from docx import Document def get_word_files(directory): \\\"\\\"\\\"获取指定目

    2024年01月23日
    浏览(49)
  • 如何在 Windows 中检查打开的TCP/IP端口

    每当应用程序想要通过网络访问自己时,它都会声明一个TCP/IP端口,这意味着该端口不能被其他任何东西使用。那么,如何检查打开的端口以查看哪个应用程序已经在使用它呢? 首先,你需要在管理员模式下打开命令提示符。按 Windows + S 打开搜索框,然后在搜索框中键入

    2024年02月14日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包