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实现图片尺寸缩放脚本
Mar 10 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
Python实现的文轩网爬虫完整示例
May 16 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
Python any()函数的使用方法
Oct 28 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
Python面向对象之内置函数相关知识总结
Jun 24 Python
python如何将mat文件转为png
Jul 15 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python实现读取并保存文件的类
2017/05/11 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python延时操作实现方法示例
2018/08/14 Python
python数字类型math库原理解析
2020/03/02 Python
python 实用工具状态机transitions
2020/11/21 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
Python绘制数码晶体管日期
2021/02/19 Python
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
小学班主任评语大全
2014/04/23 职场文书
英语求职信范文
2014/05/23 职场文书
投诉书格式范本
2015/07/02 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
自考生自我评价
2019/06/21 职场文书
浅析JavaScript中的变量提升
2022/06/01 Javascript