zoukankan      html  css  js  c++  java
  • python 多线程ping大量服务器在线情况

    需要ping一个网段所有机器的在线情况,shell脚步运行时间太长,用python写个多线程ping吧,代码如下:

    #!/usr/bin/python
    #coding=utf-8
    '''
    Created on 2015-8-4
    @author: Administrator
    '''
    
    import threading,subprocess
    from time import ctime,sleep,time
    import Queue
    
    queue=Queue.Queue()
    
    class ThreadUrl(threading.Thread):
        def __init__(self,queue):
            threading.Thread.__init__(self)
            self.queue=queue
    
    
        def run(self):
            while True:
                host=self.queue.get()
                ret=subprocess.call('ping -c 1 -w 1 '+host,shell=True,stdout=open('/dev/null','w'))
                if ret:
                    print "%s is down" % host
                else:
                    print "%s is up" % host
                self.queue.task_done()
    
    
    
    def main():
        for i in range(100):
            t=ThreadUrl(queue)
            t.setDaemon(True)
            t.start()
        for host in b:
            queue.put(host)
        queue.join()
    
    
    a=[]
    with open('ip.txt') as f:
        for line in f.readlines():
            a.append(line.split()[0])
        #print a
    
    b=['192.168.3.'+str(x) for x in range(1,254)] #ping 192.168.3 网段
    start=time()
    main()
    print "Elasped Time:%s" % (time()-start)
    
    
    
    #t2=threading.Thread(target=move,args=('fff',))
    #threads.append(t2)
    
    '''
    for i in a:
        print ctime()
        ping(i)
        sleep(1)
    
    
    
    if __name__ == '__main__':
        for t in range(len(a)):
            #t.setDaemon(True)
            threads[t].start()
            #t.join()
        print "All over %s" % ctime()
    '''

    效果如下:

    平一个网段只要2.7s左右,够快!!!

  • 相关阅读:
    CGI与fastcgi
    【总结】手动配置LNMP环境之安装NMP
    yum方式安装的Apache目录详解和配置说明
    W. Mysql
    V. PHP
    U. Apache
    学习进度条博客16
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/landhu/p/4993761.html
Copyright © 2011-2022 走看看