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基于select实现的socket服务器
Apr 13 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python实现复制大量文件功能
Aug 31 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
python numpy--数组的组合和分割实例
Feb 24 Python
Python request操作步骤及代码实例
Apr 13 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 Python
python 实现图片批量压缩的示例
Dec 18 Python
python中 .npy文件的读写操作实例
Apr 14 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实现在服务器上创建目录的方法
2015/03/16 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
vue 动态绑定背景图片的方法
2018/08/10 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
丑小鸭教学反思
2014/02/03 职场文书
总裁助理岗位职责
2014/02/17 职场文书
《燕子》教学反思
2014/02/18 职场文书
寄语是什么意思
2014/04/10 职场文书
感恩寄语大全
2014/04/11 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
环保宣传语大全
2015/07/13 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Golang中异常处理机制详解
2021/06/08 Golang
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android