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 相关文章推荐
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
python抖音表白程序源代码
Apr 07 Python
pytorch 共享参数的示例
Aug 17 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
python线程池如何使用
May 28 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
Python request post上传文件常见要点
Nov 20 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
Python函数对象与闭包函数
Apr 13 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 信息采集程序代码
2009/03/17 PHP
php GUID生成函数和类
2014/03/10 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
js实现右键菜单功能
2016/11/28 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
python合并多个excel文件的示例
2020/09/23 Python
Django框架请求生命周期实现原理
2020/11/13 Python
详解python的变量缓存机制
2021/01/24 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
企业元宵节主持词
2014/03/25 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
教师节感谢信
2015/01/22 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
docker 制作mysql镜像并自动安装
2022/05/20 Servers