[英]Check network connection from an IP address with Python
如何使用 python 检查是否仍有来自特定 IP 地址的连接。
据我了解,OP正在从某些ip寻找活动连接,这意味着他想在本地检查是否存在活动连接。 在我看来,这就像netstat一样。 有几种选择:
您可以使用netstat.py -Gistataolo Rodola的Jay Loden的netstat副本为您完成工作。
新增 :
您可以执行以下操作:
import psutil
def remote_ips():
'''
Returns the list of IPs for current active connections
'''
remote_ips = []
for process in psutil.process_iter():
try:
connections = process.get_connections(kind='inet')
except psutil.AccessDenied or psutil.NoSuchProcess:
pass
else:
for connection in connections:
if connection.remote_address and connection.remote_address[0] not in remote_ips:
remote_ips.append(connection.remote_address[0])
return remote_ips
def remote_ip_present(ip):
return ip in remote_ips()
它是这样工作的:
>>>remote_ips()
['192.168.1.50', '192.168.1.15', '192.168.1.52', '198.252.206.16', '198.252.206.17']
>>>remote_ip_present('192.168.1.52')
True
>>>remote_ip_present('10.1.1.1')
False
ping IP地址
import os
#192.168.1.10 is the ip address
ret = os.system("ping -o -c 3 -W 3000 192.168.1.10")
if ret != 0:
print "pc still alive"
在任何情况下,如果您真的想在尝试连接的PC上检查传入连接的可用性,都需要制作一个程序来接收已经不存在的连接。
您可以使用套接字库 :
import socket
try:
socket.gethostbyaddr(your_ip_adrress)
except socket.herror:
print u"Unknown host"
如果您在 Windows 上:
import os
ret = os.system("ping -n 3 1.1.1.1")
if ret != 0:
print("Ip address responding")
-n 参数是多少次 ping 它
如果你在 LLinux 上:
import os
ret = os.system("ping -c 3 1.1.1.1")
if ret != 0:
print("Ip address responding")
import os
address = "my_ip_address"
os.system('ping ' + address)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.