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实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 Python
Python 查看文件的编码格式方法
Dec 21 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Django在Model保存前记录日志实例
May 14 Python
Python使用Excel将数据写入多个sheet
May 16 Python
Python-split()函数实例用法讲解
Dec 18 Python
浅析python实现动态规划背包问题
Dec 31 Python
如何正确理解python装饰器
Jun 15 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
风格模板初级不完全修改教程
2006/10/09 PHP
php自动加载方式集合
2016/04/04 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python 自动化表单提交实例代码
2017/06/08 Python
Python numpy 常用函数总结
2017/12/07 Python
python梯度下降法的简单示例
2018/08/31 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
Python collections模块的使用方法
2020/10/09 Python
python调用win32接口进行截图的示例
2020/11/11 Python
日语专业个人的求职信
2013/12/03 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
跳高加油稿
2015/07/21 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python