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 Web开发框架Django
Jun 30 Python
Python 绘图和可视化详细介绍
Feb 11 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
基于Python列表解析(列表推导式)
Jun 23 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
在pycharm中显示python画的图方法
Aug 31 Python
python程序需要编译吗
Jun 19 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Django Form常用功能及代码示例
Oct 13 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 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获取网卡地址的代码
2008/04/09 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
PHP 代码规范小结
2012/03/08 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
Nginx实现反向代理
2017/09/20 Servers
filemanage功能中用到的lib.js
2007/04/08 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
详解vue中computed 和 watch的异同
2017/06/30 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
利用Python获取操作系统信息实例
2016/09/02 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
师德个人剖析材料
2014/02/02 职场文书
党委领导班子整改方案
2014/09/30 职场文书
教代会开幕词
2015/01/28 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python