1. 命令行传入1个字符或数字,数字等于1则显示1,如 果等于2则显示2,如果既不等于1也不等于2,就显示 输入不对,然后退出程序
**项目分析: **
- 输入数字
- 数字等于1 显示1 退出
- 数字等于2 显示2 退出
- 数字不是1 也不是2 显示帮助 退出
方法一:
#!/bin/bash
num=$1
[ $# -ne 1 ] &&{
echo "Usage: input number"
exit 1
}
[ $num -eq 1 ] &&{
echo 1
exit 0
}
[ $num -eq 2 ] &&{
echo 2
exit 0
}
[ $num -ne 1 -a $num -ne 2 ]&&{
echo "Usage: input number"}
exit 1
}
#!/bin/bash
num=$1
[ $# -ne 1 ] &&{
echo "Usage: input number"
exit 1
}
[ $num -eq 1 ] &&{
echo 1
exit 0
}
使用正则表达式
[ $num -eq 2 ] &&{
echo 2
exit 0
}
[[ $num =~ ^[12]$ ]] || { echo "Usage: input number" exit 1 }
2. 开发shell脚本,使用传参或read实现比较2个整 数大小,用条件表达式(禁止用if) 进行判断并输出到 屏幕方式提醒用户结果.
注意: 用两种方式实现的时候, 需要对变量是否为数字及参数个数是否正确给 予提示
项目分析: read /传参
- 判断参数个数是否为2 注意:read命令 的时候 不需要对比命令行参数
- 参数或变量是否是数字 进行比较
#!/bin/bash
read -p '请输入2个参数:' n1 n2
num1=$n1
num2=$n2
[[ "$num1" =~ ^[0-9]+$ && "$num2" =~ ^[0-9]+$ ]] || {
echo "Usage:$0 num1 num2"
exit 1
}
[ $num1 -eq $num2 ] && {
echo "$num1 == $num2"
exit 0
}
[ $num1 -gt $num2 ] && {
echo "$num1 > $num2"
exit 0
}
[ $num1 -lt $num2 ] && {
echo "$num1 < $num2"
exit 0
}
3.把计算器脚本 修改为if判断格式
#!/bin/bash
num1=$1
num2=$2
[ $# -ne 2 ]&&{
echo "Usage:$0 num1 num2"
exit 1
}
expr $num + $num2 + 2 &>/dev/null
[ $? -ne 0 ] && {
echo "Usage:$0 num1 num2"
exit 2
}
echo $num1 + $num2 |bc -l
echo $num1 - $num2 |bc -l
echo $num1 / $num2 |bc -l
echo $num1 \* $num2 |bc -l
4.企业案列 监控系统可用内存, 小于100M就发送报警邮件 否则,提示内存充足 定时任务每三分钟一次
**项目分析
- 取出当前内存
- 书写脚本进行对比
-- 小于发邮件
-- 正常 提示正常 - 定时任务
#!/bin/bash
mail=$(free -m|awk 'NR==2{print $NF}')
if [ "$mail" -gt "400" ]
then
echo "内存充足"
else
echo "内存不足"
mail -s "内存不足" 364769327@qq.com
fi
定时任务
#*/3 * * * * sh /server/scripts/men.sh &>/dev/null
5.书写脚本 常用监控内容
目标 | 使用命令 |
---|---|
服务器本地端口监控 | ss/netstat lsof |
远端端口监控 | telnet /nc /nmap |
进程 | ps -ef ps aux 检查cron |
客户端模拟监控:看返回值或者看返回 字符串 | curl/wget 只监控静态页面(更加深入lnmp) |
数据库 | mysql -uroot -poldboy123 -e 'select version();' |
检查端口是否开启
[root@m01 /server/scripts]# ss -lntup |grep -w 22
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=7266,fd=3))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=7266,fd=4))
网友评论