网络编程
位置:首页>> 网络编程>> Python编程>> python 检测nginx服务邮件报警的脚本

python 检测nginx服务邮件报警的脚本

作者:lixinliang  发布时间:2023-08-04 17:34:10 

标签:python,检测,nginx,邮件,报警

$ cat checkserver.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import os
import socket
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
mail_host = "smtp.exmail.qq.com"
mail_user = "yunwei-monitor@111.com"
mail_pass = "yNE8dcsx"
 
sender = 'yunwei-monitor@111.com'
receivers = ['lixinliang@111.com']
 
def Checkserverdown():
    #三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
    message = MIMEText('192.168.71.200 nginx is down','plain','utf-8')
    message['From'] = Header("Nginx is down ", 'utf-8') # 发送者
    message['To'] = Header("李鑫亮", 'utf-8')   # 接收者
    subject = '192.168.71.200 nginx is down'
    message['Subject'] = Header(subject,'utf-8')
    try:
        smtpobj = smtplib.SMTP()
        smtpobj.connect(mail_host,25)
        smtpobj.login(mail_user,mail_pass)
        smtpobj.sendmail(sender,receivers,message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")
 
def Checkserverstilldown():
    #三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
    message = MIMEText('192.168.71.200 nginx is still down','plain','utf-8')
    message['From'] = Header("Nginx is still down ", 'utf-8') # 发送者
    message['To'] = Header("李鑫亮", 'utf-8')   # 接收者
    subject = '192.168.71.200 nginx is still down'
    message['Subject'] = Header(subject,'utf-8')
    try:
        smtpobj = smtplib.SMTP()
        smtpobj.connect(mail_host,25)
        smtpobj.login(mail_user,mail_pass)
        smtpobj.sendmail(sender,receivers,message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")
 
def Checkserverup():
    #三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
    message = MIMEText('192.168.71.200 nginx is  up','plain','utf-8')
    message['From'] = Header("Nginx is up ", 'utf-8') # 发送者
    message['To'] = Header("李鑫亮", 'utf-8')   # 接收者
    subject = '192.168.71.200 nginx is up'
    message['Subject'] = Header(subject,'utf-8')
    try:
        smtpobj = smtplib.SMTP()
        smtpobj.connect(mail_host,25)
        smtpobj.login(mail_user,mail_pass)
        smtpobj.sendmail(sender,receivers,message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")
 
 
# 判断 nginx 进程输出内容来确定是否要进行进程启动
file = "/tmp/nginx.txt"
os.system("""ps -ef  |grep nginx  |grep -Ev "grep|vim" > %s""" % file)
 
print (os.path.getsize(file))
if os.path.getsize(file) == 0:
        Checkserverdown()
        os.system("/usr/sbin/nginx")
        print (os.path.getsize(file))
        os.system("""ps -ef  |grep nginx  |grep -Ev "grep|vim" > %s""" % file)
        if os.path.getsize(file) == 0:
                Checkserverstilldown()
                os.system("/usr/sbin/nginx")
        else:
                Checkserverup()

来源:https://www.cnblogs.com/lixinliang/p/13825539.html

0
投稿

猜你喜欢

  • 本月第一天日期SELECT FirstDayOfCurrentMonth = dateadd(mm,datediff(mm,0,getdat
  • 一:命名空间里的namespace关键字和__NAMESPACE__常量的运用PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAM
  • 第一步:安装SQL200,并启动SQL2000。到网上下载SQL2000,并安装完毕。( * 作系统是XP,装的是SQL个人版),按照下面所示
  • asp使用WScript.Shell获取电脑的网络配置信息Option Explicit Dim WSHShe
  • 假设有一名为"addnewuser"的存储过程,其内容如下:Create PROCEDURE dbo
  • 请问,如何在ACCESS数据库和SQL SERVER数据库中查询?       
  • 平行坐标图,一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以
  • 图片非常重要,它们可以让你的页面更好看,更引人注目。但是,高质量和漂亮的图片常常会很大,它们会让页面加载变慢并消耗更多带宽。所以我们,这些设
  • 黑体是视觉设计师常用的一款字体,特别是针对广告的 Banner 等。根据 * 的相关介绍,有关黑体的定义可以认为:黑體与白体
  • 一、判断类型的函数is_bool()    //判断是否为布尔型is_float()   //判断是否为浮点型
  • 左右布局,图片的宽度不固定。正好前几天测试闭合浮动元素时发现了overflow的特殊现象,倒是正好可以用在这里。测试通过:ie6/7&nbs
  • 我听说在ASP里,可以不用DSN来连接EXCEL,请问如何实现?确实ASP提供了替代DSN的其他方法,甚至可以在运行时建立连接看看下面的范例
  • 优秀的Stoyan Stefanov在他的新书中(《Javascript Patterns》)介绍了很多编写高质量代码的技巧,比如避免使用全
  • 1.安装时选择的自动安装,忘了用户名和密码导致现在试了几个Oracle默认用户名密码後(表格中附带默认用户名及密码),都提示无效的用户名、密
  • 今天在这里,不以设计师的身份,而从一个普通用户的角度和各位聊聊设计中蕴含的那份情感,关于情感再产品设计中的意义,聊聊设计中的那份源于“心”的
  • 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。摘要:
  • 1.新建四个层,放入相应图片,模特层的z-index值设为0。2.把第一个层移到模特身上,找出衣服刚好穿上时层的top和left值,记下来,
  • 最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等
  • rs.open sql,conn,A,B A: ADOPenforwardonly (=0) 只读,且当前数据记录只能向下移动。 ADOPe
  • Expires 属性 Expires 属性指定了在浏览器上缓冲存储的页距过期还有多少时间。如果用户在某个页过期之前又回到此页,就会显示缓冲区
手机版 网络编程 asp之家 www.aspxhome.com