最近由于服務(wù)器托管中心頻繁出現(xiàn)網(wǎng)絡(luò)故障問(wèn)題,因此寫(xiě)了一簡(jiǎn)單的py程序,用于檢測(cè)網(wǎng)絡(luò)狀態(tài)。實(shí)現(xiàn)的原理相當(dāng)簡(jiǎn)單,運(yùn)行ping命令發(fā)送30個(gè)數(shù)據(jù)包,如果超過(guò)30%的丟失,則認(rèn)為故障發(fā)生,然后做故障處理,如寫(xiě)日志,發(fā)郵件。主要函數(shù)
這里需要注意的是丟失包的獲取,我的系統(tǒng)運(yùn)行ping命令返回的結(jié)果是... 30% packet loss ,所以我的正則表達(dá)式是'(\d+)% packet loss',而有的返回結(jié)果為... 30.0% packet loss ,則表達(dá)式要改變下。
deal_error為處理函數(shù),將info寫(xiě)于日志文件,并發(fā)送郵件
由于本人還在py初步學(xué)習(xí)中,如果有更好的方法實(shí)現(xiàn),請(qǐng)指教,謝謝了!?
import os def monitoring(server_ip): cmd = "ping -c 30 %s" % server_ip p = os.popen(cmd) info = p.read() p.close() re_lost_str = '(\d+)% packet loss' lost_packet = int(self.re.search(re_lost_str, info).group(1)) #獲得丟失包數(shù)據(jù) if lost_packet > 30: deal_error(info) #故障處理函數(shù)
這里需要注意的是丟失包的獲取,我的系統(tǒng)運(yùn)行ping命令返回的結(jié)果是... 30% packet loss ,所以我的正則表達(dá)式是'(\d+)% packet loss',而有的返回結(jié)果為... 30.0% packet loss ,則表達(dá)式要改變下。
deal_error為處理函數(shù),將info寫(xiě)于日志文件,并發(fā)送郵件
由于本人還在py初步學(xué)習(xí)中,如果有更好的方法實(shí)現(xiàn),請(qǐng)指教,謝謝了!?

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
