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聚类算法之DBSACN实例分析
Nov 20 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
Python闭包和装饰器用法实例详解
May 22 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
django的autoreload机制实现
Jun 03 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 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
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
JSON格式化输出
2014/11/10 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
详解React 条件渲染
2020/07/08 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
跟老齐学Python之编写类之三子类
2014/10/11 Python
Python中的异常处理学习笔记
2015/01/28 Python
Python绘制七段数码管实例代码
2017/12/20 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
升职自荐书范文
2013/11/28 职场文书
男方父母证婚词
2014/01/12 职场文书
手工社团活动方案
2014/02/17 职场文书
应届生自荐信
2014/06/30 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
廉洁自律证明
2015/06/24 职场文书
人事任命书范本
2015/09/21 职场文书
详解JS数组方法
2021/11/20 Javascript