利用Python寫了簡(jiǎn)單測(cè)試主機(jī)是否存活腳本,此腳本不適于線上使用,因?yàn)榫W(wǎng)絡(luò)延遲、丟包現(xiàn)象會(huì)造成誤報(bào)郵件,那么后續(xù)會(huì)更新判斷三次ping不通后再發(fā)報(bào)警郵件,并啟用多線程處理。
#!/usr/bin/env python
# coding:UTF-8
import time
import pexpect
import smtplib
from email.mime.text import MIMEText
mail_host = "smtp.163.com" #定義smtp服務(wù)器
mail_to = "baojingtongzhi@163.com" #郵件收件人
mail_from = "monitor@163.com" #郵件發(fā)件人
mail_pass = "123456" #郵件發(fā)件人郵箱密碼
while True:
def Mail(error_ip):
date = time.strftime('%Y-%m-%d %H:%M:%S')
msg = MIMEText("%s Ping %s failed from 255.252." % (date, error_ip))
msg['Subject'] = "Ping %s failed." % error_ip #定義郵件主題
msg['From'] = mail_from
msg['To'] = mail_to
try:
s = smtplib.SMTP() #創(chuàng)建一個(gè)SMTP()對(duì)象
s.connect(mail_host, "25") #通過connect方法連接smtp主機(jī)
s.starttls() #啟動(dòng)安全傳輸模式
s.login(mail_from,mail_pass) #郵箱賬戶登錄認(rèn)證
s.sendmail(mail_from, mail_to, msg.as_string()) #郵件發(fā)送
s.quit() #斷開smtp連接
except Exception, e:
print str(e)
ip_list = ['192.168.18.10',
'192.168.18.11',
'192.168.18.12']
for ip in ip_list:
ping = pexpect.spawn('ping -c 1 %s' % ip)
check = ping.expect([pexpect.TIMEOUT,"1 packets transmitted, 1 received, 0% packet loss"],2) #2代表超時(shí)時(shí)間
if check == 0:
Mail(ip)
print "Ping %s failed,Have email." % ip
if check == 1:
print "Ping %s successful." % ip
print "Sleep 10s..."
time.sleep(10)
#直接運(yùn)行
# python ping.py
Ping 192.168.18.10 successful.
Ping 192.168.18.11 successful.
Ping 192.168.18.12 successful.
Sleep 10s...
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Python監(jiān)控主機(jī)是否存活并以郵件報(bào)警有所幫助。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

