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实现文件路径和url相互转换的方法
Jul 06 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
Opencv实现抠图背景图替换功能
May 21 Python
python中的列表与元组的使用
Aug 08 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
opencv 图像轮廓的实现示例
Jul 08 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
anaconda升级sklearn版本的实现方法
Feb 22 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 Python
python在package下继续嵌套一个package
Apr 14 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
php部分常见问题总结
2008/03/27 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
php实现的mongodb操作类
2015/05/28 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python基础语法(Python基础知识点)
2016/02/28 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
生产厂长岗位职责
2014/02/21 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
学习型党组织心得体会
2014/09/12 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
暂住证证明
2015/06/19 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python