4

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

4

4 回答 4

4

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 上传入连接的可用性,您需要制作一个程序来接收已经不可能的连接。

于 2013-05-29T08:19:08.660 回答
3

据我了解,OP 正在某个 ip 寻找活动连接,这意味着他想在本地检查是否存在活动连接。对我来说,它看起来像 netstat 的东西。有几种选择:

  1. 您可以使用本文中演示psutils。您将需要循环活动进程并查询活动连接。

  2. 您可以使用netstat.py ——Jay Loden, Giampaolo Rodola' 的 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
于 2013-05-29T13:57:08.233 回答
2

您可以使用套接字库

import socket

try:
    socket.gethostbyaddr(your_ip_adrress)
except socket.herror:
    print u"Unknown host"
于 2013-05-29T08:41:38.117 回答
-3
import os
address = "my_ip_address"
os.system('ping ' + address)
于 2013-05-29T08:19:17.853 回答