ThreadedPing.py

From dftwiki3
Revision as of 13:24, 4 February 2010 by Thiebaut (talk | contribs)
Jump to: navigation, search

--D. Thiebaut 16:09, 24 January 2010 (UTC)

#
# http://www.wellho.net/solutions/python-python-threads-a-first-example.html
import os
import re
import time
import sys
from threading import Thread

class testit( Thread ):
   def __init__ ( self, ip ):
      Thread.__init__(self)
      self.ip = ip
      self.status = -1

   def run( self ):
      pingaling = os.popen( "ping -q -c2 " + self.ip, "r" )
      while True:
        line = pingaling.readline()
        if not line: break
        igot = re.findall(testit.lifeline, line)
        if igot:
           self.status = int( igot[0] )

#--- static members for the class ---
testit.lifeline = re.compile(r"(\d) received")
report = ( "No response", "Partial Response", "Alive")

print time.ctime()

pinglist = []

for host in range(1,50):
   ip = "131.229.72."+str(host)
   current = testit(ip)
   pinglist.append(current)
   current.start()

for pingle in pinglist:
   pingle.join()
   print "Status from ",pingle.ip,"is",report[pingle.status]