python運維----檢測主機IP ping不通則發郵件


 

 1 #!/usr/bin/env python3 
 2 #coding: utf-8
 3 
 4 #第一步:將對應的ping不通的p地址弄到noping.txt文件中
 5 
 6 import commands
 7 import os
 8 import smtplib 
 9 import email.MIMEMultipart
10 import email.MIMEText
11 import email.MIMEBase
12 import mimetypes 
13 import email.MIMEImage
1415 
16 f = open("/lianxi/aochuanfei/ip.txt","r")
17 f_noping_ip = open("/lianxi/aochuanfei/noping.txt","w")
18 
19 for ip in f.readlines():
20     # 此處必須對IP地址進行處理--將ip地址轉換為字符串,否則getstatusoutput函數里面不能傳入變量
21     os.environ['ip'] = str(ip)
22 
23     # 判斷ping 一下IP 之后是否通的並返回狀態的語句
24     (status, optput) = commands.getstatusoutput('ping -c 2 $ip')
25 
26     # 判斷返回的狀態,如果為0說明ping得通,如果不為0則將對應的IP地址寫入另外一個文件里面,然后通過右鍵發送
27     if status != 0:
28         # print status,'The ip was not ping tong is',ip
29         # 狀態為0的的直接pass
30         f_noping_ip.write(str(ip))
31     else:
32         # print status,'The ip was ping de tong is',ip
33         # 狀態不為0的全部寫入到noping.txt文件里面
34         pass
35 
36 f.close()
37 f_noping_ip.close()
38 
39 #第二步:將文件noping.txt通過郵件發送到對應郵箱
40 
41 # 此步注意首先要到163上去注冊一個郵箱帳號作為發件箱,而且要在客戶端中設置驗證
42 From = "aochuanfei@163.com" 
43 To = "158505233239@qq.com,123456@qq.com" 
44 file_name = "noping.txt"     #附件名 
45 
46 server = smtplib.SMTP("smtp.163.com") 
47 server.login("aochuanfei","aixocm123")  #僅smtp服務器需要驗證時 
48 
49 # 構造MIMEMultipart對象做為根容器 
50 main_msg = email.MIMEMultipart.MIMEMultipart() 
51 
52 # 構造MIMEText對象做為郵件顯示內容並附加到根容器 
53 text_msg = email.MIMEText.MIMEText("請注意附件是注意內容",_charset="utf-8") 
54 main_msg.attach(text_msg) 
55 
56 # 構造MIMEBase對象做為文件附件內容並附加到根容器 
57 ctype,encoding = mimetypes.guess_type(file_name) 
58 if ctype is None or encoding is not None: 
59     ctype='application/octet-stream' 
60 maintype,subtype = ctype.split('/',1) 
61 file_msg=email.MIMEImage.MIMEImage(open(file_name,'rb').read(),subtype) 
62 print ctype,encoding 
63 
64 ## 設置附件頭 
65 basename = os.path.basename(file_name) 
66 file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改郵件頭 
67 main_msg.attach(file_msg) 
68 
69 # 設置根容器屬性 
70 main_msg['From'] = From 
71 main_msg['To'] = To 
72 main_msg['Subject'] = "ping不通的IP地址請看附件" 
73 main_msg['Date'] = email.Utils.formatdate( ) 
74 
75 # 得到格式化后的完整文本 
76 fullText = main_msg.as_string( ) 
77 
78 # 用smtp發送郵件 
79 try: 
80     server.sendmail(From, To.split(','), fullText) 
81 finally: 
82     server.quit()

 

請注意附件內容


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM