python多线程ping2秒ping完500个ip地址-创新互联

使用模块queue 队列控制访问全局变量

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的郴州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

suprocess 创建子进程生成多个shell

此脚本可用于网络割接改造时 判断各个设备的网络连通性,ip地址和设备名字均从企业配置库读取。利用队列控制变量读取。2秒之内快速ping完

#!/usr/bin/python #-*- coding: utf-8 -*-  from threading import Thread import subprocess from Queue import Queue import pymysql num_threads=10 q=Queue() def pingme(i,queue):     while True:         ip=queue.get()         ret=subprocess.call('ping -c 1 %s' % ip[0],shell=True,stdout=open('/dev/null','w'),stderr=subprocess.STDOUT)         #[接受变量字符串为命令,ping发送一个ICMP请求,并且将标准输出重定向到/dev/null,相当于丢弃,并且将标准错误输出重新定向到标准输出。         这条语句返回其实就是ping值,就是python程序先创建shell进程,shell创建ping进程,ping进程运行返回值被shell等待,shell返回值给         python程序wait,如果成功则为0.]         if ret==0:               print '%s-%s is up!' %(ip[1],ip[0])         elif ret==1:             print '%s is down...'%(ip[1],ip[0])         queue.task_done() #start num_threads threads   for i in range(num_threads):     t=Thread(target=pingme,args=(i,q))#多线程调用     t.setDaemon(True) #设置守护线程     t.start() db = pymysql.connect(     host="10.50.99.247",     user="network",     passwd="xxxx",     port=3306,     db="network",     charset='utf8') cursor = db.cursor() cursor.execute("select ipadd,name from net_dev where `group` like 'xxx%' ") data = cursor.fetchall() for i in data:     q.put(i) #上传列表 q.join(); print '完成' ~

批量测试脚本

python 多线程ping 2秒ping完500个ip地址

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:python多线程ping2秒ping完500个ip地址-创新互联
标题链接:http://csdahua.cn/article/ddhgid.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流