详解Shell编程之if语句实战(小结)

2019-09-23 08:58:39王旭

那么就接下来就剩下邮件告警了,我们可以使用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宕机后就会执行启动操作是以下语句实现的如下: