小豆浆 python批量ping机器(threading,subprocess,Queue) www.xdoujiang.com

  • A+
所属分类:python实战
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #--------------------------------------------------
  4. #Author:gongzheng
  5. #Email:85646830@163.com
  6. #FileName:2.py
  7. #Function: 
  8. #Version:1.0 
  9. #Created:2017-09-22
  10. #--------------------------------------------------
  11. import threading
  12. import subprocess
  13. from Queue import Queue
  14. Threadnum = 5
  15. Q = Queue()
  16. def Ping(i,queue):
  17.     while True:
  18.         ip = queue.get()
  19.         #print 'Thread %s pinging %s' %(i,ip)  
  20.         Retnum = subprocess.call('ping -c 1 %s' % ip,shell=True,stdout=open('/dev/null','w'),stderr=subprocess.STDOUT)
  21.         if Retnum == 0:
  22.             print '%s is alive!' %ip
  23.         elif Retnum == 1:
  24.             #print '%s is down...'%ip  
  25.         pass
  26.         queue.task_done()
  27. for i in range(Threadnum):
  28.     threads = []
  29.     t = threading.Thread(target = Ping,args = (i,Q))
  30.     t.setDaemon(True)
  31.     t.start()
  32. if __name__ == '__main__':
  33.     with open('iplist') as f:
  34.         for i in f:
  35.             Q.put(i)
  36.     print '开始多线程ping'
  37.     Q.join();
  38.     print 'Done'
  39. 效果:
  40. root@192.168.4.94:scripts# python 2.py
    开始多线程ping
    192.168.4.50
    is alive!
    192.168.4.53
    is alive!
    Done
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: