Shell-day04
1. 昨日回顾
1. 批量重命名文件,打包压缩,还原名称。
for
2. 判断字符串的长度,字符串的长度小于3的显示出来
3. 变量的运算 加 减 乘 除 求余 求方 + - * / % ^
4. 整数运算 expr $(()) $[] let
5. 小数运算 bc awk Python
6. 变量运算的案例 计算ps aux 中VSZ的和 RSS的和 实现一个简单计算器脚本
7. 变量的脚本案例 打印系统信息 变量替换的案例 菜单
8. 流程控制语句介绍
单分支 双分支 多分支
if [ 满足条件 ];then
command
fi
if [ 满足条件 ];then
command
else
command
fi
if [ 第一个条件 ];then
command
elif [ 第二个条件 ];then
command
else
command
fi
9. 流程控制语句之文件比较
-e
-f
-d
-s
-r
-w
-x
10. 数据库备份场景
[ ! -d $Back_Dir ] && mkdir -p $Back_Dir
==
[ -d $Back_Dir ] || mkdir -p $Back_Dir
==
if [ -d $Back_Dir ];then
echo "目录存在"
else
mkdir -p $Back_Dir
fi
==
if [ ! -d $Back_Dir ];then
mkdir -p $Back_Dir
fi
2. 流程控制语句之整数比较
-eq
-ne
-gt
-lt
-ge
-le
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
read -p "请输入第一个比较的数字:" Num1
read -p "请输入第二个比较的数字:" Num2
if [ $Num1 -gt $Num2 ];then
echo "$Num1 > $Num2"
elif [ $Num1 -lt $Num2 ];then
echo "$Num1 < $Num2"
else
echo "$Num1 = $Num2"
fi
[root@shell /service/scripts/day04]
请输入第一个比较的数字:1
请输入第二个比较的数字:2
1 < 2
[root@shell /service/scripts/day04]
请输入第一个比较的数字:3
请输入第二个比较的数字:3
3 = 3
[root@shell /service/scripts/day04]
请输入第一个比较的数字:4
请输入第二个比较的数字:3
4 > 3
3. 监测服务是否运行
1. 如何判断一个服务是否在运行状态 systemctl status server
2. 根据服务的状态命令的返回的状态码$?的值进行判断 0 服务正在运行 3 没有运行 4 没有这个服务
3. 输入数字
4. 使用位置变量
[root@shell /service/scripts/day04]
if [ $# -ne 1 ];then
echo "Usage: $0 {sshd|nginx|php-fpm|rsyncd|mariadb|...}"
exit
fi
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
[root@shell /service/scripts/day04]
Usage: if-2.sh {sshd|nginx|php-fpm|rsyncd|mariadb|...}
[root@shell /service/scripts/day04]
sshd 服务正在运行中...
[root@shell /service/scripts/day04]
请检查nginx服务是否安装!或者是否书写错误!系统中没有这个nginx服务!
[root@shell /service/scripts/day04]
请检查php-fpm服务是否安装!或者是否书写错误!系统中没有这个php-fpm服务!
[root@shell /service/scripts/day04]
firewalld 服务没有在运行...
[root@shell /service/scripts/day04]
mariadb 服务正在运行中...
[root@shell /service/scripts/day04]
系统中没有正在运行你输入的PID号的服务...
[root@shell /service/scripts/day04]
6957 服务正在运行中...
4. 监控磁盘的使用率
1. 怎么查看磁盘根分区的使用率 df -h
2. 把根分区的使用率提取出来 进行判断
3. 给磁盘的使用率定义一个阈值 80 20 跟实际的值进行对比 整数
4. 使用率大于阈值,则进行报警发邮件 echo
5. 正常则输出正常
[root@shell /service/scripts/day04]
Disk_Used=$(df -h | awk '/\/$/{print $(NF-1)}')
if [ ${Disk_Used/\%/} -gt 10 ];then
echo -e "\033[41;37m当前根分区的使用率过高!当前根分区使用率为:$Disk_Used\033[0m"
echo "磁盘根分区使用率过高!当前根分区使用率为:$Disk_Used" | mail -s "当前根分区的使用率过高!" 1176494252@qq.com &>/dev/null
if [ $? -eq 0 ];then
echo "邮件发送成功...."
else
echo "邮件发送失败...."
fi
else
echo -e "\033[42;37m当前根分区的使用率正常!当前根分区使用率为:$Disk_Used\033[0m"
fi
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:5%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:7%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:7%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:7%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:9%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:9%
[root@shell /service/scripts/day04]
当前根分区的使用率正常!当前根分区使用率为:9%
[root@shell /service/scripts/day04]
当前根分区的使用率过高!当前根分区使用率为:13%
邮件发送成功....
5. 创建用户脚本
1. 提示用户输入要进行创建的用户
2. 判断该用户是否存在系统
3. 存在则提示存在不创建
4. 不存在则创建
5. 根据创建的结果进行输出
[root@shell /service/scripts/day04]
read -p "请输入你要创建的用户:" User
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
[root@shell /service/scripts/day04]
请输入你要创建的用户:www
用户www创建成功....
[root@shell /service/scripts/day04]
请输入你要创建的用户:www
www用户已经存在!无需再次创建!
6. 判断url地址是否能通
1. 调用函数库
[root@shell /service/scripts/day04]
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
read -p "请输入一个URL地址进行测试其是否可以访问:" Url
ping -c1 -W1 $Url &>/dev/null
if [ $? -eq 0 ];then
action "URL地址${Url}是可以访问的..." /bin/true
else
action "URL地址${Url}是不能访问的..." /bin/false
fi
[root@shell /service/scripts/day04]
请输入一个URL地址进行测试其是否可以访问:www.baidu.com
URL地址www.baidu.com是可以访问的... [ OK ]
[root@shell /service/scripts/day04]
请输入一个URL地址进行测试其是否可以访问:www.baiduu.com
URL地址www.baiduu.com是不能访问的... [FAILED]
7. 流程控制语句之字符比较
==
!=
-z
-n
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
read -p "请输入一个yes:" Yes
if [ "$Yes" == "yes" ];then
echo "你输入的是一个:yes"
else
echo "你输入的不是一个:yes"
fi
[root@shell /service/scripts/day04]
请输入一个yes:yes
你输入的是一个:yes
[root@shell /service/scripts/day04]
请输入一个yes:no
你输入的不是一个:yes
[root@shell /service/scripts/day04]
read -p "请输入一个yes:" Yes
if [ -z "$Yes" ];then
echo "此脚本不支持直接回车!请输入一个值!"
exit
fi
if [ "$Yes" == "yes" ];then
echo "你输入的是一个:yes"
else
echo "你输入的不是一个:yes"
fi
[root@shell /service/scripts/day04]
请输入一个yes:
此脚本不支持直接回车!请输入一个值!
[root@shell /service/scripts/day04]
请输入一个yes:yes
你输入的是一个:yes
8. 多条件比对
-a
-o
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
&&
||
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
成立
[root@shell /service/scripts/day04]
不成立
[root@shell /service/scripts/day04]
该用户是超级管理员
[root@shell /service/scripts/day04]
该用户是超级管理员
[root@shell /service/scripts/day04]
该用户是超级管理员
[root@shell /service/scripts/day04]
该用户不是超级管理员
9. 判断学生的成绩优劣
0-100 分数
0 地秀
1-59 不及格 需要补考
60-79 及格
80-99 优秀
100 天秀
>100 要有提示
判断用户输入的是否为数字并且判断用户不能输入空值
单条件
多条件
10.流程控制语句之正则比较
^ $ * +
模糊匹配: =~
精确匹配: ==
正则需要使用双中括号
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
OK
[root@shell /service/scripts/day04]
[root@shell /service/scripts/day04]
ERROR
[root@shell /service/scripts/day04]
read -p "请输入一组字符串,必须是字母组成的:" Zm
if [[ $Zm =~ ^[a-Z]+$ ]];then
echo "你输入的是一个字母!"
else
echo "你输入的不符合条件!"
fi
[root@shell /service/scripts/day04]
请输入一组字符串,必须是字母组成的:12
你输入的不符合条件!
[root@shell /service/scripts/day04]
请输入一组字符串,必须是字母组成的:abc
你输入的是一个字母!
[root@shell /service/scripts/day04]
请输入一组字符串,必须是字母组成的:avbgvrtg
你输入的是一个字母!
[root@shell /service/scripts/day04]
请输入一组字符串,必须是字母组成的:fgergf4gtrg
你输入的不符合条件!
11.创建用户,输入前缀和后缀
1. 执行脚本时,提示用户输入前缀,前缀必须是有字母组成的 例如:qls
2. 提示用户输入后缀,后缀必须是数字,例如:123
3. 根据用户的前缀和后缀进行创建用户
做题思路:
1. 提示用户输入前缀 read -p
2. 判断用户输入的前缀是否为字母或者为空值。
3. 提示用户输入后缀 read -p
4. 判断用户输入的后缀是否为数字
5. 将用户的前缀和后缀组合成一个用户
6. 判断该用户是否存在该系统
7. 存在则不进行创建,不存在则进行创建
8. 根据创建的结果进行返回信息
[root@shell /service/scripts/day04]
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
[root@shell /service/scripts/day04]
请输入你要创建用户的前缀,前缀必须是字母组成的:34f
你输入的前缀不符合要求!必须是字母组成的!
[root@shell /service/scripts/day04]
请输入你要创建用户的前缀,前缀必须是字母组成的:abc
请输入你要创建用户的后缀,后缀必须是数字组成的:r43
你输入的后缀不符合条件!必须是数字组成的!
[root@shell /service/scripts/day04]
请输入你要创建用户的前缀,前缀必须是字母组成的:
你输入的前缀不符合要求!必须是字母组成的!
[root@shell /service/scripts/day04]
请输入你要创建用户的前缀,前缀必须是字母组成的:qls
请输入你要创建用户的后缀,后缀必须是数字组成的:123
用户qls123创建成功...
[root@shell /service/scripts/day04]
请输入你要创建用户的前缀,前缀必须是字母组成的:qls
请输入你要创建用户的后缀,后缀必须是数字组成的:123
用户qls123已经存在该系统!无需再次进行创建!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现