Python 3.4.4 While循环退出和破坏正确的方法

时间:2016-01-27 08:22:59

标签: python-3.x

亲爱,  我是Python的初学者,现在我尝试创建脚本,首先:在文本文件中过滤ip-addresses(。第二,检查此文件中地址的IP可用性。但是,例如,如果我的代码产生无限结果其中一个IP地址不可用,并没有打破循环消息:"请重新检查IP地址列表或设备"。我也看到每个可用IP后的消息,但它应该只有全部IP可以到达。 请帮助我。 提前致谢

import re
import subprocess


badlist = open("List Nodes.txt", "r")

for each in badlist.readlines():
    badlist.seek(0)
    a = re.findall(r"[0-9]+(?:\.[0-9]+){3}", each)

check = False  
while True :
    for ip in a:
        ping_reply = subprocess.call(['ping', '-c', '3', '-w', '3', '-q', '-n', ip], stdout = subprocess.PIPE)

        if ping_reply == 0:
            print ("\n %s. is reachible " % ip)
            check = True
            continue

        if ping_reply == 2:
            print ("\nNo response from device %s." % ip)
            check = False
            break

        else:
            print ("\nPing to the following device has FAILED:", ip)
            check = False
            break    

        #Evaluating the 'check' flag 
    if check == False:
        print ("Please re-check IP address list or device.\n")


    elif check == True:
        print ('\nAll devices are reachable. Waiting for command file...\n')
        break

执行后出错:

python3.4 SCRIPT_FOR_NTP.py

127.0.0.1。是可达的

所有设备都可以访问。等待命令文件...

127.0.0.2。是可达的

所有设备都可以访问。等待命令文件...

Ping到以下设备已失败:8.8.8.8 请重新检查IP地址列表或设备。

Ping到以下设备已失败:8.8.8.8 请重新检查IP地址列表或设备。

Ping到以下设备已失败:8.8.8.8 请重新检查IP地址列表或设备。

0 个答案:

没有答案