新浦京81707con > 首页 > Linux自动发邮件配置及邮件发送脚本,含短信报警

原标题:Linux自动发邮件配置及邮件发送脚本,含短信报警

浏览次数:177 时间:2019-07-24

花了1天的小时写了二个检查实验某ip是或不是互联网通畅的剧本,只检查评定互连网是还是不是通畅的法力很轻便完成,但加了一部分限量作用却倒霉完成。

供给:使用Haproxy对两台Nginx做负载均衡,何况两台Haproxy之间做keepalived,Nginx代理后端tomcat

Ubuntu Linux自动发邮件配置及邮件发送脚本

复制代码 代码如下:

图片 1

 

#!/bin/bash
####################################################################################
#本脚本放于异机,使用定时职分检验192.168.10.231是还是不是网络通畅,纵然打断则发短信告警 
#为严防一再收到短信,对出殡和埋葬短信做了如下限制:                                     
#比较大时内只发前三条告警短信,也正是一旦网络直接不通,则每刻钟内只发前三条短信。   
#本脚本只好检测一个ip是或不是网络断开,可在始发部分加个循环,检查实验多少个ip               
####################################################################################
#初步化意况变量
source /root/.bash_profile
#邮件发送列表
mail_list='135xxxxxxxx@139.com,zhangwz@xx.net'
#ping三遍检验的ip
ping=`ping -c 3 192.168.1.69|awk 'NR==7 {print $4}'`
#假如一遍均没ping通,则做以下操作
if [ $ping -eq 0 ]
then
  #自己斟酌mailinfo文件是或不是留存,不设有则树立
  if [ ! -e ./mailinfo ]
  then
  touch ./mailinfo
  fi
  #收获当前主机时间,用于邮件正文的年华显示
  now_time=`date`
  #检查./mailinfo的行数是或不是为空,假若为空则直接发送邮件
  row_num=`wc -l ./mailinfo | cut -c 1`
  if [ $row_num -eq 0 ]
    then
    echo "发邮件"
    echo -e "1.69网络已断开,请检查 nn 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
    #立异最终一回发送时间
    date %Y%m%d-%H%M > ./mailinfo
    echo 1 >> ./mailinfo
  #万一mailinfo内容不为空,则剖断(领后天子减1时辰)是还是不是超过上次发送时间,假设是则发邮件
  else
    #收获上次发邮件的日期和时间
    last_date=`head -1 ./mailinfo | cut -c 1-8`
    last_time=`head -1 ./mailinfo | cut -c 10-13`
    #获得1小时前的日期和岁月
    current_date=`date %Y%m%d`
    current_time=`date %H%M`
    #计量当前岁月和上次时间距离多长时间,加10#是为着制止0开端的字符被当成8进制计算
    let time_diff=10#$current_time-10#$last_time
    #获取发送次数
    send_times=`tail -1 ./mailinfo`
      #以下二种景况发邮件:
      #当后日期>上次日期,能够发,然后发送计数send_times置为1
      if [ "$current_date" -gt "$last_date" ]
        then
        echo "发邮件"
        echo -e "1.69网络已断开,请检查 nn 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
        #立异最终一回发送时间
        date %Y%m%d-%H%M > ./mailinfo
        echo 1 >> ./mailinfo
      fi
      #当下日子等于上次日期 and 此番时间超出上次时间1小时外,能够发,然后发送计数send_times置为1
      if [ "$current_date" -eq "$last_date" -a $time_diff -ge 100 ]
        then
        echo "发邮件"
        echo -e "1.69互连网已断开,请检查 nn 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
        #更新最终三回发送时间
        date %Y%m%d-%H%M > ./mailinfo
        echo 1 >> ./mailinfo
      fi
      #脚下日期等于上次日期 and 发送计数send_times置为1,能够发,然后发送次数加1
      if [ "$current_date" -eq "$last_date" -a $send_times -eq 1 ]
        then
        echo "发邮件"
        echo -e "1.69网络已断开,请检查 nn 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
        #更新最后一次发送时间
        date %Y%m%d-%H%M > ./mailinfo
        echo 2 >> ./mailinfo
      fi
      #现阶段日期等于上次日期 and 发送计数send_times置为2,能够发,然后发送次数加1
      if [ "$current_date" -eq "$last_date" -a $send_times -eq 2 ]
        then
        echo "发邮件"
        echo -e "1.69网络已断开,请检查 nn 告警时间:$now_time" | mutt -s "1.69告警" $mail_list
        #更新最终一遍发送时间
        date %Y%m%d-%H%M > ./mailinfo
        echo 3 >> ./mailinfo
      fi
  fi
fi

测量检验境况:Ubuntu 11.10

Haproxy(keepalived)主:172.16.10.102

 

Haproxy(keepalived)备:172.16.10.142

  1. 安装mutt及msmtp软件

keepalived vip:172.16.10.188

 

Nginx1:172.16.10.162

[plain] 

Nginx2:172.16.10.167

sudo apt-get install mutt  

设置Haproxy并安装日志以及Nginx配置这里就不说了

sudo apt-get install msmtp  

配备Haproxy(两台一样)

 

# vim /etc/haproxy/haproxy.cfg

  1. 编排配置文件vi ~/.muttrc

global

[plain] 

log         127.0.0.1 local2

set sendmail="/usr/bin/msmtp"  

chroot      /var/lib/haproxy

set use_from=yes  

pidfile     /var/run/haproxy.pid

set realname="Guobao Jiang"  

maxconn     4000

set [email protected]  

user        haproxy

set envelope_from=yes  

group       haproxy

 

daemon

3.编写制定配置文件vi ~/.msmtprc  (账号和密码相应更换,最佳把该文件属性改为:

stats socket/var/lib/haproxy/stats

[plain] 

defaults

chmod 700 ~/.msmtprc  

mode                    tcp

 

log                     global

别的人不能够改改和查阅)

option                  tcplog

[plain] 

option                  dontlognull

account default  

option http-server-close

host smtp.163.com  

option forwardfor       except 127.0.0.0/8

from [email protected]  

option                  redispatch

auth plain  

retries                 3

user loveaborn  

timeout http-request    10s

password ####  

timeout queue           1m

logfile ~/.msmtp.log  

timeout connect         10s

 

timeout client          100m

4.编纂自动发送邮件脚本,如下:

timeout http-keep-alive 10s

[plain] 

timeout check           10s

#!/bin/bash  

maxconn                 3000

######################################################################################  

listen nginx-http

# this shell script is used to send mail automatically  

bind 0.0.0.0:80

# the root structure is  

mode tcp

#      .  

balance source

#      ./autosend.sh        -- this shell script  

server s1 172.16.10.167:80check

#      ./attach/            -- this folder stored mail's all attachment.  

server s2 172.16.10.162:80check

#      ./bak/               -- for backup  

listen nginx-https

#      ./log/               -- send & unsend log files  

bind 0.0.0.0:443

#      ./mail/              -- mail text content, default file name './mail/mail.md'  

mode tcp

#      ./readme.md          -- readme file (not mandatory)  

balance source

# version: v0.1 @Aug. 4, 2013, by Guobao Jiang   

server s1 172.16.10.167:443check

######################################################################################  

server s2 172.16.10.162:443check

  

安装keepalived

dateInfo="$(date %Y-%m-%d-%H-%M-%S)"  

# yum install keepalived -y

attachName="attach_$dateInfo.tar.gz";  

配置keepalived主

contentFile="./mail/mail.md"  

# vim /etc/keepalived/keepalived.conf

toName="[email protected]"  

! Configuration File for keepalived

ccName="[email protected]"  

global_defs {

if [ -f ./mail/mail.md ]; then  

interval 2

        if [ ! -f ./log/send.log ];then  

本文由新浦京81707con发布于首页,转载请注明出处:Linux自动发邮件配置及邮件发送脚本,含短信报警

关键词: 新浦京81707con 运维日记

上一篇:FTP服务器配置,启用windows默认的防火墙需要注意

下一篇:没有了