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创建和删除目录的方法
Apr 29 Python
举例讲解如何在Python编程中进行迭代和遍历
Jan 19 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
python WindowsError的错误代码详解
Jul 23 Python
django之session与分页(实例讲解)
Nov 13 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Django 路由控制的实现
Jul 17 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
利用Python实现kNN算法的代码
Aug 16 Python
Python中logging日志库实例详解
Feb 19 Python
python 轮询执行某函数的2种方式
May 03 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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 验证码制作(网树注释思想)
2009/07/20 PHP
php实现jQuery扩展函数
2009/10/30 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
jQuery之日期选择器的深入解析
2013/06/19 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python struct.unpack
2008/09/06 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
python变量的存储原理详解
2019/07/10 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
英国电器零售商:PRC Direct
2018/06/21 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
升职自荐信
2013/11/28 职场文书
大学军训感言200字
2014/02/26 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
vue elementUI表格控制对应列
2022/04/13 Vue.js
APP界面设计技巧和注意事项
2022/04/29 杂记