2011-08-31 4 views
-3

로그에 ping alive 또는 no alive 스크립팅 스크립트가 있습니다.왜 항상 핑 (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() 
+3

+1 핑링 링용. –

+0

핑링이란 무엇입니까? 그리고 왜 +1 ?? – Zygimantas

+0

핑 링링 (pingaling)이 무엇인지 전혀 모르겠다. 코드를 작성했다. 나는 그것의 소리를 좋아하고 어린 시절의 자전거 종을 생각 나게한다. ;) –

답변

0

ping이 실패 할 경우 실패 testit 객체가 -1status을 가지고 있기 때문에,이 "Alive"입니다 report의 마지막 항목에 해당합니다.

상태를 None으로 설정하거나 report을 인덱싱하기 전에 status-1인지 확인하십시오.

+0

그런데 어떻게 정상적으로 작동합니까? – Zygimantas

+0

http://www.wellho.net/solutions/python-python-threads-a-first-example.html – Zygimantas

+0

에서 복사 한 코드입니다. 아니요. 그 코드는'-q -c2' (2 개의 ping 만 표시하고 요약 행만 표시)를'ping'에 전달하지만 사용자는'-n 1'을 전달합니다 (호스트 이름 조회를 건너 뛰고 숫자 주소를 사용하고 잘못된 인수 인'1 '). '핑 (ping) '을 통해 완전히 다른 출력을 생성한다고 말하면, 그 예제와 다르게 파싱해야합니다. –

관련 문제