
shell实现UPS(断网自动关机)
使用Shell实现UPS(断网自动关机)
本文将介绍如何使用Shell脚本实现UPS(不间断电源)功能,以便在网络断开时自动关机。以下是完整的脚本及其使用说明。
创建Shell脚本文件
脚本代码
#!/bin/bash
# 定义目标 IP 地址和日志文件
destination_ip=114.114.114.114
log_file="/var/log/network_check.log"
shutdown_flag="/tmp/network_shutdown.flag"
# 检查网络连接
if ! ping -c1 $destination_ip &>/dev/null; then
echo "$(date): $destination_ip is offline." >> $log_file
# 检查是否已经执行过关机
if [ ! -f "$shutdown_flag" ]; then
echo "$(date): Shutting down due to network failure." >> $log_file
sudo shutdown -h now >> $log_file 2>&1
touch "$shutdown_flag" # 创建标志文件
fi
else
# 如果网络恢复,删除标志文件
if [ -f "$shutdown_flag" ]; then
rm -f "$shutdown_flag"
echo "$(date): Network is up. Shutdown flag cleared." >> $log_file
fi
fi
脚本功能
该脚本的功能是每分钟检查一次指定的IP地址。如果无法连接到该地址,脚本会记录日志并执行关机命令。同时,它会创建一个标志文件,以避免在网络断开的情况下重复关机。如果网络恢复,标志文件将被删除。
设置定时任务
为了使脚本定期执行,可以将其添加到crontab
中,以下是设置步骤:
-
打开
cron
表运行以下命令来编辑当前用户的
cron
表:
crontab -e
- 在
crontab
中,添加如下条目,以表示每三分钟执行一次脚本:
*/3 * * * * /path/to/check_network.sh
确保将 /path/to/check_network.sh
替换为你的实际脚本路径。
这个条目的含义是:
*/3
:表示每三分钟执行一次。* * * *
:代表小时、日期、月份和星期的通配符,表示在任何时间都可以运行该作业。
保存并退出 编辑完成后,保存并退出编辑器。cron服务会自动加载并运行你设置的任务。
验证任务是否添加成功 使用以下命令查看crontab中是否已正确添加任务:
crontab -l
这将列出当前用户的cron作业。如果你看到刚刚添加的那一行,说明任务已成功添加。
结论
通过以上步骤,你可以成功实现网络断开时的自动关机功能。此脚本能够帮助用户在没有电源的情况下安全地关闭系统,从而保护重要数据和设备。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 永迪联
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果