Задать вопрос
fdroid
@fdroid
press any key

Как написать скрипт для включения ПК по WoL?

Исходные условия: компьютер (Linux) подключен к ИБП Ippon и настроен для корректного завершения работы в случае пропадания электричества (nut).

При возобновления электроснабжения он должен сам автоматически включаться, а чтобы это произошло, ИБП должен полностью выключиться через некоторое время после пропадания электричества и подать напряжение на ПК, который настроен в BIOS на автоматическое включение при подаче напряжения.

И вот на этом этапе возникли проблемы, суть которых в том, что ИБП просто не выходит из спячки при такой настройке, т.е. давать ложиться спать ИБП нельзя, иначе придется включать всё вручную.

Все доступные мануалы по nut скурил, в т.ч. по сервисным командам, но не работает.

Возникла мысль сделать что-то вроде сетевого watchdog из имеющегося старого роутера, прошитого OpenWRT.
Смысл затеи в том, что роутер периодически (раз в минуту, например) пингует ПК (у которого включен WoL) и если пинга нет, значит ПК выключен, и тогда роутер посредством etherwake отправляет magic пакет на MAC-адрес ПК, например, раз в минуту и продолжает пинговать.
Пинг появился - magic слать перестаём, пинг пропал - шлём magic. Собственно, вопрос в том как реализовать скрипт для этой задачи?
  • Вопрос задан
  • 902 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
xotkot
@xotkot
хорошо есть и хорошо весьма
wakeup.sh
#!/usr/bin/sh
IP=$1
MAC=$2
dT=$3

while sleep $dT; do
	until $(fping -r 1 -q $IP); do
		etherwake $MAC
	done
done

пример запуска:
./wakeup.sh 192.168.1.10 ff:ff:ff:ff:ff:ff 60
Ответ написан
#!/bin/bash
while true;
do
while [ "$(ping -c 1 192.168.0.1 |grep icmp | awk '{print $1}')" != "64" ]
do
etherwake xx:yy:zz:11:22:33
sleep 5;
done;
sleep 10;
done;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AnyKey80lvl
Вообще было бы здорово иметь конкретный мануал по решению описанной проблемы. Она ведь возникает у всех нормальных людей, но на толковые решения я не натыкался.

В большинстве случаев NUT только мешает.

Я делаю так - выключаю в NUT всю автоматику, ОС не shutdown'ю. Если батарея у ИБП таки разряжается, то сервер выключается по питанию. Это хотя бы гарантирует его автоматическое включение после появления питания (при корректной настройке BIOS). Минус очевиден - некорректное завершение ОС, fsck, raid rebuild и прочие прелести.

Возможные варианты:
* Shutdown ОС с помощью NUT через заданное время после пропадания питания.
Нет гарантии, что батареи хватит на заданное время (из-за деградации батарей).
Восстановление питания во время shutdown'а ОС. Получаем выключенный сервер.

* Shutdown ОС с помощью NUT по достижении порога на остаток заряда ИБП.
Все дешевые ИБП врут, особенно со временем, все мои - врут сильно.
Опять же проблема с восстановлением питания во время shutdown.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы