#!/usr/bin/env python
import Queue
import threading
import subprocess
import time
import re
import sys
lock = threading.Lock()
def getip(ip):
a = re.match(r'(.*\d+)\.(\d+)-(\d+)',ip)
start = int(a.group(2))
end = int(a.group(3))+1
iplist = []
for i in range(start,end):
iplist.append(a.group(1)+"."+str(i))
return iplist
def ping(qlist):
while 1:
if qlist.empty():
sys.exit()
ip = qlist.get()
ret=subprocess.call("ping -c 1 %s" % ip,shell=True,stdout=open('/dev/null','w'),stderr=subprocess.STDOUT)
lock.acquire()
if ret==0:
print "%s is Alive " % ip
else:
pass
lock.release()
qlist.task_done()
def main():
queue = Queue.Queue()
for i in getip(sys.argv[1]):
queue.put(i)
for q in range(int(sys.argv[2])):
worker=threading.Thread(target=ping,args=(queue,))
worker.setDaemon(True)
worker.start()
queue.join()
if __name__=="__main__":
main()
转载于:https://my.oschina.net/ilinux/blog/220955