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压缩和解压缩zip文件
Feb 14 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python递归调用实现数字累加的代码
Feb 25 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 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通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
关于Python的一些学习总结
2018/05/25 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python通过http下载文件的方法详解
2019/07/26 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python如何实现的二分查找算法
2020/05/27 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
酒店总经理助理职责
2014/02/12 职场文书
年度考核自我鉴定
2014/03/19 职场文书
公司晚会主持词
2014/03/22 职场文书
企业文化口号
2014/06/12 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android