陈奇网络工作室

python多线程ping2秒完成ping500个ip地址

系统操作和维护

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

sup process创建一个子流程来生成多个shell。

该脚本可用于判断网络割接转换时各设备的网络连通性,从企业配置库中读取ip地址和设备名称。使用队列来控制变量读取。2秒内快速Ping通。

#!/usr/bin/python

#-*-?编码:utf-8?-*-?

从哪里?穿线?进口?线

进口?子过程

从哪里?排队?进口?长队

进口?pymysql

线程数=10

q=队列()

def?pingme(我,队列):

什么时候?真实:

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程序等待,如果成功则为0。]

如果?ret==0:

打印?\\\'%s-%s?是吗?起来。\\\'%(ip[1],ip[0])

埃利夫?ret==1:

打印?\\\'%s?是吗?向下.\\\'%(ip[1],ip[0])

queue.task_done()

#开始?线程数?线

为了什么?我?在?范围(线程数):

T=thread (target=pingme,args=(I,q)) #多线程调用

t.setDaemon(True)?#设置守护线程

启动()

db?=?pyMysql.connect(

主机=10.50.99.247,

用户=网络,

passwd=xxxx,

端口=3306,

db=网络,

charset=\\\'utf8\\\ ')

光标?=?db.cursor()

游标. execute(选择?ipadd,名字?从哪里?net_dev?在哪里?`组`?比如?\\\'xxx%\\\ ')

数据?=?cursor.fetchall()

为了什么?我?在?数据:

q.put(i)?#上传列表

q . join();

打印?\ \ '完成\ \ '

~

批量测试脚本

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3