Интернет-панель управления питанием компов в домашней сети

Сегодня наконец-то запилил себе вот такое



Сабж - веб-морда на роутере, для управления включением/выключением/перезагрузкой компов в домашней сети. Чтобы зря электричество не жрали и были всегда доступны удаленно. "Конструктор" этот описал в статье. Тема касается арча только в той степени, что компы в панели - это арчи :) Поэтому бложить на форуме не стал. Может кому будет интересно

P.S.: На деле всё это доступно из внешней сети. ip-адрес связывается с доменным именем через халявный http://changeip.com и динамический DNS-клиент на роутере. По понятным причинам на скрине показал вход из домашней сети
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org
не хочу вас обидеть но с технической стороны вопроса это хрень.
самая провисающая часть etherwake это вообще шляпа любая ошибка при выключении и вы уже его не включите (откл от кнопки и т.п.)
если хотите чтобы это работало в реальных условия распаевайте gpio (благо статей по этому поводу хватает)
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
при выключении и вы уже его не включите (откл от кнопки и т.п.)
Да, я заметил такую хрень. Стоит кнопкой потушить - эзервейк не работает.

ind.indeviral
но с технической стороны вопроса это хрень
Не обидели ). Описанное - это ж первая альфа версия :-D
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org
Не знаю, что у вас не срослось с командой wol , у меня она работает и в OpenWRT, и в Арче, и даже в Арче на андроиде.
Команда пробуждения внутри локалки:
wol -p 9 -i $local_broadcast_ip $target_MAC
Команда пробуждения через VPN:
wol -p 9 -i $router_vpn_ip $target_MAC
Разумеется, в последнем случае для пакетов WOL на роутере сделан "проброс":
iptables -t nat -I PREROUTING -i tun0 -p udp --dport 9 -j DNAT --to-destination $local_net.254
ip neigh replace $local_net.254 dev $lan_interface lladdr ff:ff:ff:ff:ff:ff nud permanent

Для андроида есть и гуишные реализации WOL.
Да, моя VPN связывает все мои машины, включая домашний роутер и смартфон, поэтому никаких веб-интерфейсов я не делал.

Но на всякий случай я оставил на центральном сервере VPN джаббер-бота, в котором тоже можно выполнять команды типа WOL.

Что касается удалённого ВЫКЛЮЧЕНИЯ, то нет, я его не делал, ибо чревато – вы никогда не выключали удалённо комп, кто-то в этот момент дома пользовался? :)
В консоли, по крайней мере, можно проверить наличие юзера.

ind.indeviral
откл от кнопки
Честно говоря, не вижу особой проблемы. Я настроил BIOS так, чтобы "откл от кнопки" до загрузки системы не работал, а после пропажи 220 вольт машина включалась сама. В остальных случаях нормальное завершение работы автоматически выполняет
ethtool -s eth0 wol g
то есть снова "взводит" WOL. Та же команда, на всякий случай, выполняется и при загрузке.
Natrio
вы никогда не выключали удалённо комп, кто-то в этот момент дома пользовался? :)
Пока не было случаев :)
Собственно для меня-то нет проблемы воспользоваться консолью и выключить машину через неё. Указанный веб-интерфейс больше для моей тян. Конечно я поставил и настроил у неё на смартфоне ssh-клиент, показал кое-какие базовые вещи, но вот так навскидку залогинится и начать что-то делать она не сможет.

Ахилесова пята текущей реализации - логинится надо в админку роутера, что не есть гут. Лучше, разумеется сделать для этой цели отдельный веб-интерфейс, но пока нет времени.

По поводу wol и биоса - спасибо за наводку, сегодня вечером поковыряюсь с ними

P.S.:
Natrio
даже в Арче на андроиде.
Заинтересовало, навскидку прочел вот это. У Вас что-то подобное?
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org

Заинтересовало, навскидку прочел вот это. У Вас что-то подобное?
На базе него и делалось. Только в итоге Natrio пошел гораздо дальше чем предполагали разработчики приложения. :)
Да пребудет с вами знание ip адреса
domov0y
На базе него и делалось.
Только первоначально, вскоре я избавился и от приложения, и от его скриптов.

Мой способ запуска Арч на андроиде основан на том, что Арч не заменяет андроида, но и не ютится в "песочнице" чрута, как это обычно делают, а делит с андроидом общий корень и общее ядро.

При инициализации Арч, его раздел монтируется в /data/arch , а потом из него каталоги usr, home, var, etc и root биндятся (mount --bind) в корень, для чего там создаются соответствующие точки монтирования.
В штатном tmpfs андроида создаются каталоги tmp и run, и так же биндятся в корень.
В корне создаются симлинки bin, lib и opt.
/sbin НЕ создаётся, потому что во-первых, занят андроидом, а во-вторых, после переезда всего в /usr он не нужен.
Все файлы из /etc/ андроида заранее скопированы в /etc Арч.

В /etc/passwd и /etc/group Арча созданы пользователи и группы для встроенных в андроид UID и GID, особенно тех, что разрешают доступ в сеть и к флешке, и без которых в андроиде даже рут этот доступ не получит.

Когда всё что надо создано и смонтировано, ash-скрипт инициализации завершает работу, запуская через арчлинуксовый sudo (чтобы получить все необходимые группы!) уже bash-скрипты инициализации Арч, которые выполняют настройку окружения и запуск демонов.

Так как systemd в андроиде запустить невозможно из-за конфликта с существующим init-процессом, вся настройка и запуск демонов выполняется моими баш-скриптами.

Вся инициализация Арч стартует не при загрузке андроида, а по активации Android Terminal Emulator. Если Арч уже запущен, происходит просто проверка и обычный старт баша.
Кроме того, запуск Арч, и некоторые переключения в нём (запуск и останов туннеля, перенаправление интернета в туннель, монтирование и отмонтирование NFS, включение и выключение сети через USB) могут также выполняться через команды, назначенные на "сеансы" ConnectBot, что позволяет запускать их, тыкая пальцем в меню ConnectBot или в "ярлыки" на столе андроида. Это единственное, для чего я использую ConnectBot.

В качестве SSH-клиента и SSH-сервера я использую обычный арчевский OpenSSH, клиента запускаю в androidterm короткими командами-алиасами. Чтобы избавиться от ввода паролей со смартфона, я настроил на всех своих SSH-серверах вход для него по ключу.

Вся VPN построена на основе vtun, который установлен везде, включая роутер и смартфон. Для некоторых особых случаев на центральном сервере также используются pptpd и openvpn.

Для подъёма туннеля и монтирования NFS, я собрал для ядра андроида модули поддержки tun и nfs.

P.S.
На этом я не успокоился, и организовал выполнение специфеских команд андроида, вроде getprop и setprop, прямо из Арч. Для этого пришлось научиться восстанавливать из-под Арч окружение андроида, включая открытый дескриптор (через который передаются т.н. "properties" андроида), путём "похищения" дескриптора у init-процесса. Недавно я даже писал багрепорт разработчику, который случайно сломал в sudo настройку области наследуемых дескрипторов. Баг был оперативно исправлен, за что всяческое спасибо автору :)
Natrio
Честно говоря, не вижу особой проблемы. Я настроил BIOS так, чтобы "откл от кнопки" до загрузки системы не работал, а после пропажи 220 вольт машина включалась сама. В остальных случаях нормальное завершение работы автоматически выполняет
ethtool -s eth0 wol g
то есть снова "взводит" WOL. Та же команда, на всякий случай, выполняется и при загрузке.
А reset тоже в bios отключите? не ну конечно можно вообще все кнопки физически отключить за ненадобностью) только вот домашнии обидятся)),а после пропажи питания он и так и так выключится вам не кажется)) а нормальное выключение в таком случаи, возможно только при содействии ибп который можно теоретически подключить к роутеру (зависит от производителя) ну и написав пару не замысловатых скриптов опять же используя ssh и тп...
Как бы всё это можно реализовать но гораздо проще использовать gpio (разумеется если дома не ~10 машин)))
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
А reset тоже в bios отключите? не ну конечно можно вообще все кнопки физически отключить за ненадобностью
После RESET система снова загрузится, и снова активирует WOL. Кстати, RESET нельзя отключить в биосе, да и незачем.
Кнопку POWER на корпусе можно настроить так, чтобы она работала программно при загруженной системе, вызывая нормальное завершение работы, а на этапе BIOS и загрузчика игнорилась, если не держать её 4 секунды.
После потери питания, 220 вольт рано или поздно вновь появятся, и тогда машина опять-таки, запустится сама, загрузит систему и активирует WOL.

Какую ещё кнопку вы имеете в виду? Автоматы на щитке с электросчётчиком, что ли? :)

P.S.
Не имею ничего против GPIO, но сделать его куда сложнее, чем программно настроить WOL по уже существующей сети.
После потери питания БП должен уходить в защиту.
Сорри после reset wol неактивирутся, но если ethtool -s eth0 wol g тут вы правы) значит ресет можно оставить)
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.