if双分支
实例一:判断当前登录用户是否为root
分析:有两种情况,一种是条件成立,即:当前登录用户为root;另一种是不成立,即:当前登录用户不为root,分别执行不同的命令。
1)编辑脚本:
#!/bin/bash
#This is a script to check the login user //注释:提示用户,此脚本用途
USER=`whoami` //给变量赋值
if [ $USER = "root" ] //判断变量的值是root
then
echo "Hello root! " //输出Hello root!
else //否则,执行下面命令
su - root //切换到用户root
fi
2)验证:执行脚本
当前用户是root场景:
当前用户不是root场景:注意,脚本其他用户要有权限才能执行
实例二:创建监控Apache服务脚本
1)编辑脚本:
#!/bin/bash
#This is a check httpd server script
pgrep httpd &> /dev/null //查看httpd服务进程号,并不让屏幕输出
if [ $? -eq 0 ] //判断上条命令执行返回值是否为0;为0则条件成立
then
echo "httpd is up" //是就屏幕显示httpd is up
else
echo "httpd is down now restart server" //否则,屏幕显示httpd is down now restart server,并重启服务
systemctl restart httpd //重启服务
fi
2)验证:httpd服务关闭状态,执行脚本
实例三:
监控登录服务器用户数脚本,异常告警!并发邮件
1)编辑脚本:
#!/bin/bash
NUM=`who|wc -l` //为变量赋值
if [ $NUM -gt 3 ] //判断变量值是大于3吗?
then
echo "The current number of logged-in users is $NUM,too many please handle it in time" //是就屏幕输出,并执行who命令
who
else
echo "The current number of logged-in users is $NUM,normal" //否则,屏幕输出,The current number of logged-in users is $NUM,normal
fi
2)验证:切换模拟不同状态,执行脚本
优化脚本:我们可以让他更智能,用户登录数过多,既屏幕输出,又发送邮件给管理员,如何实现?
更改脚本:
#!/bin/bash
NUM=`who|wc -l` //为变量赋值
if [ $NUM -gt 3 ] //判断变量值是大于3吗?
then
echo "The current number of logged-in users is $NUM,too many please handle it in time"
echo "The current number of logged-in users is $NUM,too many please handle it in time " | mail -s test root //加上这行代码,以用户test的身份发邮件给root
who
else
echo "The current number of logged-in users is $NUM,normal" //否则,屏幕输出,The current number of logged-in users is $NUM,normal
fi
验证:
邮件
实例四:提示:脚本内容除条件判断语句外,必须左对齐,否则会报错
自动创建本地yum仓库,如创建过,提示:already exist!exit并退出
分析:思路,先判断有没有创建过,如果没有做过,再执行,并显示提示。
1)编辑脚本:
#!/bin/bash
FILE="/etc/yum.repos.d/myyum.repo" //给变量赋值
if [ ! -f $FILE ] //判断变量的值为文件且不存在
then
echo "create yum file" //成立,则屏幕输出create yum file,执行下面指令
cd /etc/yum.repos.d/
mount /dev/sr0 /media
mkdir backup
mv /etc/yum.repos.d/*.repo ./backup
cat >> myyum.repo<<E
[myyum]
name=my
baseurl=file:///media
gpgcheck=0
E
else
echo "already exist! exit"
exit 1
fi
2)验证:
正向验证:执行脚本,查看本地yum仓库信息
备份也成功
反向验证:
if多分支
温馨提示:一种需求,有多种方式实现,下面介绍另一种方式监控Apache服务脚本
实例一:
适用于Apache服务没有添加到系统服务,监控脚本。服务进程存在,则提示httpd service is running;否则,检查/etc/rc.d/init.d/httpd有无可执行文件,无则输出no httpd script file。
1)编辑脚本:
#!/bin/bash
pgrep httpd &> /dev/null
if [ $? -eq 0 ]
then
echo "httpd service is running"
elif
[ -f /etc/rc.d/init.d/httpd -a -x /etc/rc.d/init.d/httpd ] //httpd类型为(f)文件,并且(a)具有执行权限(x)
then
/etc/rc.d/init.d/httpd start
else
echo "no httpd script file "
fi
2)验证:
httpd服务开启状态,执行脚本
httpd服务关闭状态,执行脚本(用yum安装的会提示没文件)
实例二:
查询用户是否存在,如果存在,则输出“already exist!”,如果没有则输出“There is no such user, do you want to create it?”,用户输入Y,执行创建,并完成输出 successful!;输入N,输出OK, do nothing!;输入其他不符合语法的,输出enter the error message!
1)编辑脚本:
#!/bin/bash
read -p "Please enter user name:" USER
id $USER &> /dev/null
if [ $? -ne 0 ]
then
read -p "There is no such user, do you want to create it? Y/N" YN
if [ $YN == Y ]
then
useradd $USER
echo " successful!"
elif [ $YN == N ]
then
echo "OK, do nothing!"
else
echo "enter the error message!"
fi
else
echo "already exist!"
fi
2)验证: