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 中使用 GLOBAL引发的一系列问题
Oct 12 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
json跨域调用python的方法详解
Jan 11 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python实现的计算器功能示例
Apr 26 Python
python3.4实现邮件发送功能
May 28 Python
pandas删除指定行详解
Apr 04 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
利用For循环遍历Python字典的三种方法实例
Mar 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Python yield 使用浅析
2015/05/28 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python用户管理系统的实例讲解
2017/12/23 Python
python实现图书管理系统
2018/03/12 Python
python 生成图形验证码的方法示例
2018/11/11 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
django之自定义软删除Model的方法
2019/08/14 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
班组长安全生产职责
2013/12/16 职场文书
酒店个人求职信范文
2014/01/25 职场文书
捐款感谢信
2015/01/20 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫
Python读取和写入Excel数据
2022/04/20 Python