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中 ? : 三元表达式的使用介绍
Oct 09 Python
Python中的集合类型知识讲解
Aug 19 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
对python中的高效迭代器函数详解
Oct 18 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
Django认证系统user对象实现过程解析
Mar 02 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
keras中的backend.clip用法
May 22 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
Python自动发送和收取邮件的方法
Aug 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
php重定向的三种方法分享
2012/02/22 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
js格式化时间的方法
2015/12/18 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python3 replace()函数使用方法
2018/03/19 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
用python批量下载apk
2020/12/29 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
2015年扫黄打非工作总结
2015/05/13 职场文书
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python