问题一:判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间
#!/bin/bash
# 设置管理员邮箱
admin_email="[email protected]"
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 获取磁盘剩余空间,单位为GB
free_space=$(df -h | grep '/dev/sda1' | awk '{print $4}')
# 判断剩余空间是否小于20G
if [[ $(echo $free_space | sed 's/G//') -lt 20 ]]; then
# 发送报警邮件给管理员
echo "磁盘剩余空间不足20G,请及时处理!" | mail -s "磁盘空间报警 - $current_date" $admin_email
fi
问题二:判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则
1、查看进程方式
#!/bin/bash
# 检查Web服务进程是否在运行
if pgrep -x "nginx" > /dev/null; then
echo "Nginx服务正在运行."
else
echo "Nginx服务未运行,正在启动..."
# 启动Nginx服务
systemctl start nginx
# 添加防火墙规则,允许80端口访问
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
echo "Nginx服务已启动并配置防火墙规则."
fi
2、查看端口方式
#!/bin/bash
# 检查Web服务端口是否监听
if ss -tln | grep -q ':80 '; then
echo "Web服务正在监听80端口."
else
echo "Web服务未监听80端口,正在启动服务并配置防火墙规则..."
# 启动Web服务,例如Nginx或Apache等
systemctl start nginx
# 添加防火墙规则,允许80端口访问
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
echo "Web服务已启动并配置防火墙规则."
fi
问题三:使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码
#!/bin/bash
# 设置Web服务的URL
web_url="http://localhost"
# 使用curl命令测试Web服务是否正常运行
if curl -s --head $web_url | grep "HTTP/1.1 200 OK" > /dev/null; then
echo "Web server is running."
else
echo "Error: Web server is not running."
exit 12
fi