python - 从 python 中的文本文件读取/ping 多个 IP 地址时出现问题

标签 python

我刚刚开始学习Python,并遇到了以下问题。 我有一个简单的程序来从文本文件中读取 IP 地址并检查 ICMP 可达性。当文本文件中只有一个 IP 地址时,我的程序没有问题,但是,一旦我在文本文件中添加超过 1 个 IP 地址,我的程序就无法工作。看起来有超过 1 个地址,Windows ping 实用程序甚至无法理解 IP 地址并尝试解析名称。

读取文件并检查 ICMP 的示例代码:

def  validate_ip():
    global ip_add_list

     check = False


    while True:
        try:

            ip_file = raw_input("Enter the file name and extension:")
            selected_ip_file = open(ip_file,'r')
            selected_ip_file.seek(0)
            ip_add_list = selected_ip_file.readlines()
            selected_ip_file.close()

        #print ip_add_list
        except IOError:
            print"*File %s doesn't exist, try again" % ip_file
            continue
    check2 = False
    while True:
        for ip in ip_add_list:
           print ip
           ping_reply = subprocess.call(['ping','-n','5','-w','1000','-a',ip])
           if ping_reply == 0:
               check2 = True
               print "pings completed"


           else:
               check2 = False
               break
    if check2 == True:
        break
    elif check2 == False:
        print"Some or all ip(s) in the file are not reachable, please check and try again"
        validate_ip()

我有一个简单的文本文件,其中包含以下地址。

4.2.2.2

8.8.8.8

我可以从命令提示符中 ping 这些地址,但不能从程序中 ping 这些地址。

这是我从程序 ping 时遇到的错误。

Ping 请求找不到主机 4.2.2.2 。请检查名称并重试。 文件中的部分或全部 IP 无法访问,请检查并重试

(看起来它不明白4.2.2.2已经是一个IP)

一旦我从文本文件中删除第二个地址并再次运行,我就能够 ping 到 4.2.2.2。

最佳答案

由于文件中存在空格,程序中未识别出有效的 IP 地址。感谢cdarke提供以下解决方案。

“您可能会在每个 IP 地址后附加一个换行符。在 subprocess.call 中尝试 ip.rstrip()”

roadrunner66,我也感谢您针对此问题提供的帮助并提供解决方案。

关于python - 从 python 中的文本文件读取/ping 多个 IP 地址时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678957/

相关文章:

python - Pandas Apply 函数无法始终如一地工作(Python 3)

python - 当多列的条件在 python 中匹配时添加一行?

python - 运行时错误 : module compiled against API version 0xa but this version of numpy is 0x9

python - django上传没有模型的文件

python - 使用 dask 保留中间 DataFrame 计算

python - 如何汇总每行时间前 1 小时到后 1 小时的价格,Pandas

python - 如何否定 Pandas 替换的正则表达式

python - 在 XML rebot 解析期间设置链接

python - 如何在 python 中将元组转换为字符串并返回/如何在网页上编辑关联数组

Python:子进程可以暂停/恢复父进程吗