为什么一直活着?

2024-09-28 03:17:40 发布

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

我编写脚本,在日志中写ping活的或不活的。在

但所有的时候都要写日志活着。在

为什么?在

代码:

import os
import re
import time
import sys
from threading import Thread
from time import gmtime, strftime

class IntTools:
    def PingTool(self):
        ipconf = open('ip.conf', 'r')
        ipstrip = ipconf.readlines()
        ip = ipstrip[2].strip()
        ip2 = ipstrip[3].strip()
        ip3 = ipstrip[4].strip()
        ip4 = ipstrip[5].strip()
        ip5 = ipstrip[6].strip()


        class testit(Thread):
            def __init__ (self,ip):
                Thread.__init__(self)
                self.ip = ip
                self.status = -1
            def run(self):
                pingaling = os.popen("ping "+self.ip+" -n 1","r")
                while 1:
                    line = pingaling.readline()
                    #print line
                    if not line: break
                    igot = re.findall(testit.lifeline,line)
                    if igot:
                        self.status = int(igot[0])

        testit.lifeline = re.compile(r"(\d) received")
        report = ("No response","Partial Response","Alive") 

        print time.ctime()  
        pinglist = []
        current = testit(ip)
        pinglist.append(current)
        current.start()
        for pingle in pinglist:
            pingle.join()
            pinglog = open('ping.log', 'a')
            pinglog.write('Status from '+pingle.ip+" is "+report[pingle.status]+'\n')
            pinglog.close()     
    def ReadPingLog(self):
        pinglog = open('ping.log', 'r+')
        print pinglog.read()
        pinglog.close()
IntTools = IntTools()
IntTools.PingTool()

Tags: fromimportselfipretimedefline
1条回答
网友
1楼 · 发布于 2024-09-28 03:17:40

因为失败的testit对象的status为{},因此这对应于report的最后一项,即"Alive"。在

尝试将状态设置为None,或者在索引report之前检查status是否为-1。在

相关问题 更多 >

    热门问题