Итак что есть:
Сервак, который используется 1-2 раза в сутки, и wl500.
Ради пары раз в сутки держать сервак в 24/7 нелогично. постоянно включать-выключать сервак тоже мало приятного (хочется упрятать его или на балкон или на антресоль, то есть в недоступное место)
Что удалось придумать:
На wl500 2 скрипта
/opt/sbin/watchserv (поднимаем виртуальный интерфейс с ip сервера(сервер в это время выключен) и отслеживаем обращения к нему. по факту обращения пишем событие в лог-файл, одновременно с этим наблюдаем за логом и делаем системный вызов второго скрипта, при появлении ключевой фразы)
#/bin/sh
iptables -t nat -I PREROUTING -d 192.168.1.253 -j LOG --log-prefix="TRIGGER ME NOW !!!"
ifconfig eth0:0 192.168.1.100 up
tail -0 -f /tmp/syslog.log| awk '/TRIGGER ME NOW !!!/ {system("/opt/sbin/wakeserv")}'
/opt/sbin/wakeserv (в этом скрипте wakeonlan'им сервер, убиваем запущенные в предыдущем скрипте, гасим правило файервола и интерфейс)
#/bin/sh
ether-wake 00:01:02:03:04:05
killall tail
killall awk
iptables -t nat -D PREROUTING --destination 192.168.1.253 -j LOG --log-prefix="TRIGGER ME NOW !!!"
ifconfig eth0:0 down
Что нужно сделать:
1.Сообразить хитрый скрипт на сервер который стартует при его выключении (кстати как отличить выключение от ребута?) отсылает сообщение на роутер (предположительно средствами nc 192.168.1.1 12345 посылаем ключевую фразу «workforme») получает подтверждение и после этого продолжает процесс отключения питания.
2. Еще один хитрый скрипт для выключения питания при бездействии (в действии пока mpd, httpd, samba) 30 мин.
3. На роутере: обработку полученной через nc -l -p 12345 ключевой фразы, ответ на сервер о получении, дальше пинг сервера (для подтверждения отключения питания), при пропаже пингов - старт первого скрипта.
*. [не обязательно] Хорошо бы в имеющихся на роутере скриптах перехватывать и сохранять все пакеты, предназначавшиеся роутеру и повторно отправлять их после его пробуждения. То есть, с учетом загрузки сервера за 30-40 сек. мы получаем (с точки зрения клиента) лаг на время загрузки роутера. что не потребует повторного запроса.
Буду благодарен за умные мысли, подсказки в путях решения, и в особенности за готовые решения :)
Как это должно выглядеть: сервер выключен, а мне захотелось послушать mpd. я запускаю (допустим) DroidMPD, он пытается подключиться к серверу. Сервер от этого просыпается и через 30сек дает ответ клиенту. Я получаю музыку.