Python监控主机是否存活并以邮件报警


Posted in Python onSeptember 22, 2015

利用Python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟、丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理。

#!/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服务器 
mail_to = "baojingtongzhi@163.com" #邮件收件人 
mail_from = "monitor@163.com"   #邮件发件人 
mail_pass = "123456"      #邮件发件人邮箱密码 
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()        #创建一个SMTP()对象 
      s.connect(mail_host, "25")      #通过connect方法连接smtp主机 
      s.starttls()          #启动安全传输模式 
      s.login(mail_from,mail_pass)     #邮箱账户登录认证 
      s.sendmail(mail_from, mail_to, msg.as_string()) #邮件发送 
      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代表超时时间 
    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)
#直接运行
# python ping.py 
Ping 192.168.18.10 successful.
Ping 192.168.18.11 successful.
Ping 192.168.18.12 successful.
Sleep 10s...

以上就是本文的全部内容,希望对大家学习Python监控主机是否存活并以邮件报警有所帮助。

Python 相关文章推荐
Python获取任意xml节点值的方法
May 05 Python
Python易忽视知识点小结
May 25 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
使用TensorFlow实现SVM
Sep 06 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
python开启debug模式的方法
Jun 27 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
django修改models重建数据库的操作
Mar 31 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
Python二分查找详解
Sep 13 #Python
基python实现多线程网页爬虫
Sep 06 #Python
python杀死一个线程的方法
Sep 06 #Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 #Python
Python实现身份证号码解析
Sep 01 #Python
实例Python处理XML文件的方法
Aug 31 #Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 #Python
You might like
php字符串函数学习之strstr()
2015/03/27 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
高一家长会邀请函
2014/01/12 职场文书
音乐器材管理制度
2014/01/31 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
陈欧的广告词
2014/03/18 职场文书
学生上课说话检讨书
2014/10/25 职场文书
投标承诺函范文
2015/01/21 职场文书
导游欢迎词范文
2015/01/23 职场文书
2015年度党员个人总结
2015/02/14 职场文书
村官2015年度工作总结
2015/10/14 职场文书
话题作文之关于呼唤
2019/11/29 职场文书