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实现DES加密解密方法实例详解
Jun 30 Python
python django 实现验证码的功能实例代码
May 18 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
用python写扫雷游戏实例代码分享
May 27 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
python怎么提高计算速度
Jun 11 Python
详解torch.Tensor的4种乘法
Sep 03 Python
Django如何实现防止XSS攻击
Oct 13 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
用js重建星际争霸
2006/12/22 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python管理Windows服务小脚本
2018/03/12 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Viking比利时:购买办公用品
2019/10/30 全球购物
新娘父亲婚礼致辞
2014/01/16 职场文书
早读迟到检讨书
2014/01/24 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
图书借阅制度范本
2015/08/06 职场文书
求职自我评价参考范文
2019/05/16 职场文书
创业计划书之美容店
2019/09/16 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL