shell之if判断句

条件测试操作

1、文件测试

-d
这里写图片描述
-f
这里写图片描述
-e
这里写图片描述
-r
这里写图片描述
-w 测试当前用户写 -x 测试当前用户是否有可执行权限。

2、整数值比较

-eq:等于。
-ne:不等于。
-gt:大于。
-lt:小于。
-le:小于或等于。
-ge:大于或等于。(l小、g、大、e等于)
这里写图片描述

3、字符串比较

=等 、!=不等、-z检查是否为空
这里写图片描述
这里写图片描述
这里写图片描述

4、逻辑测试

&& 与 、||或、!非。
4、逻辑测试
&& 与 、||或、!非。

使用if 条件语句

1、单分支

if 条件测试
then
命令
fi

2、双分支

if 条件测试
then
命令
else
命令
fi

3、多分支

if 条件测试
then
命令
(可多个elif)elif 条件测试
then
命令
else
命令
fi
可以fi结束 下一行重新开始新的条件测试。
例如:
这里写图片描述
这里写图片描述
这里写图片描述

实验案例

一、条件测试操作
1、文件测试
(1)测试目录/media是否为目录,$?返回值为0,表示存在此目录。
这里写图片描述
如果$?返回值非0,表示不存在此目录
这里写图片描述
(2)测试目录是否存在,输出结果更加直观。
输出“yes”表示该目录存在
这里写图片描述
无“yes”输出表示该目录不存在
这里写图片描述
2、整数值比较
(1)判断当前已登录的用户数,当超过5个时输出“too many”。
这里写图片描述
没有出现“too many” 说明没有超过5个。
(2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。
这里写图片描述
3、字符串比较
用户输入“yes”或“no”来确认某个任务
这里写图片描述
4、逻辑测试
判断当前linux系统的内核版本是否大于2.4。
查看内核
这里写图片描述
判断
这里写图片描述
二、if条件语句
1、单分支if语句
(1)判断挂载点目录,若不存在则自动创建
这里写图片描述
这里写图片描述
(2)判断当前用户是否为root,如果不是则执行“exit 1”退出脚本,不再执行其他代码。
这里写图片描述
这里写图片描述
2、双分支if语句
(1)判断目标主机是否存活,显示检测结果
这里写图片描述
这里写图片描述
(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则启动服务(插入linux系统安装光盘,安装一下vsftpd软件包)。
这里写图片描述
启动vsftpd服务(service vsftpd start),运行一下脚本,查看结果。
停止vsftpd服务(service vsftpd stop),运行一下脚本,查看结果。
这里写图片描述
3、多分支if语句
(1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。
这里写图片描述
这里写图片描述
三、
1、编写sysmon.sh脚本
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
(2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
(3)使用free命令提取出内存使用率,赋值给变量MUG。
(4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
(5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。

[root@localhost ~]# vi /root/sysmon.sh
#!/bin/bash
# 提取性能监控指标(磁盘占用、CPU使用、内存使用)
DUG=$(df -h | grep “/$” | awk ‘{print $5}’ | awk -F% ‘{print $1}’)
CUG=$(expr 100 - $(mpstat | tail -1 | awk ‘{print $12}’ | awk -F. ‘{print $1}’))
注明:如果系统使用中文登录,需要将上一行的$12改为$11
MUG=$(expr $(free | grep “cache:” | awk ‘{print $3}’) \* 100 / $(free | grep “Mem:” | awk ‘{print $2}’))
# 设置告警日志文件、告警邮箱
ALOG=”/tmp/alert.txt”
AMAIL=”[email protected]
# 判断是否记录告警
if [ $DUG -gt 90 ]
then
echo “磁盘占用率:$DUG %” >> $ALOG
fi
if [ $CUG -gt 80 ]
then
echo “CPU使用率:$CUG %” >> $ALOG
fi
if [ $MUG -gt 90 ]
then
echo “内存使用率:$MUG %” >> $ALOG
fi
# 判断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
cat $ALOG | mail -s “Host Alert” $AMAIL
rm -rf $ALOG
fi
[root@localhost ~]# chmod +x /root/sysmon.sh

2、测试sysmon.sh脚本的执行情况
(1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。

[root@localhost ~]# /root/sysmon.sh

3、设置crontab计划任务
(1)确认系统服务crond已经运行。

[root@localhost ~]# /etc/init.d/crond status
crond (pid 5839) 正在运行…

添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]# crontab –e
*/30 * * * * /root/sysmon.sh

猜你喜欢

转载自blog.csdn.net/qq_40084074/article/details/82534772