python 多线程ping大量服务器在线情况
2015-11-25 09:58
453 查看
需要ping一个网段所有机器的在线情况,shell脚步运行时间太长,用python写个多线程ping吧,代码如下:
效果如下:
平一个网段只要2.7s左右,够快!!!
#!/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左右,够快!!!
相关文章推荐
- Python获取脚本所在目录
- 一、python字典之(1)按值查询键
- 学习Python (五)
- 用python实现一个简单的计算器
- leetcode之Remove Linked List Elements
- python学习笔记-Day05-第二部分(模块简介)
- Python操作excel文件
- Python文件打包成EXE文件
- python多线程学习
- python基础二
- [python]pygame游戏开发学习(三)
- Python实例学习(1) - IP扫描器和163邮箱发信链接
- python进阶必读汇总
- Python常见错误(1)
- python 多线程实现检测服务器在线情况
- python基础知识小结之集合
- 实现MySQL回滚的Python脚本的编写教程
- python-14:异常处理
- python-16:分析网页源代码
- python-17:正则表达式(一)