• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】

Shell编程 lixian 4年前 (2020-04-23) 622次浏览 1个评论 扫描二维码
文章目录[隐藏]

一、检测服务是否运行脚本

1.业务需求

根据服务的状态命令的返回的状态码进行判断

0  服务正在运行  
3  没有运行  
4  没有这个服务

2.脚本代码

[root@xian /server/scripts]# cat server_status.sh 
#!/bin/bash
# File Name: server_status.sh
# Author: lixian
#######################
#根据用户输入的位置变量进行检测服务
systemctl status "$1" &>/dev/null

State=$?
if [ $State -eq 0 ];then
    echo "$1 服务正在运行中..."
elif [ $State -eq 3 ];then
    echo "$1 服务没有在运行..."
elif [ $State -eq 4 ];then
    echo "请检查${1}服务是否安装!系统没有这个${1}服务!"
else
    echo "系统中没有正在你输入的PID号的服务"
fi

3.执行结果

[root@xian /server/scripts]# sh server_status.sh nginx
nginx 服务没有在运行...
[root@xian /server/scripts]# sh server_status.sh httpd
请检查httpd服务是否安装!系统没有这个httpd服务!
[root@xian /server/scripts]# sh server_status.sh mariadb
mariadb 服务正在运行中...

二、监控磁盘的使用率

1.业务需求

监控跟分区磁盘,给磁盘的使用率定义一个阈值,跟分区使用率大于阈值,则进行报警发邮件给管理员

2.脚本代码

#!/bin/bash
# File Name: df_fq.sh
# Author: lixian
#######################
#定义内存值变量
Sda=$(df -h | grep /dev/sda3 | awk '{print $5}' | cut -d "%" -f 1)
#判断内存值大小
if [ $Sda -ge "20" ];then
    echo -e "\033[41;37m 显哥哥~跟分区满啦,已经使用${Sda}%,快去看看! \033[0m"
    echo "当前根分区使用率过高!根分区使用率为:${Sda}%" |mail -s "内存使用率过高!" lixian656@qq.com   &>/dev/null
    echo "主人,我已经发邮件通知你了哟!请及时查看~"
 else
    echo -e "\033[42;37m 主人,跟分区内存使用正常!已经使用${Sda}% \033[0m"                 
fi

3.执行结果

Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】

三、创建用户脚本

1.脚本代码

[root@xian /server/scripts]# cat useradd.sh 
#!/bin/bash
# File Name: useradd.sh
# Author: lixian
#######################
source /etc/init.d/functions
#提示用户输入要进行创建的用户
read -p "请输入需要创建的用户名:" User
#判断用户是否存在系统
if id $User &>/dev/null;then
    action  "错误:用户已存在系统,不能创建用户!" /bin/false
else
    useradd $User &>/dev/null
    if [ $? -eq 0 ];then
        action  "恭喜:用户创建成功!" /bin/true
    else
        echo -e  "\033[41;37m 错误:用户创建失败!\033[0m" /bin/false
    fi
fi

2.执行结果

Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】

四、判断学生成绩优劣

1.业务需求

根据用户输入的成绩,判断成绩的优劣。

2.脚本代码

[root@xian /server/scripts]# cat cj.sh 
#!/bin/bash
# File Name: cj.sh
# Author: lixian
#######################
#提示用户输入成绩
source /etc/init.d/functions
read -p "成绩检测系统,请输入你的成绩:" lx
expr 1 + $lx &>/dev/null
if [ $? -ne 0 ];then
    action "成绩是正整数,憨憨!" /bin/false
    exit
fi
#成绩判断
if [ ${lx} -ge "0" -a ${lx} -lt "59" ];then
    action "成绩不咋地呀!继续努力!" /bin/true
elif [ ${lx} -ge "60" -a ${lx} -lt "79" ];then
    action "成绩还行吧,凑合!" /bin/true
elif [ ${lx} -ge "80" -a ${lx} -lt "89" ];then
    action "我曹,好厉害呀!" /bin/true
elif [ ${lx} -ge "90" -a ${lx} -lt "100" ];then
    action "牛逼!牛逼!" /bin/true
elif [ $lx -eq "100" ];then
    action "你牛逼炸了!" /bin/true
elif [ $lx -gt "100" ];then
    action "请输入的成绩不在0-100范围内!" /bin/false
fi

3.执行结果

Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】

五、用户输入前缀和后缀,创建用户脚本

1.业务需求

1. 执行脚本时,提示用户输入前缀,前缀必须是有字母组成的 例如:lx

2. 提示用户输入后缀,后缀必须是数字,例如:123

3. 根据用户的前缀和后缀进行创建用户

2.脚本思路

1. 提示用户输入前缀 read -p

2. 判断用户输入的前缀是否为字母或者为空值。

3. 提示用户输入后缀 read -p

4. 判断用户输入的后缀是否为数字

5. 将用户的前缀和后缀组合成一个用户

6. 判断该用户是否存在该系统

7. 存在则不进行创建,不存在则进行创建

8. 根据创建的结果进行返回信息

3.脚本代码

[root@xian /server/scripts]# cat user_qz_hz.sh 
#!/bin/bash
# File Name: user_qz_hz.sh
# Author: lixian
#######################
#提示用户输入前缀
read -p "请输入你要创建用户的前缀(必须是字母组成哦):" Qz
#判断用户输入的前缀是否全部是字母
if [[ ! $Qz =~ ^[a-Z]+$ ]];then
    echo "你输入的前缀不符合要求!必须是字母组成!"
    exit
fi
#提示用户输入后缀
read -p "请输入你要创建用户的后缀(必须是数字组成哦):" Hz
#判断用户输入的前缀是否全部是数字
if [[ ! $Hz =~ ^[0-9]+$ ]];then
    echo "你输入的前缀不符合要求!必须是数字组成!"
    exit
fi
#判断用户输入的用户组成是否存在系统内
User=${Qz}${Hz}
id $User &> /dev/null
if [ $? -eq 0 ];then
    echo "用户${User}已经存在该系统!不需要再创建!"
else
    useradd $User &>/dev/null
    if [ $? -eq 0 ];then
        echo "用户${User}创建成功"
    else
        echo "用户${User}创建失败"
    fi
fi

4.脚本执行

Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】

六、清空日志,并保留最近的100行

1.业务需求

1. 清空/var/log/messages

2. 要保留最近的100行内容

3. 只能是root超级管理员才能执行这个脚本

2.脚本代码

#!/bin/bash
# File Name: Del_logs.sh
# Author: lixian
#######################
if [ "$USER" != "root"  -o  $UID -ne 0 ];then
    echo "当前用户${USER}不是超级管理员用户!没有权限执行${0}脚本!"
    exit
fi
#判断文件是否存在
File_Log=/var/log/messages
if [ -f $File_Log ];then
    #先保留最近100行内容
    tail -100 $File_Log > ${File_Log}.bak && cat ${File_Log}.bak > $File_Log                
    if [ $? -eq 0 ];then
        echo "清空${File_Log}日志成功!已保留100行日志文件!"
    else
        echo "${File_Log}日志清空失败!请检查脚本或手动清除!"
    fi
else
    echo "${File_Log}文件不存在!无法进行清空操作!"
fi

3.执行结果

[root@xian /server/scripts]# sh Del_logs.sh 
清空/var/log/messages日志成功!已保留100行日志文件!
[root@xian /server/scripts]# cat /var/log/messages |wc -l
100

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Shell脚本编程学习——流程控制案例脚本【显哥出品,必为精品】
喜欢 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. At the beginning, I was still puzzled. Since I read your article, I have been very impressed. It has provided a lot of innovative ideas for my thesis related to gate.io. Thank u. But I still have some doubts, can you help me? Thanks.