Linux简单脚本学习
第一题:判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。
1.首先我们需要安装并配置邮件服务
[root@server ~]# yum install s-nail -y #安装邮件客户端
[root@server ~]# vim /etc/s-nail.rc #打开配置文件并在末尾添加如下内容
set from=……………@qq.com # 自己的邮箱地址
set smtp=smtp.qq.com # 发邮件协议
set smtp-auth-user=……………@qq.com # 自己的邮箱地址
set smtp-auth-password=…………… # 授权码
set smtp-auth=login
注意:退出时输入wq! ,强制保存并退出
2.到此我们可以测试邮件服务程序是否配置成功:
[root@server ~]# echo "yes" | mail -s "yes" …………@qq.com
3. 创建脚本文件编写脚本:
[root@server ~]# vim dxl.sh
#!/bin/bash
dxl=$(df -m | grep -w "/" | tr -s " " | cut -d " " -f4) #定义变量存储查询的剩余空间数值(单位M)
if (( "$dxl" <= 20000 )) #判断剩余空间是否剩余20000M不足则发邮件告警
then
echo "Warning Insufficient memory 20G" | mail -s "Warning" …………@qq.com
fi
4.将执行此脚本写入系统计划任务中:
[root@server ~]# vim /etc/crontab
0 0 * * * root /bin/bash /root/dxl.sh
* | 表示任意时刻 |
- | 表示时间范围 |
,(逗号) | 表示分割时段 |
*/数字 | 指定时间和间隔频率,如:每3分钟执行一次:*/3 |
注意:
1. 6 个字段都不能为空,如果不确定则使用*表示任意时间
2. crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别
3. 定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆
4. 在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错
第二题:判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则。
创建并编写脚本:
[root@server ~]# vim ht.sh
#!/bin/bash
ht=$(ps -ef | grep httpd | grep -v grep | wc -l) # 根据进程条目数统计,排除命令自己$()可替换为` `
if (($ht>0)) #可替换为[ "$ht" -gt 0 ]
then
echo "Httpd is already running"
else
echo "Httpd stop,The driver being installing..."
yum install httpd -y > /dev/null #不显示提示信息
systemctl start httpd
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-service=http > /dev/null
firewall-cmd --permanent --zone=public --add-port=80/tcp >/dev/null
firewall-cmd --reload > /dev/null
echo "Httpd is already running."
fi
也可通过端口判断:
[root@server ~]# ss -lntup | grep -w 80 | wc -l
第三题:使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码。
创建并编写脚本:
[root@server ~]# vim htor.sh
#!/bin/bash
ip=`ip a | grep ens160 | grep inet | cut -d / -f1 | tr -s ' ' | cut -d ' ' -f3`
curl -s $ip > /dev/null
if (($?==0))
then
echo "web server is running"
else
echo "Web not accessible"
exit 12
fi