CentOSOpenWrt 批量网络唤醒持续至开机正常

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOSOpenWrt 批量网络唤醒持续至开机正常相关的知识,希望对你有一定的参考价值。

本文内容是通过脚本文件实现,所以适用于各种基于Linux内核的设备,包括但不限于 OpenWrt、CentOS等等

基于UPS供电的自动关机自动开机方案图

这个检测自动关机的规则,根据自己情况制定编写脚本即可

使用方法:

1、将本文脚本保存问 autowol.sh

2、在你需要触发脚本的场景,配置执行这个脚本

我的场景:目前有基于接市电的路由和服务器设备,计划在市电来电后(会触发路由器自动启动)由路由器自动执行脚本去唤醒多个服务器开机(因为一些原因我的服务器不能设置通电自启所以才借助WOL来开机)

3、使用脚本可以通过参数传递多个服务器IP和MAC、也可以固定环境变量配置,当然你也可以直接修改脚本固定目标服务器IP和MAC地址

注意实现:
1、脚本中的 etherwake 路径根据自己设备情况进行修改
2、脚本中的 INTERFACE 为发出广播的设备接口名称,也需要对应修改
3、脚本中的参数 INTERVAL 为两次检测和唤醒的间隔(单位秒)
4、脚本中的参数 NUMPACKAGE 为 ping 设备发送的包的数量

脚本内容如下:

#!/bin/sh

########################################################################
# Author: shanhy/365384722@qq.com
# Parameter or environment variable, parameter > environment
# Variable ENV_HOST_LIST format
#   example1: ENV_HOST_LIST=192.168.1.1-00:00:00:00:00:00,192.168.1.200-00:00:00:00:00:01
#   example2: autowol.sh 192.168.1.1-00:00:00:00:00:00,192.168.1.200-00:00:00:00:00:01
########################################################################

PARAM_HOST_LIST=$1
HOST_LIST=${PARAM_HOST_LIST:-$ENV_HOST_LIST}

####################################

INTERFACE=br-lan
INTERVAL=5
NUMPACKAGE=3

# OpenWrt=/usr/bin/etherwake  (opkg update && opkg install etherwake)
# CentOS=/usr/sbin/ether-wake (yum install -y net-tools)
WOL=/usr/bin/etherwake
LOGFILE="/tmp/wol.html"

####################################

echo "<meta http-equiv=\\"refresh\\" content=\\"10\\">" > $LOGFILE
echo "<br>AUTO WOL Script started at" `date` >> $LOGFILE

if [ "$HOST_LIST" != "" ]; then
    echo "<br>HOST_LIST=$HOST_LIST" >> $LOGFILE
else
    echo "<br>Missing parameter or environment variable ENV_HOST_LIST" >> $LOGFILE
    exit 1
fi

####################################
 
wake_up () {
    while true; do
	    TARGET_IP=$1
	    TARGET_MAC=$2
	    TARGET_INTERFACE=$3

        if ping -qc $NUMPACKAGE $TARGET_IP >/dev/null; then
            echo "<br>NOWAKE $TARGET_MAC/$TARGET_IP was accessed and is already alive at" `date` >> $LOGFILE
            break;
        else
            echo "<br>WAKE $TARGET_MAC/$TARGET_IP causes wake on lan at" `date` >> $LOGFILE
            $WOL -i $TARGET_INTERFACE $TARGET_MAC >> $LOGFILE
            sleep $INTERVAL
        fi
    done
}

####################################

arr1=(${HOST_LIST//,/ })  
for var in ${arr1[@]}
do 
	arr2=(${var//-/ })
    IP=${arr2[0]}
    MAC=${arr2[1]}
    wake_up $IP $MAC $INTERFACE &
done
wait

echo "<br>End of wake-on-lan" >> $LOGFILE

本文脚本经过测试也验证,请放心使用。如果你这边出现什么异常,请注意相关参数和细节做调整排除问题。

参考内容


(END)

以上是关于CentOSOpenWrt 批量网络唤醒持续至开机正常的主要内容,如果未能解决你的问题,请参考以下文章

Win10怎么开启WOL网络唤醒远程开机功能

Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑

电脑远程开机,远程关机怎么来实现?

怎么关闭网络唤醒?

rtc唤醒日期每天唤醒写啥

esp32低功耗远程唤醒