python实现监控某个服务 服务崩溃即发送邮件报告


Posted in Python onJune 21, 2018

前言:最近我们的升级服务器有点不太稳定,经常崩溃掉。然后客户连接不上,跟我们反馈才知道。所以写这个脚本的目的就是为了比客户提前知道升级服务的运行状况,一旦崩溃掉,就能第一时间登录上去,开启服务,避免客户投诉。

目标:Python实现监控某个服务,服务崩溃发送邮件报告。

原理:服务对应着端口,服务关闭的时候端口也会关闭。所以可以简化为监控某个端口,端口关闭发送邮件报告

方法:需要用到简单邮件服务器和端口探测的方法

废话不多说直接上代码:

#-*- encoding:utf-8 -*- 
#!/usr/bin/env python 
# name IsOpen.py 
import os 
import socket 
import time 
import smtplib  
from email.mime.text import MIMEText 
 
mailto_list=["872766492@qq.com"]  
mail_host="smtp.qq.com" #设置服务器 
mail_user="1124794084"  #用户名 
mail_pass="密码"  #口令  
mail_postfix="qq.com" #发件箱的后缀 
  
def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 
  me="升级服务器报告"+"<"+mail_user+"@"+mail_postfix+">"  #这里的hello可以任意设置,收到信后,将按照设置显示 
  msg = MIMEText(content,_subtype='html',_charset='gb2312')  #创建一个实例,这里设置为html格式邮件 
  msg['Subject'] = sub  #设置主题 
  msg['From'] = me  
  msg['To'] = ";".join(to_list)  
  try:  
    s = smtplib.SMTP()  
    s.connect(mail_host) #连接smtp服务器 
    s.login(mail_user,mail_pass) #登陆服务器 
    s.sendmail(me, to_list, msg.as_string()) #发送邮件 
    s.close()  
    return True  
  except Exception, e:  
    print str(e)  
    return False 
 
 
def IsOpen(ip,port,flag): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  try: 
    s.connect((ip,int(port))) 
    s.shutdown(2) 
    print '%d is open' % port 
    return True 
  except: 
    print '%d is down' % port  
    return False 
   
if __name__ == '__main__': 
  while(1>0): 
    flag=1 
    IsOpen('127.0.0.1',9906) 
    time.sleep(60) 
    flag=IsOpen('127.0.0.1',9906) 
    print flag 
    if flag==False: 
      send_mail(mailto_list,"XX升级服务器监测异常","error") 
      time.sleep(1800) 
 
#设置一分钟监测一次,如果发现端口9906消失则发送邮件报告,设置延迟为半小时,避免一直重复发送邮件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单文件操作python 修改文件指定行的方法
May 15 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Python使用sqlite3模块内置数据库
May 07 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
python实现马丁策略的实例详解
Jan 15 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 Python
python实现简易内存监控
Jun 21 #Python
Python实现的微信好友数据分析功能示例
Jun 21 #Python
python skimage 连通性区域检测方法
Jun 21 #Python
python3实现windows下同名进程监控
Jun 21 #Python
python检测主机的连通性并记录到文件的实例
Jun 21 #Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 #Python
python实现自动发送报警监控邮件
Jun 21 #Python
You might like
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
探讨php中header的用法详解
2013/06/07 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
javascript eval和JSON之间的联系
2009/12/31 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
javascript工具库代码
2012/03/29 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
英语师范专业毕业生自荐信
2013/09/21 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
大学生支教感言
2015/08/01 职场文书