繁体   English   中英

Python 3,按顺序获取IP地址和Ping的文本文件

[英]Python 3, Take Text File of IP Addresses and Ping in Order

我正在Mac OS上工作,并且能够对文本文件进行排序,该文本文件由不按顺序排列的几个IP地址组成。 我能够按顺序对地址进行排序并进行打印。

我还想获取该新排序列表,并以相同顺序ping地址。

运行脚本后,地址将按顺序打印出来,但是扫描从文本文件中的最后一个地址开始。

码:

#!/usr/bin/env python3

import subprocess

with open("path to text file") as f:
    lines = f.readlines()

    for target in sorted(lines, key=lambda target:
    (int(target.split(".")[1]))):
        print(target)
    print('-' * 40)
    print('Attempting to ping IP Addresses in order... \n')

for line in target:

    try:
        ping = subprocess.Popen(
            ["ping", "-c", "1", "-l", "1", "-s", "1", "-W", "1", line],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )
    finally:
        reach, error = ping.communicate()
        print(reach)

例如,如果文本文件包含以下地址:
10.4.1.1,
10.6.1.1,
10.8.1.1,
10.20.1.1

我希望ping结果以该顺序打印出这些地址。

以下是脚本输出的内容:
10.4.1.1

10.6.1.1

10.8.1.1

10.20.1.1


尝试按顺序ping IP地址...

PING 1(0.0.0.1):1个数据字节\\ n \\ n --- 1个ping统计信息--- \\ n1个数据包已发送,0个数据包已接收,100.0%数据包丢失\\ n'
b'PING 0(0.0.0.0):1个数据字节\\ n \\ n --- 0个ping统计信息--- \\ n1个数据包已发送,0个数据包已接收,100.0%数据包丢失\\ n'
b''b'PING 2(0.0.0.2):1个数据字节\\ n \\ n --- 2个ping统计信息--- \\ n1个数据包被发送,0个数据包被接收,100.0%数据包丢失\\ n'
b'PING 0(0.0.0.0):1个数据字节\\ n \\ n --- 0个ping统计信息--- \\ n1个数据包已发送,0个数据包已接收,100.0%数据包丢失\\ n'
b''b'PING 1(0.0.0.1):1个数据字节\\ n \\ n --- 1个ping统计信息--- \\ n1个数据包被发送,0个数据包被接收,100.0%数据包丢失\\ n'
b''b'PING 1(0.0.0.1):1个数据字节\\ n \\ n --- 1个ping统计信息--- \\ n1个数据包被发送,0个数据包被接收,100.0%数据包丢失\\ n'
b''

理想情况下,我希望在ping通时打印出文本文件地址。 我不确定此错误是否是由于在开始时打开文件,然后再次使用它来ping或发生了什么。

错误for line in target:

您正在(重新)使用变量target ,它包含地址排序列表中的最后一个IP地址。 "10.20.1.1" )。

如果使用for循环遍历字符串,则一次只能得到一个字符( ["1", "0", "2", "0", "1", "1"] )-ping程序将尝试转换为IP地址的单个字符,但无法访问它们。

尝试像这样重组脚本(未经测试的伪代码):

with open(...) as f:
    lines = f.readlines()

addresses = sorted(lines, ...)

print('showing addresses:')

for address in addresses:
    print(address)


print('checking addresses:')

for address in addresses:
    subprocess.Popen(['ping', ..., address], ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM