1. 程式人生 > 其它 >python實現ping命令語音播報聯通性V1.0

python實現ping命令語音播報聯通性V1.0

#稍微正式一點點的版本

import
os import pyttsx3 import random import time #定義一個函式,這個函式要能夠隨機產生一個ip #方法可手動輸入,true表示產生隨機ip,false表示手動輸入,預設隨機 def random_ip(self_ip,ip_more=True): #如果ip_more為true,產生隨機ip if ip_more == True: return ""+random.randrange(1,254)+"."+random.randrange(1,254)+"."+random.randrange(1,254)+"
."+random.randrange(1,254)+"" else: return self_ip #除以上方法外,還可以固定D類IP地址,如192.168.的字首,後面兩位進行隨機的方法,進行區域網測試,也可以利用迴圈進行區域網精準完全測試。 #注意:以上方法本例暫未使用,留待有緣人自行思考,本例需要用到的模組請使用pip install 模組名進行安裝,pip具體安裝方法,可百度 #定義一個語音播放方法 def voice_ping(who_ip): engine = pyttsx3.init() engine.say(who_ip) engine.runAndWait()
#ip處理函式,返回cmd命令列的資訊,對命令列的資訊進行擷取或加工 def str_ip(command): #傳遞命令給作業系統,命令列,並返回資訊 output = os.popen(command) #獲取的資訊是list資訊 info = output.readlines() #對list資訊進行輸出 for line in info: print(line) #進行資訊擷取,2表示列表陣列第二個元素,[3,16]表示擷取陣列下標2的值的第3到16個字元 print(info[1][3:16])
#測試擷取的資料是不是L,如果是,表示ping成功 print(info[2][-5]) #對ping成功的資料進行加工判斷並要提醒的資料,將其返回,最終要交給voice_ping方法進行語音合成輸出 if info[2][-5]=="L": return info[2]+"提示:"+info[2][3:16]+"主機線上" #如果該語句用於後續隨機ip中,則建議直接掠過【因為大量隨機產生的ip是不可能線上的,否則一直報會煩死人】 return "無法訪問目標主機"+info[1][8:21] #定義一個測試方法 #手動輸入ip測試 def test(input_ip): #獲取命令列的資訊進行判斷 #暫時省略 voice_ping(str_ip(input_ip)) #實現,此為之前測試 #for i in ["ping www.baidu.com","ping 192.168.0.1","ping 192.168.0.101 -i 1 -n 1","ping 192.168.0.102 -i 1 -n 1","ping 192.168.0.103 -i 1 -n 1"]: # test(i) #os.system("arp -a > arp.txt") #此為本次新增 #實現while迴圈 def loop_ip(ip_loop,ip_table): #當ip_loop==1時,每隔一段時間進行,缺點,佔用資源,不過這麼點程式,無所謂了 if ip_loop == 1: while 1: #當ip_loop==True時,表示定時播報 #逐個取命令,傳遞給test for line in ip_table: test(line) #完成一次迴圈後,進行等待一定時間,繼續執行,這裡可根據需要填寫 time.sleep(5) #監聽某原因時退出程式(省略) #否則當ip_loop==False時,表示只執行一次 else: for i in ip_loop:#逐個取命令,傳遞給test test(i) #測試 loop_ip(1,["ping www.baidu.com","ping 192.168.0.1","ping 192.168.0.101 -i 1 -n 1","ping 192.168.0.102 -i 1 -n 1","ping 192.168.0.103 -i 1 -n 1"])