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

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

版本從此次開始逐漸遞增,本次規定:

V1表示第一個版本

V1.1表示第一個版本,第一次大修改

V1.1.1表示第一個版本,第一次大修改,第一次新增額外功能

V1.1.1.1表示第一個版本,第一次大修改,第一次新增額外功能,第一次新增功能

【前面的不要計較那些細節】

本次版本:

新增從檔案讀取的read_file(file_path_name)功能

目的:從檔案讀取,無需在程式碼中新增list命令的元素。

過程/函式流程=套娃:read_file------>loop_ip------>test---->str_ip---->voice_ping

簡化的寫也就是這樣一個套娃:【聯絡數學的複合函式,一層套一層,哈哈哈哈哈哈哈哈哈哈~~~~~~~~~~~~~笑哭了】

loop_ip(1,read_file("ip_command.txt"))--->test(input_ip)--->voice_ping(str_ip(input_ip))【我為什麼分成三個複合呢?因為啊,每個箭頭都有業務邏輯判斷,不單純撒】

程式碼:

import os
import pyttsx3
import random
import time
'''
這個版本要做的功能。
#單獨建立檔案,暫時略
讀取檔案,最終實現從檔案讀取命令列表,並根據引數進行判斷
read_file(file_path_name)
引數表示配置檔案所在路徑及名稱

'''

#定義一個函式,這個函式要能夠隨機產生一個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") ''' 定義一個讀取檔案內容,並將其格式化 本次新增功能 ''' def read_file(file_path_name): f = open(file_path_name,'r') #返回該方法 return f.readlines() print(f.readlines()) #此為上次新增 #實現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_table:#逐個取命令,傳遞給test test(i) #測試【測試功能1】 print("此時執行的是上個版本測試") loop_ip(0,["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"]) #【邏輯功能二】 #測試本次成果 ''' 呼叫loop_ip方法,實現迴圈,同時,將本次新增的功能進行傳參測試 ''' print("本版本高能時刻!!!!!!!!!!!!!!!") print("開始檔案中的命令迴圈,檔案命令每一行一條命令,請知曉") loop_ip(1,read_file("ip_command.txt"))