CC00021.LinuxShell——|Linux&Shell&流程控制.V02|——|双分支if条件判断|备份MySQL|监控Apache脚本|

一、双分支if条件语句
### --- 双分支if条件语句语法

if [ 条件判断式 ]
    then
        条件成立时,执行的程序
    else
        条件不成立时,执行的另一个程序
fi
二、实例一:双分支if条件语句实验
### --- 实例一:双分支if条件语句实验
### --- 备份mysql数据库

[root@localhost ~]# vi sh/bakmysql.sh
#!/bin/bash
#备份 mysql 数据库。
# Author: shenchao (E-mail: shenchao@atguigu.com)

ntpdate asia.pool.ntp.org &>/dev/null
#同步系统时间
date=$(date +%y%m%d)
#把当前系统时间按照“年月日”格式赋予变量 date
size=$(du -sh /var/lib/mysql)
#统计 mysql 数据库的大小,并把大小赋予 size 变量

if [ -d /tmp/dbbak ]
#判断备份目录是否存在,是否为目录
    then
        #如果判断为真,执行以下脚本
        echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
        #把当前日期写入临时文件
        echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
        #把数据库大小写入临时文件
        cd /tmp/dbbak
        #进入备份目录
        tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
        #打包压缩数据库与临时文件,把所有输出丢入垃圾箱(不想看到任何输出)
        rm -rf /tmp/dbbak/dbinfo.txt
        #删除临时文件
    else
        mkdir /tmp/dbbak
        #如果判断为假,则建立备份目录
        echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
        echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
        #把日期和数据库大小保存如临时文件
        cd /tmp/dbbak
        tar -zcf mysql-lib-$date.tar.gz dbinfo.txt /var/lib/mysql &>/dev/null
        #压缩备份数据库与临时文件
        rm -rf /tmp/dbbak/dbinfo.txt
        #删除临时文件
fi
三、实例二:再举个例子,我们拿 apache 服务来举例:
### --- 再举个例子

~~~     在工作当中,服务器上的服务经常会宕机。如果我们对服务器监控不好,
~~~     就会造成服务器中服务宕机了,而管理员却不知道的情况,
~~~     这时我们可以写一个脚本来监听本机的服务,如果服务停止或宕机了,可以自动重启这些服务。
~~~     我们拿 apache 服务来举例:
### --- 判断 apache 是否启动,如果没有启动则自动启动

[root@localhost ~]# vi sh/autostart.sh
#!/bin/bash
#判断 apache 是否启动,如果没有启动则自动启动
# Author: shenchao (E-mail: shenchao@atguigu.com)

port=$(nmap -sT 192.168.4.210 | grep tcp | grep http | awk '{print $2}')
#使用 nmap 命令扫描服务器,并截取 apache 服务的状态,赋予变量 port
if [ "$port" == "open" ]
#如果变量 port 的值是“open”
    then
        echo “$(date) httpd is ok!” >> /tmp/autostart-acc.log
        #则证明 apache 正常启动,在正常日志中写入一句话即可
    else
        /etc/rc.d/init.d/httpd start &>/dev/null
        #否则证明 apache 没有启动,自动启动 apache
        echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
        #并在错误日志中记录自动启动 apche 的时间
fi
四、以我们使用 nmap 端口扫描命令,nmap 命令格式如下:
### --- 以我们使用 nmap 端口扫描命令,nmap 命令格式如下:
~~~     # 选项:
~~~     -s
~~~     -T
~~~     # 扫描
~~~     扫描所有开启的 TCP 端口

[root@localhost ~]# nmap -sT 域名或 IP
五、这条命令的执行结果如下:
### --- 这条命令的执行结果如下:
~~~     可以看到这台服务器开启了如下的服务

[root@localhost ~]# nmap -sT 192.168.4.210
Starting Nmap 5.51 ( http://nmap.org ) at 2018-11-25 15:11 CST
Nmap scan report for 192.168.4.210
Host is up (0.0010s latency).
Not shown: 994 closed ports
PORT  STATE SERVICE
22/tcp open ssh
 
80/tcp open http                <——apache 的状态是 open
 
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql

Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
六、知道了 nmap 命令的用法,来看看脚本中命令的结果:
### --- 知道了 nmap 命令的用法,我们在脚本中使用的命令就是为了截取 http 的状态,
~~~     只要状态是“open”就证明 apache 启动正常,否则证明 apache 启动错误。
~~~     来看看脚本中命令的结果:

[root@localhost ~]# nmap -sT 192.168.4.210 | grep tcp | grep http | awk '{print $2}'
#扫描指定计算机,提取包含 tcp 的行,在提取包含 httpd 的行,截取第二列
open
#把截取的值赋予变量 port
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值