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基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
Django框架模板的使用方法示例
May 25 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
python groupby 函数 as_index详解
Dec 16 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Python实现汇率转换操作
May 03 Python
序列化Python对象的方法
Aug 01 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
python爬取微博评论的实例讲解
Jan 15 Python
Django操作cookie的实现
May 26 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
如何使用PHP中的字符串函数
2006/10/09 PHP
ZF等常用php框架中存在的问题
2008/01/10 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
理解javascript封装
2016/02/23 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python进程间通信之共享内存详解
2017/10/30 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python Django 创建应用过程图示详解
2019/07/29 Python
python set集合使用方法解析
2019/11/05 Python
python之语音识别speech模块
2020/09/09 Python
python如何运行js语句
2020/09/09 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
毕业大学生自荐信
2014/06/17 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014年团委工作总结
2014/11/13 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技