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访问纯真IP数据库的代码
May 19 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python 的内置字符串方法小结
Mar 15 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
详解Python核心对象类型字符串
Feb 11 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python批量图片处理简单示例
Aug 06 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
python实现图片插入文字
Nov 26 Python
python获取百度热榜链接的实例方法
Aug 25 Python
python字符串拼接+和join的区别详解
Dec 03 Python
讲解Python实例练习逆序输出字符串
May 06 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
模拟flock实现文件锁定
2007/02/14 PHP
PHP编实现程动态图像的创建代码
2008/09/28 PHP
php学习笔记之面向对象
2014/11/08 PHP
php编程每天必学之验证码
2016/03/03 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
python pip如何手动安装二进制包
2020/09/30 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
介绍一下Java中的Class类
2015/04/10 面试题
C语言开发工程师测试题
2016/12/20 面试题
杭州-DOTNET笔试题集
2013/09/25 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
小学毕业典礼主持词
2014/03/27 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
教师年终个人总结
2015/02/11 职场文书
写给导师的自荐信
2015/03/06 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL
Java Redisson多策略注解限流
2022/09/23 Java/Android