Pull to refresh

Включение компьютера удалённо, или альтернативный Wake on Lan

Навязчивое желание иметь постоянный и свободный доступ к домашнему компьютеру и нежелание тратить электроэнергию привели меня на Google Play в поисках приложения, позволяющего включать компьютер через Wake on LAN. Таких приложений там огромное множество, но ни одно из них мне так и не удалось научить включать компьютер из внешней сетки. Ни проброс портов на роутере, ни добавление статических записей в ARP роутера не дали нужного результата. Судя по всему это всё-таки можно реализовать, но потратив кучу сил и нервов, я решил поступить по-другому.

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

ether-wake -i br0 AA:BB:CC:DD:EE:FF

Следующим шагом стал поиск приложения, которое позволило бы подключиться к роутеру и выполнить указанную команду. Ну а т.к. приложений-терминалов и SSH клиентов в Google Play достаточно, то я без труда смог научить свой смартфон включать компьютер из любой точки мира через терминал.

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

В первой версии приложения, которая совершенно не имела никакого дизайна — я реализовал лишь возможность подключения по SSH.

Изначально я добавил лишь команду ether-wake, указанную выше.

Однако позже выяснилось (благодаря пользователям приложения), что, например, на DD-WRT прошивках используется команда wol, и она тоже была добавлена:

/usr/sbin/wol -i 192.168.1.255 -p 9 AA:BB:CC:DD:EE:FF

А на OpenWRT прошивках чаще всего используется команда:

/usr/bin/etherwake -D -i "br-lan" AA:BB:CC:DD:EE:FF

Приложение (в котором указаны данные для доступа к роутеру) подключается к роутеру посредством SSH (вскоре была добавлена также поддержка Telnet). Для реализации SSH соединения я использовал jar-библиотеку com.jcraft.jsch, а для Telnet соединения — класс TelnetClient из пакета org.apache.commons.net

В итоге появилось приложение, которое отличается от нескольких десятков аналогичных по функционалу приложений маркета. Отличается оно не столько визуально, сколько идеей и технологией. Сейчас у приложения чуть больше 2000 скачиваний и количество установок постоянно растёт.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.