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字符串和字典
Jul 07 Python
django用户登录和注销的实现方法
Jul 16 Python
Django框架封装外部函数示例
May 28 Python
python判断链表是否有环的实例代码
Jan 31 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
python实现飞船大战
Apr 24 Python
什么是Python变量作用域
Jun 03 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Python实现中英文全文搜索的示例
Dec 04 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[02:27]刀塔重生降临
2015/10/14 DOTA
Python中对列表排序实例
2015/01/04 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
预备党员入党自我评价范文
2014/03/10 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
2014年新生军训方案
2014/05/01 职场文书
公司演讲稿开场白
2014/08/25 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
高一军训感想
2015/08/07 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL