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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
Python标准库之itertools库的使用方法
Sep 07 Python
python实现堆和索引堆的代码示例
Mar 19 Python
python K近邻算法的kd树实现
Sep 06 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
python函数的作用域及关键字详解
Aug 20 Python
python实现logistic分类算法代码
Feb 28 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 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面向对象编程快速入门
2006/12/14 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
php 浮点数比较方法详解
2017/05/05 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python图像处理入门(一)
2019/04/04 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Django xadmin安装及使用详解
2020/10/26 Python
怎样声明接口
2014/09/19 面试题
献爱心活动总结
2014/05/07 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
个人先进材料范文
2014/12/30 职场文书
市场督导岗位职责
2015/04/10 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL