那么就接下来就剩下邮件告警了,我们可以使用sendmail来实现,安装如下:
1.安装相关的依赖包
[root@shell-yankerp sh]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
2.解压并安装
[root@shell-yankerp ~]# tar zxf sendEmail-v1.56.tar.gz [root@shell-yankerp ~]# cd sendEmail-v1.56/ [root@shell-yankerp sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail
到这里我们先发个邮件试试,确保邮件可以发送
[root@shell-yankerp ~]# /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx测试" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx正在测试"

这边我已经收到了邮件报警测试的邮件了
3、接下来就可以开始写脚本了如下:
#!/bin/bash # Maintenance:<ywyankerp@163.com> # BINLOG:www.ywyankai.cn # DATE:03:31:35 CST, Sunday, 02 month, 2018, 04 # Test scripts NX=`netstat -anput | grep nginx | wc -l` if [ "$NX" -eq 0 ] then /usr/local/nginx/sbin/nginx fi if [ "$?" -ne 0 ] then /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx报警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx启动失败尽快查 看!!!" &> /dev/null fi
在这里我会一条条的解释:
NX=`netstat -anput | grep nginx | wc -l` :这就是上面测试的那条命令,如果Nginx宕机就输出0 正常运行那么就输出1 来确定Nginx运行状况赋值给了变量NX
if [ "$NX" -eq 0 ] //如果NX执行的结果为0 then //那么 /usr/local/nginx/sbin/nginx //启动nginx服务 fi
最后结束符fi
if [ "$?" -ne 0 ] then /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx报警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ****** -m "Nginx启动失败尽快查 看!!!" &> /dev/null fi
当我们启动Nginx启动失败时 我们在这里使用特殊的状态变量$? 查看上一条命令是否为0 是0就是成功。解释:如果启动Nginx失败,那么就会执行 /usr/local/bin.....就是这个邮箱报警程序 输出一条 Nginx启动失败尽快查看!!!
最后的脚本是这样的 如下:

那么接下来我们执行:
1.首先我们模拟Nginx宕机,随后运行脚本

在第一条命令我们可以看到nginx没有启动 当我们运行脚本它检测到了Nginx宕机后就会执行启动操作是以下语句实现的如下:










