20.16 20.17 shell脚本中的函数(上)(下)

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

 

2018-7-30 笔记

2018-7-30 笔记

20.18shell中的数组

 

2018-7-30 笔记

2018-7-30 笔记

20.19 告警系统需求分析

2018-7-30 笔记
20.20 告警系统主脚本

2018-7-30 笔记

2018-7-30 笔记

根据实际情况编辑脚本

20.21 告警系统配置文件

2018-7-30 笔记

主要定义开关,日志路径,用户名密码,端口等等。

配置文件名字必要更改

2018-7-30 笔记

20.22 告警系统监控项目

 

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

2018-7-30 笔记

20.23 20.24 20.25 告警系统邮件引擎(上)(中)(下)

20.26 运行告警系统

2018-7-30 笔记

 

#定义mail.sh 的第一个参数,为了区分

log=$1

#定义时间戳

t_s=`date +%s`

#定义2个小时前的时间戳

t_s2=`date -d "2 hours ago" +%s`

#如果tmp下没有log日志

if [ ! -f /tmp/$log ]

then

#创建日志并把2小时前的时间戳写入进去

    echo $t_s2 > /tmp/$log

fi

#覆盖上面的t_s2的值并截取日志最后一行时间戳作为变量

t_s2=`tail -1 /tmp/$log|awk '{print $1}'`

#写入当前时间戳

echo $t_s>>/tmp/$log

#定义V变量。计算2个比值的时间差 当前时间-2小时前的时间

v=$[$t_s-$t_s2]

#显示算出的时间

echo $v

#如果时间大于3600秒

if [ $v -gt 3600 ]

then

#调用mail.py告警 $1.2.3是主题,发送人、....

    ./mail.py  $1  $2  $3

#生成一个新日志log.txt(目的是为了计数)

    echo "0" > /tmp/$log.txt

#如果小于3600执行如下

else

#如果log.txt计数器文件不存在

    if [ ! -f /tmp/$log.txt ]

    then

#则创建并写入0

        echo "0" > /tmp/$log.txt

    fi

#查看计数器数值

    nu=`cat /tmp/$log.txt`

#nu变量基础上+1

    nu2=$[$nu+1]

#nu2+完1的数值写入到log.txt

    echo $nu2>/tmp/$log.txt

#如果数值大于10

    if [ $nu2 -gt 10 ]

    then

#告警

         ./mail.py  $1 "trouble continue 10 min $2" "$3"

#并清空计数器,重新计数

         echo "0" > /tmp/$log.txt

    fi

fi  

mail.py脚本

#!/usr/bin/env python

#-*- coding: UTF-8 -*-

import os,sys

reload(sys)

sys.setdefaultencoding('utf8')

import getopt

import smtplib

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from  subprocess import *

 

def sendqqmail(username,password,mailfrom,mailto,subject,content):

    gserver = 'smtp.qq.com'

    gport = 25

 

    try:

        msg = MIMEText(unicode(content).encode('utf-8'))

        msg['from'] = mailfrom

        msg['to'] = mailto

        msg['Reply-To'] = mailfrom

        msg['Subject'] = subject

 

        smtp = smtplib.SMTP(gserver, gport)

        smtp.set_debuglevel(0)

        smtp.ehlo()

        smtp.login(username,password)

 

        smtp.sendmail(mailfrom, mailto, msg.as_string())

        smtp.close()

    except Exception,err:

        print "Send mail failed. Error: %s" % err

 

 

def main():

    to=sys.argv[1]

    subject=sys.argv[2]

    content=sys.argv[3]

##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)

    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)

 

if __name__ == "__main__":

    main()

   

   

#####脚本使用说明######

#1. 首先定义好脚本中的邮箱账号和密码

#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

 

 

 

 

相关文章: