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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
安装dbus-python的简要教程
May 05 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
Python字符串拼接的几种方法整理
Aug 02 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
Python之reload流程实例代码解析
Jan 29 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python异步编程 使用yield from过程解析
Sep 25 Python
如何在python中判断变量的类型
Jul 29 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 中检查或过滤IP地址的实现代码
2011/11/27 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
详解如何较好的使用js
2016/12/16 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
Python生成器(Generator)详解
2015/04/13 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
python中使用序列的方法
2015/08/03 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
转让协议书范本
2014/09/13 职场文书
端午节活动总结报告
2015/02/11 职场文书
大学生自荐书范文
2015/03/05 职场文书
党员个人承诺书
2015/04/27 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server