0
点赞
收藏
分享

微信扫一扫

搞定一切,还能玩!好玩的shell进阶脚本if用法


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场景:

搞定一切,还能玩!好玩的shell进阶脚本if用法_shell


当前用户不是root场景:注意,脚本其他用户要有权限才能执行

搞定一切,还能玩!好玩的shell进阶脚本if用法_shell_02


实例二:创建监控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服务关闭状态,执行脚本

搞定一切,还能玩!好玩的shell进阶脚本if用法_linux_03


实例三:

监控登录服务器用户数脚本,异常告警!并发邮件

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)验证:切换模拟不同状态,执行脚本

搞定一切,还能玩!好玩的shell进阶脚本if用法_centos_04


优化脚本:我们可以让他更智能,用户登录数过多,既屏幕输出,又发送邮件给管理员,如何实现?

更改脚本:

#!/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

验证:

搞定一切,还能玩!好玩的shell进阶脚本if用法_centos_05


邮件

搞定一切,还能玩!好玩的shell进阶脚本if用法_centos_06


实例四:提示:脚本内容除条件判断语句外,必须左对齐,否则会报错

自动创建本地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仓库信息

搞定一切,还能玩!好玩的shell进阶脚本if用法_linux_07

备份也成功

搞定一切,还能玩!好玩的shell进阶脚本if用法_shell_08


反向验证:

搞定一切,还能玩!好玩的shell进阶脚本if用法_shell_09

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服务开启状态,执行脚本

搞定一切,还能玩!好玩的shell进阶脚本if用法_运维_10


httpd服务关闭状态,执行脚本(用yum安装的会提示没文件)

搞定一切,还能玩!好玩的shell进阶脚本if用法_linux_11


实例二:

查询用户是否存在,如果存在,则输出“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)验证:

搞定一切,还能玩!好玩的shell进阶脚本if用法_linux_12


举报

相关推荐

0 条评论