您好,登錄后才能下訂單哦!
使用模塊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?'完成' ~
批量測試腳本
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。