Python检测IP端口连接是否正常

python
以下是个人学习 python 研究判断ip连通性方法的集合。 缺点可能有办法解决,如有错误,欢迎矫正。
方法一
import os
return1=os.system(‘ping -n 2 -w 1 172.21.1.183’)
print return1

缺点:会弹出cmd 窗口

方法二
#-- coding: utf-8 --
import subprocess
import re
p = subprocess.Popen(["ping.exe ", ‘172.21.183.183’],stdin = subprocess.PIPE,stdout = subprocess.PIPE,stderr = subprocess.PIPE,shell = True)
out = p.stdout.read()
print out
regex = re.compile(“Minimum = (\d+)ms, Maximum = (\d+)ms, Average = (\d+)ms”, re.IGNORECASE)
print regex.findall(out)
缺点: 默认ping 4次 暂时没有找到 控制ping次数的方法

方法三
from subprocess import call
result = call(“ping 172.21.4.20 -n 1”,shell=True)
print result
缺点,好像不太靠谱

方法四 这个方式应该是linux下的调用,没试过

import os,sys,re
import subprocess

p = subprocess.Popen([“ping -c 1 -w 1 172.21.183.183”],stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
out=p.stdout.read()
err=p.stderr.read()
regex=re.compile(‘100% packet loss’)
print out

代码如下 使用socket 的判断代码
#!/usr/bin/env python
#encoding:utf8
#author: linuxhub.org
#Python检测IP端口连接是否正常

import socket

def is_open(ip,port):
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((ip,int(port)))
s.shutdown(2)
return True
except:
return False

if name == ‘main’:

        host = '192.168.0.202'
        port = '6379'

        if is_open(host, port):
                        print "OK"
        else:
                        print "NO"
### 回答1: 可以使用 Pythonsocket 库来检测 IP 端口是否开放。下面是一个简单的代码示例: ``` import socket ip = '127.0.0.1' port = 80 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(5) def is_open(ip, port): try: s.connect((ip, port)) s.shutdown(2) return True except: return False if is_open(ip, port): print(f"{ip}:{port} is open") else: print(f"{ip}:{port} is closed") ``` 在上面的代码中,我们定义了一个 `is_open` 函数,它使用 socket 连接到目标 IP端口,如果连接成功,则说明该端口是开放的;如果连接失败,则说明该端口是关闭的。 ### 回答2: Python可以通过socket库来检测IP端口。 首先,需要引入socket库: ``` import socket ``` 然后,可以使用socket库中的函数来检测IP端口。比如,可以使用socket库中的`socket.connect_ex()`函数来尝试连接指定的IP端口: ``` def check_ip_port(ip, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = sock.connect_ex((ip, port)) if result == 0: print(f"IP地址 {ip} 的端口 {port} 是开放的") else: print(f"IP地址 {ip} 的端口 {port} 是关闭的") sock.close() except socket.error as e: print(f"检测IP端口出错: {str(e)}") ``` 在上述代码中,我们创建了一个socket对象,并使用`socket.AF_INET`和`socket.SOCK_STREAM`来指定使用IPV4协议和TCP连接。然后通过`socket.connect_ex()`函数来进行连接,并根据返回值判断端口是否开放。 可以调用上述函数来检测特定的IP端口: ``` check_ip_port("192.168.0.1", 80) ``` 这样,就可以检测指定IP端口是否处于开放状态。当端口开放时,程序会打印出端口是开放的消息,否则打印出端口是关闭的消息。 ### 回答3: Python可以使用socket模块来检测IP端口。 首先,我们需要导入socket模块。 然后,创建一个Socket对象。 接下来,可以使用connect()方法连接到指定的IP端口。 如果连接成功,说明该IP端口是可访问的;如果连接失败,说明该IP端口不可访问。 下面是一个简单的示例代码: ```python import socket def check_ip_port(ip, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) # 设置超时时间为2秒 result = sock.connect_ex((ip, port)) if result == 0: print(f"IP地址 {ip} 的 {port} 端口可访问") else: print(f"IP地址 {ip} 的 {port} 端口不可访问") sock.close() except socket.error: print("发生错误,请检查输入的IP端口") # 调用函数进行IP端口检测 check_ip_port("192.168.0.1", 80) ``` 在示例代码中,我们使用socket.AF_INET参数指定使用IPv4地址,使用socket.SOCK_STREAM参数指定使用TCP协议。 通过connect_ex()方法连接到指定的IP端口,返回值0表示连接成功,非零值表示连接失败。 最后,根据连接的结果打印相应的信息。 请注意,运行此代码需要保证网络连接正常,并且输入的IP地址和端口号正确。 如果连接时间过长,可以适当调整超时时间。 这只是一个简单的示例,实际的情况可能更加复杂,需要额外的处理和错误判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值