Автоматичне пробудження Wake-on-LAN для хостів
Цей скрипт автоматично пробуджує пристрої за запитом.
Користувачам принаймні варто зберігати LOGFILE у ``/tmp/``, а не у flash-пам’яті. OpenWrt також не обслуговує HTML-сторінки так само, як DD-WRT.
Також зверніть увагу на проблеми з перезавантаженням роутера при використанні цього скрипта: https://forum.openwrt.org/t/cant-reboot-while-sleep-script-wol/
Привіт!
Я знайшов на https://www.dd-wrt.com/wiki/index.php/Useful_Scripts#Web_Server_Wake-up корисний скрипт для пробудження хоста за запитом.
Я використовую його для пробудження свого NAS, коли Kodi або ПК хоче щось із нього отримати.
Вимоги:
- Версія OpenWrt: Barrier Breaker 14.07 / LuCI Trunk (0.12+svn-r10530)
- Версія ядра: 3.10.49
Налаштування скрипта
Обов'язковість | Змінна | Значення за замовчуванням | Опис |
---|---|---|---|
необов'язково | INTERVAL | 5 | інтервал повторення виконання скрипта в секундах |
не обов'язково | OLD | порожнє | має залишатися порожнім |
необов'язково | PORT | 80 | порт, за яким перевіряється трафік |
необов'язково | NUMP | 3 | кількість спроб перед пробудженням |
так | TARGET | 192.168.1.1 | IP-адреса цільового пристрою |
так | INTERFACE | br-lan | інтерфейс або широкомовна адреса |
так | MAC | 00:00:00:00:00:00 | MAC-адреса цільового пристрою |
не обов'язково | WOL | /usr/bin/etherwake | шлях до утиліти wake-on-lan |
необов'язково | LOGFILE | “/www/wol/index.html” | файл журналу, доступний за URL <ROUTER-IP>/wol/index.html |
необов'язково | LOGPROG | “logread” | джерело логів: logread, dmesg тощо |
Інструкція
1. Підготовка
Встановіть потрібні пакети:
opkg update
opkg install etherwake
2. Скрипт автозапуску Wake-on-LAN
Збереження скрипта:
cat << "EOF" > /bin/autowol.sh #!/bin/sh # Активуйте JFFS2 та помістіть скрипт у /jffs/, тоді додайте його до автозапуску через інтерфейс. # Налагодження # set -xv INTERVAL=5 NUMP=3 OLD="" PORT=80 TARGET=192.168.1.1 INTERFACE=br-lan MAC=00:00:00:00:00:00 WOL=/usr/bin/etherwake LOGFILE="/www/wol/index.html" LOGPROG="logread" # або "dmesg" echo "<meta http-equiv=\"refresh\" content=\"10\">" > $LOGFILE echo "Скрипт AUTO WOL запущено: " `date` "<br>" >> $LOGFILE wake_up () { PORT=$1 TARGET=$2 BROADCAST=$3 MAC=$4 NEW=`$LOGPROG | awk '/WOL_LOG/ && /DST='"$TARGET"'/ && /DPT='"$PORT"'/ {print }' | tail -1` SRC=`$LOGPROG | awk -F'[=| ]' '/WOL_LOG/ && /DST='"$TARGET"'/ && /DPT='"$PORT"'/ {print }' | tail -1` LINE=`$LOGPROG | awk '/WOL_LOG/ && /DST='"$TARGET"'/ && /DPT='"$PORT"'/'` if [ "$NEW" != "" -a "$NEW" != "$OLD" ]; then if ping -qc $NUMP $TARGET >/dev/null; then echo "NOWAKE: $TARGET вже активний, запит від $SRC — " `date` "<br>" >> $LOGFILE else echo "WAKE: $SRC викликав Wake-on-LAN — " `date` "<br>" >> $LOGFILE $WOL -i $BROADCAST $MAC >> $LOGFILE echo "<br>" >> $LOGFILE sleep 5 fi OLD=$NEW fi } while sleep $INTERVAL; do wake_up $PORT $TARGET $INTERFACE $MAC done EOF chmod +x /bin/autowol.sh
Порада: не копіюйте скрипт вручну, бо можуть виникнути помилки через символи CRLF наприкінці рядків. Краще просто завантажте файл звідси.
3. Автозапуск
Щоб увімкнути автозапуск, перейдіть у System → Startup → Local Startup та додайте рядок:
/bin/autowol.sh
Усунення неполадок
Увімкніть вивід налагодження:
sh -x -v /bin/autowol.sh
Перевірте файл журналу: http://192.168.1.1/wol/
Перейдіть у Network → Firewall → Custom Rules та додайте наступне правило:
iptables -I FORWARD 1 -p tcp -d 192.168.1.1 -m limit --limit 1/min -j LOG --log-prefix "WOL_LOG: " --log-level 7