使用Python检查IP地址的网络连接

时间:2013-05-29 08:16:24

标签: python network-programming ip-address python-sockets

如何使用python检查是否仍存在来自特定IP地址的连接。

4 个答案:

答案 0 :(得分:3)

您可以使用socket library

import socket

try:
    socket.gethostbyaddr(your_ip_adrress)
except socket.herror:
    print u"Unknown host"

答案 1 :(得分:3)

据我所知,OP正在寻找活动连接 FROM 某些ip,这意味着他想在本地检查是否存在活动连接。它看起来像netstat线上的东西给我。有几种选择:

  1. 您可以使用psutils帖子中所示的this。您需要循环活动进程并查询活动连接。

  2. 您可以使用netstat.py - Jay Loden,Giampaolo Rodola'的netstat克隆来为您完成这项工作。

  3. 添加

    你可以这样做:

    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
    

答案 2 :(得分:2)

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上的传入连接的可用性,您需要创建一个程序来接收已经无法解决的连接。

答案 3 :(得分:-2)

import os
address = "my_ip_address"
os.system('ping ' + address)