排行榜
原创运维中心

CentOS ups 断网自动关机脚本

本文阅读 3 分钟
首页 运维中心 正文
广告

脚本逻辑:每分钟ping192.168.110.1,如果断电了的话,则路由器也会自动断电,服务器ping路由器的时候就会ping不通,如果ping不通的话,则表示已经断电,将断电命令加入倒计时,当三次(连续三分钟)ping都ping不通的话,则执行关机流程,其中有一次ping通了,则取消关机命令。


直接贴代码:


vim check_ping_and_shutdown.sh

#!/bin/bash
# 定义相关变量
TARGET_IP="192.168.110.1"
SHUTDOWN_FILE="/tmp/shutdown_time"
CHECK_INTERVAL=60  # 检查间隔,单位:秒(这里设置为1分钟)
# 获取当前时间(秒)
current_time=$(date +%s)
# 检查是否存在关机命令文件
if [ -f "$SHUTDOWN_FILE" ]; then
    # 读取文件中的计划关机时间
    scheduled_time=$(cat "$SHUTDOWN_FILE")
    # 将文件中的时间转换为秒(假设文件内容是以秒为单位的时间戳)
    scheduled_time_seconds=$(echo "$scheduled_time" | bc)
    # 比较当前时间和计划关机时间
    if [ "$current_time" -ge "$scheduled_time_seconds" ]; then
        # 如果当前时间大于或等于计划关机时间,则执行关机命令
        echo "当前时间已达到或超过计划关机时间,正在执行关机命令..."
        rm -f "$SHUTDOWN_FILE"
        /usr/sbin/shutdown -h now
    else
        # 如果当前时间小于计划关机时间,则ping目标IP
        ping -c 1 "$TARGET_IP" > /dev/null 2>&1
        if [ $? -ne 0 ]; then
            # 如果ping不通,则脚本执行完成(不执行任何额外操作)
            echo "Ping失败,但未达到计划关机时间,脚本执行完成。"
        else
            # 如果ping通了,则删除关机命令文件
            echo "Ping成功,删除计划关机文件。"
            rm -f "$SHUTDOWN_FILE"
        fi
    fi
else
    # 如果不存在关机命令文件,则ping目标IP
    ping -c 1 "$TARGET_IP" > /dev/null 2>&1
    if [ $? -ne 0 ]; then
        # 如果ping不通,则新建关机命令文件,并写入3分钟后的时间
        future_time=$(($current_time + 180))  # 3分钟后的时间(秒)
        echo "$future_time" > "$SHUTDOWN_FILE"
        echo "Ping失败,已设置3分钟后关机。"
    else
        # 如果ping通了,则不做任何操作
        echo "1"
    fi
fi
# 注意:此脚本需要每分钟执行一次,您可以使用cron作业来安排它。
# 例如,编辑cron作业可以使用命令 `crontab -e`,然后添加以下行:
# * * * * * /path/to/this/script.sh



crontab -e

* * * * * /home/wwwroot/ups/check_ping_and_shutdown.sh


原创文章,作者:大洋哥,如若转载,请注明出处:https://www.unfit.cn/archives/190.html
windows server ups关机脚本,配置之后开机后马上就关机了
« 上一篇 02-12
python脚本每10分钟自动执行阿里云dns解析
下一篇 » 02-26
广告