IP ping范围

2024-10-02 16:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我想输入一个起始和结束的IP,ping它们之间的所有IP地址,包括列出的IP地址,然后将它们的结果显示在一个.txt文档中。我可以让它为一个单一的IP工作,但我不知道如何使它,所以用户必须输入2个IP和它成功ping之间的所有人。谢谢。这是目前我有,但有麻烦。你知道吗

def pingNetwork():


startingIP = raw_input("Enter starting IP address: ")
response = os.system("ping -c 1 " + startingIP)
for ip in range(1, 100):

 if response == 0:
    with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
        f.write(startingIP + ' is up!')
 else:
    with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
        f.write(startingIP + ' is down!')

Tags: 用户文档iptxtlogisresponseas
1条回答
网友
1楼 · 发布于 2024-10-02 16:31:48
import struct
import socket

def findIPs(start, end):
    ipstruct = struct.Struct('>I')
    start, = ipstruct.unpack(socket.inet_aton(start))
    end, = ipstruct.unpack(socket.inet_aton(end))
    return [socket.inet_ntoa(ipstruct.pack(i)) for i in range(start, end+1)]

def pingNetwork(range_ips):
    for ip in range_ips:
        response = os.system("ping -c 1 " + ip)
        if response == 0:
            with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
                f.write(ip+ ' is up!')
        else:
            with open('IP_LOG_TIMESTAMP.txt', 'w') as f:
                f.write(ip+ ' is down!')

ips = findIPs('111.111.111.0', '111.111.111.3')
pingNetwork(ips)

相关问题 更多 >