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创建线程示例
May 06 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Android分包MultiDex策略详解
Oct 30 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Python 定义只读属性的实现方式
Mar 05 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python用分数表示矩阵的方法实例
Jan 11 Python
浅谈Python类的单继承相关知识
May 12 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
django foreignkey(外键)的实现
2019/07/29 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
办公室岗位职责
2014/02/12 职场文书
工程技术员岗位职责
2014/03/02 职场文书
企业业务员岗位职责
2014/03/14 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL