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练习程序批量修改文件名
Jan 16 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
浅谈Python 对象内存占用
Jul 15 Python
浅谈python写入大量文件的问题
Nov 09 Python
pandas通过索引进行排序的示例
Nov 16 Python
Python 的AES加密与解密实现
Jul 09 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python爬虫--selenium模块
Mar 31 Python
Python利用capstone实现反汇编
Apr 06 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&&mysql)二
2006/10/09 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
scrapy爬虫实例分享
2017/12/28 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python字符串Intern机制详解
2019/07/01 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
员工自我鉴定
2013/10/09 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
学校师德师风整改方案
2014/10/28 职场文书
严以律己学习心得体会
2016/01/13 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript