您好,歡迎來到網暖!
?
當前位置:網暖 » 站長資訊 » 建站基礎 » 網絡技術 » 文章詳細 訂閱RssFeed

python實現運維自動巡檢功能,五分鐘巡檢一次,并將不通的地址發送郵件通知

來源:網絡整理 瀏覽:168次 時間:2019-11-18

? ? ? 苦逼的運維工程師,每天做著重復的工作,如果沒有自動化的工具協助,真的是無法面對繁重的工作。尤其是服務器、交換機需要24小時在線,運維工程師不可能24小上班,于是自動化運維工具必不可少。

? ? ? 自從學習python已有半年時間,最近完成了一個python腳本,實現五分鐘巡檢一次,并將不通的地址發送郵件通知。

實現條件:1、在.py文件同目錄下建立doip.txt,里面保存要巡檢的IP地址。如下圖:

? ? ? ? ? ? ? ? ? ? ? ? ?360截圖20191113151921740.jpg


具體代碼如下:

#!/usr/bin/python#?-*-?coding:?UTF-8?-*-import?osimport?reimport?datetimefrom?email.header?import?Headerfrom?email.mime.text?import?MIMETextfrom?email.utils?import?parseaddr,?formataddrimport?smtplibimport?timedef?ceshi01(ip,jieguo):????jieguo=''????mingling?=?'ping?'?+?ip?+?'?-n?1'??#?形成ping命令????#?print(mingling)????ping?=?os.popen(mingling).read()??#?執行1次ping命令????#print(ping)????if?re.compile(r'來自..+',?re.M).findall(ping):??#?判斷是否通????????jieguo?=?'通'????else:????????jieguo?=?'不通'????return?jieguodef?sendmail(ip):????def?_format_addr(s):????????name,?addr?=?parseaddr(s)????????#print(name,?addr)????????return?formataddr((Header(name,?'utf-8').encode(),?addr))????#?Email地址和口令????from_addr?=?'*******@126.com'????password?=?'*******'????#?收件人地址????to_addr?=?'*******@126.com'????#?SMTP服務器地址????smtp_server?=?'smtp.126.com'????#?參數1.郵件正文??參數2MIME的subtype,plain表示純文本,最終的MIME就是text/plain,????#?最后一定要用utf-8編碼保證多語言的兼容性????#?如果發送HTML郵件?把HTML字符串傳進去?把plain變為html????msg?=?MIMEText('IP地址為'+str(ip),?'plain',?'utf-8')????#?注意不能簡單地傳入name?<[email protected]>,因為如果包含中文,需要通過Header對象進行編碼。????msg['From']?=?_format_addr('管理員<%s>'?%?from_addr)????#?msg['To']接收的是字符串而不是list,如果有多個郵件地址,用,分隔即可。????#?你看到的收件人的名字很可能不是我們傳入的管理員,因為很多郵件服務商在顯示郵件時,????#?會把收件人名字自動替換為用戶注冊的名字,但是其他收件人名字的顯示不受影響。????msg['To']?=?_format_addr('管理員<%s>'?%?to_addr)????msg['Subject']?=?Header('巡檢結果',?'utf-8').encode()????#?SMTP協議默認端口是25????server?=?smtplib.SMTP(smtp_server,?25)????#?打印出和SMTP服務器交互的所有信息。????#?SMTP協議就是簡單的文本命令和響應。????#?server.set_debuglevel(1)????#?用來登錄SMTP服務器????server.login(from_addr,?password)????#?發郵件,可以發給多個人,所以是一個list,郵件正文是一個str,as_string()把MIMEText對象變成str????server.sendmail(from_addr,?[to_addr],?msg.as_string())????server.quit()????print('郵件發送成功')def?task():????b=0????while?True:????????b?+=1????????time.sleep(300)????????now?=?datetime.datetime.now()????????ts?=?now.strftime('%Y-%m-%d?%H:%M:%S')????????print(ts,'開始測試','第%d次。'%(b))????????pathip?=?open('doip.txt','r')#以中讀方式打開目標文件????????ipline?=?pathip.readlines()#讀取文件中所有內容到列表ipline中????????#print(ipline)????????for?i?in?range(len(ipline)):#循環次數為IP地址個數????????????ip?=?ipline[i].split()#賦值列表文件????????????ip?=?str(ip)#轉換成字符串????????????#print(ip)????????????ip?=?ip[2:-2]#截取字符串????????????#print(ip,type(ip))????????????jieguo=''????????????jieguo=ceshi01(ip,jieguo)#接收返回結果????????????ipline[i]?=?ip?+?jieguo????????#print(ip,jieguo)????????#if?jieguo=='不通':????????#????sendmail(ip,jieguo)?????????#???print('郵件發送成功')????????print(ipline)????????#?sendmail(ipline)????????a=[]????????for?j?in?range(len(ipline)):????????????if?ipline[j].find('不')>0:????????????????a.append(ipline[j])????????if?a?!=?[]:????????????sendmail(a)????????now?=?datetime.datetime.now()????????ts?=?now.strftime('%Y-%m-%d?%H:%M:%S')????????print(ts,'結束測試','第%d次。'%(b))????????pathip.close()task()


腳本缺點:1、沒有實現交互式IP地址填寫功能,讀取不到文件也不會提示報錯。



推薦站點

  • 騰訊騰訊

    騰訊網(www.QQ.com)是中國瀏覽量最大的中文門戶網站,是騰訊公司推出的集新聞信息、互動社區、娛樂產品和基礎服務為一體的大型綜合門戶網站。騰訊網服務于全球華人用戶,致力成為最具傳播力和互動性,權威、主流、時尚的互聯網媒體平臺。通過強大的實時新聞和全面深入的信息資訊服務,為中國數以億計的互聯網用戶提供富有創意的網上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐網是全球最大的中文門戶網站,為用戶提供24小時不間斷的最新資訊,及搜索、郵件等網絡服務。內容包括全球熱點事件、突發新聞、時事評論、熱播影視劇、體育賽事、行業動態、生活服務信息,以及論壇、博客、微博、我的搜狐等互動空間。

    www.sohu.com
  • 網易網易

    網易是中國領先的互聯網技術公司,為用戶提供免費郵箱、游戲、搜索引擎服務,開設新聞、娛樂、體育等30多個內容頻道,及博客、視頻、論壇等互動交流,網聚人的力量。

    www.163.com
  • 新浪新浪

    新浪網為全球用戶24小時提供全面及時的中文資訊,內容覆蓋國內外突發新聞事件、體壇賽事、娛樂時尚、產業資訊、實用信息等,設有新聞、體育、娛樂、財經、科技、房產、汽車等30多個內容頻道,同時開設博客、視頻、論壇等自由互動交流空間。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com
?
3a开奖号码查询