Как удаленно включить компьютер
Технология удаленного включения (Wake on LAN) должна быть поддерживаемой BIOS и сетевой картой. Также, нам понадобится специальное приложение, функции которого позволяют отправить WOL-пакет удаленному ПК.
Благодаря современным достижениям, удаленный ПК включить можно не только с иного компьютера, но и с телефона. Также необходимо помнить, что включение компьютера в удаленном режиме предполагает активность сетевой карты — она должна получать питание в дежурном режиме.
Подготовительные действия
Первым делом, нужно настроить BIOS и сетевой адаптер на пробуждение. Неважно, какая это сетевая — встроенная или внешняя. Открыв главную программу ввода-вывода, найдем секцию, отвечающую за управление питанием — Power Management, например.
В этой секции надо найти параметры пробуждения.
Эти параметры могут носить различные названия, включая Wake on LAN, PowerOn By PCI Card, WOL from Soft-Off и прочее. Надо, чтобы данная опция была включена.
Вполне возможно, что понадобится включить и опцию на картинке ниже.
Для большей уверенности лучше ознакомиться со всеми параметрами пробуждения вашего BIOS. Ведь компьютер может просыпаться и от ТВ-тюнера, если задействована опция включения по PCI-Express, и после нажатия любой клавиши на клавиатуре, если задействованы опции связанные с PS/2-портом. В нашем случае нужен параметр, связанный с PCI-шиной, на которой размещен контроллер встроенной сетевой.
Автор также рекомендует:
Настроив BIOS, обязательно проверьте, поддерживается ли обсуждаемая технология вашим Ethernet-контроллером. Нам понадобится включить прием «магического» WOL-пакета, чтобы Ethernet-контроллер был настроен на его ожидание. WOL-пакет — это специальный Ethernet-кадр, состоящий из последовательности байт, содержащих MAC-адрес сетевой карты. Получив такой фрейм, Ethernet-карта генерирует сигнал на пробуждение ПК.
Итак, откроем центр управления сетями.
Далее, нам понадобится опция изменения параметров адаптера.
Откроем свойства сетевого адаптера.
Перейдем к его настройкам.
Включим WOL Пакет Magic и при необходимости включим Energy Efficiant Ethernet, Завершение Пробуждение.
Перейдем на вкладку управления электропитанием, где должна быть такая конфигурация.
WakeMeOnLan
Воспользуемся для наших целей небольшой программкой Wakmeonlan. Это приложение не нуждается в инсталляции. После его старта надо просканировать локальную сеть, чтобы Wakemeonlan нашла все сетевые устройства.
Работать она должна на ПК, с которого будет генерироваться WOL-фрейм для включения удаленного ПК. Так Wakemeonlan проводит сканирование:
Если в ходе сканирования приложение не обнаружило отключенный на данный момент компьютер, тогда есть возможность самостоятельного его добавления.
Добавим еще одно устройство вручную.
Нужно лишь внести в форму IP-адрес этого устройства и его MAC.
Определим нужные нам адреса, для чего запустим командную строку.
Выполним ipconfig с ключом /all.
Второй способ — заглянем в «Состояние адаптера».
Откроем окно Сведения.
Найдем интересующие нас адреса.
Добавив нужное устройство, обновим список.
Как видим, у нас уже три устройства.
После добавления, вы легко можете включить его в удаленном режиме, нажав кнопочку «Wake up Selected Computer».
Воспользуемся TeamViewer
Выполненная предварительная настройка позволит запустить функцию Wake on LAN такого приложения как TeamViewer. Чтобы удаленно разбудить ПК, необходимо обеспечить следующее:
— Кабельное подключение к интернету.
— Компьютер переведен в один из режимов: гибернация, сон или мягкое выключение (Пуск и Завершение работы).
Очень важно выключить быстрый запуск в таких операционках, как Windows 8 и 10. Ваши экземпляры TeamViewer должны быть связаны с учетной записью программы. При этом все устройства должны принадлежать одной LAN.
Во вкладке опции приложения нужно активировать функцию Wake-on-LAN и настроить конфигурацию, кликнув одноименную кнопочку. Выбрав опцию «Другие приложения в той же локальной сети», добавьте TeamViewer ID тех устройств, с которых разрешено пробуждать данный компьютер. Для создания условий включения по публичному IP-адресу придется подсоединяться с динамическим DNS, который также придется настраивать на роутере сети. Рассмотрим все шаги по порядку.
Авторизуемся в TeamViewer (или регистрируемся).
Прежде всего, свяжем все компьютеры с существующим аккаунтом.
Окно предупреждения о необходимости связи с аккаунтом.
Привязка с помощью кнопочки «Связать».
В нижней части отображается установленная связь.
Нам понадобится сконфигурировать функцию Wake on Lan.
Устанавливаем флажок у других приложений TeamViewer.
Добавляем ID TeamViewer-а, компьютер которого будет отсылать WOL-пакет.
Разбудить удаленный ПК можно из своей учетной записи TeamViewer, где отображаются все привязанные к ней устройства. Нужно лишь нажать кнопочку в виде кнопки питания, что приведет к отсылке WOL-фрейма на Ethernet-карту избранного электронного устройства.
Чтобы удаленно включать ПК из другого устройства, надо настроить BIOS и Ethernet-карту. В BIOS понадобится настроить политику пробуждения ПК по сигналу сетевой, которая находится в активном состоянии, обеспечиваемая дежурным питанием. Также, нужно настроить Ethernet-контроллер на прием WOL-пакетов. Понадобится еще специальная программа для генерирования WOL-пакета. Такой программой может быть, например, Wakemeonlan или TeamViewer.
Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik
… а также без проброса портов, SSH/telnet и установки сторонних приложений. С любого компьютера, подключённого к интернет и даже с телефона!
Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
Первым делом включаем Wake on LAN в BIOS’е материнской платы, у всех это делается по-своему, у многих включено по умолчанию. На одном из моих ПК даже такой опции нету — всегда включено.
Далее переходим в WinBox и подключаемся к вашему роутеру (если хотите, можете через SSH или через HTTP(S), я всё делаю в WinBox’е). Если открыть текстовую консоль RouterOS и пошарить там в разделе /tool (или в wiki-мануалах), то можно обнаружить утилиту wol со следующим синтаксисом:
Где ifname — имя интерфейса, с которого будет рассылаться волшебный пакет, XX:XX:XX:XX:XX:XX — mac адрес вашего компьютера.
Вроде всё просто, но Winbox с телефона не особо запускается и mac адрес по памяти замучаешься вводить. Можно запускать SSH и отправлять в него одну единственную команду, но это тоже долго и нудно. Используем фаервол!
Напрямую из правил фильтра запускать исполнение команд нельзя, из всех действий нам больше всех подойдёт добавление адреса в address-list, т.к. оно позволяет создать новый объект в операционной системе роутера, доступный из скриптов.
Добавим новое правило для цепочки input и расположим его среди других разрешающих правил этой цепочки. Укажем протокол tcp и dst-port — любой из верхних портов.
Действие выберем add src (можно и dst) to address list, укажем имя листа.
В поле on event напишем простенький скрипт:
Не забываем указать правильный mac, имя интерфейса и адрес-листа. Данный скрипт при обнаружении элементов в адрес-листе выполнит команду, отправляющую магические пакеты на ваш компьютер, после чего удалит запись из адрес-листа.
Для включения вашего компьютера достаточно открыть браузер и перейти на IP вашего микротика, указав порт, который мы задали в правиле фаервола: http://your.router.net:port, после чего фаервол создаёт запись в адрес-листе, задание планировщика обнаружит эту запись, выполнит запуск утилиты wol, и удалит запись из адрес-листа. Проще паренной репы, можем добавить адрес в избранное, чтобы каждый раз не вводить.
Только не забывайте про безопасность, данный способ ничем не защищён и кто угодно может включить Ваш компьютер, зная или подобрав нужный порт. Для защиты можно использовать VPN, port knocking, whitelist или метод Неуловимого Джо — решать Вам. Если Вам требуется включать таким образом по-отдельности несколько компьютеров, создайте соответствующее количество правил на разных портах, каждое из которых будет кидать адреса в свой адрес-лист, скрипт в задании планировщика также размножаем через Ctrl+C, Ctrl+V, либо создаём отдельные задания для каждого — как хотите.
Удалённое управление питанием и перезагрузкой компьютера, при помощи внешнего девайса
Каждый пользователь компьютера сталкивался хотя бы раз в своей жизни с такой ситуацией: ты ушёл к себе на работу, почти доехал до неё и вдруг вспомнил,- что забыл взять со своего личного компьютера какую-то очень важную вещь.
Ехать обратно — опоздаешь на работу. А ведь ситуация может развиваться и гораздо более драматично: допустим, человек поехал куда-то далеко за рубеж, в отпуск, и там ему приходит важный звонок, по результатам которого ему необходимо передать своему визави,- определённые документы. А документы остались дома! А дом находится за границей!
Или вот ещё такая беда: ваш персональный компьютер является мощной графической станцией, на которой установлено множество тяжёлых программ для работы с графикой, программными продуктами. А вы перемещаетесь по городу, имея в руках всего лишь «тонкий» клиент, в виде ноутбука…
Из этого описания становится понятно, что «тонкий» клиент не обладает соответствующей производительностью, для запуска множества высокопрофессиональных программ и проектов. Да и если даже он у вас достаточно мощный, — это в принципе неудобно, каждый раз синхронизировать проекты с «тонким» клиентом. Как быть в описанных выше ситуациях — мы и поговорим в этой статье.
На самом деле, указанная проблема очень легко решается: установкой на ваш персональный компьютер системы удалённого включения/выключения и перезагрузки. Этот подход позволит всегда иметь под рукой всю мощь вашей домашней машины и все необходимые документы, и проекты, хранящиеся на ней.
До начала описания своей разработки, хочу сказать, что конечно, она не является единственно возможным способом для удалённого включения выключенного компьютера. Например, хорошо известна технология Wake-on-LAN. Суть этой технологии заключается в том, что она позволяет включить выключенный компьютер, отправкой специального пакета на его MAC-адрес.
Сетевой адаптер компьютера, поддерживающего Wake-on-LAN, находится в этот момент в режиме пониженного потребления и анализирует все пакеты на него. Если одним из поступающих пакетов окажется так называемый magic packet, сетевой адаптер выдаст сигнал на включение питания компьютера.
Согласно wiki: Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты транспортного уровня, не требующие установки соединения (например, протокол UDP или устаревший IPX). Обычно для Wake-on-LAN пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.
Из минусов данной технологии стоит отметить, что она:
В любом случае, я подумал, что создание девайса, о котором пойдёт дальше речь, будет интересной затеей, так как:
▍ Итак, приступим.
Некоторое время назад, решение указанной проблемы было достаточно затруднённым: необходимо было обладать достаточно высоким уровнем профессионализма и наличием глубоких знаний в области электроники, чтобы собрать требуемое для решения этой задачи устройство.
С появлением платформы Arduino, данная задача существенно облегчилась, однако, она продолжала оставаться достаточно неудобной в своей реализации, ввиду наличия клубка проводов, соединяющих требуемые компоненты, либо, ввиду необходимости покупки соответствующих wi-fi шилдов.
В текущее же время, этот вопрос ещё более облегчился, из-за появления платы espressif esp32. Для тех, кто не знает, это двухъядерный модуль, содержащий множество необходимых для любого самодельщика свойств. В рамках же данного проекта, нас будет интересовать наличие встроенного wi-fi модуля.
Использование этой платы позволит нам легко и просто построить требуемое устройство, не загромождая всё проводами и за достаточно малую цену. Рискну предположить, что суммарная стоимость компонентов нашего решения не превысит 350-400 руб.
Для того, чтобы создать устройство, нам понадобится всего лишь четыре резистора, два мосфет- транзистора и плата esp32.
По набору компонентов, искушённый читатель сразу понял, что мы будем делать: с помощью esp32 мы будем управлять ключами на основе мосфет-транзисторов.
При использовании мосфет-транзистора нужно иметь в виду один нюанс: транзистор должен открыться полностью, если этого не произойдёт, то он в работе будет сильно греться и будет фактически, работать в роли резистора.
В данном конкретном случае, это, конечно, не так важно, так как мы будем коммутировать достаточно малые токи кнопки включения/выключения и reset-a.
Конечно, можно не напрягаться и взять релейные модули для ардуино:
Но это не наш путь и вот почему: а) щелчки реле; б) наклёп контактов; в) высокое энергопотребление релейным модулем.
Оно нам надо? Нет, оно нам не надо 🙂
Так как мы хотим сделать «всё красиво» — мы будем использовать специальные мосфеты с логическим уровнем.
В рамках данного проекта, я выбрал мосфет-транзистор IRLZ44NPBF. У него порог срабатывания от 2 Вольт. То, что надо.
Как собрать ключ на мосфете — можно почитать тут.
По поводу конкретных силовых исполнительных устройств более-менее всё понятно. Однако нам ведь нужно ещё и каким-то образом «рулить» esp32 внешнего интернета!
То есть, задача в общем виде представляется следующей: некий интерфейс из внешнего интернета, зная IP адрес esp32, может отдавать ей команды.
Однако, подключение к устройству, находящемуся в сети за роутером, может стать неудобством, ввиду, как минимум, смены IP адреса у управляемого устройства, после каждой перезагрузки.
Да, вы скажете, что IP на самом деле не меняется, он может поменяться, только если кто-нибудь из домашних тоже подключится к сети, в тот момент, пока esp32 перезагружается, и ей придётся взять другой свободный IP.
Как бы там ни было, но все эти частности не важны, так как данный вопрос можно решить намного проще, чем выяснять какой текущий IP у платы и каким образом его сообщить во внешний интернет: для этого мы будем использовать протокол mqtt. Для тех, кто не сталкивался, вкратце можно сказать, что протокол предназначен для интернета вещей, «умного» дома и не только.
Использование протокола позволяет с лёгкостью обойти проблему прохода за роутер (тут следует сделать оговорку, что мы делаем допущение, что большая часть пользователей интернета, которая выходит в сеть, используя персональные компьютеры, имеют дома wi-fi точку доступа в виде роутера).
❒ В нашем случае, использование протокола будет выглядеть следующим образом:
Значение отправляемых цифр:
0 — «выключить компьютер»;
1 — «включить компьютер»;
2 — «перезагрузить компьютер»;
После того, как сообщение получено платой, она выполняет определённые действия, и отчитывается в другом топике, на который, в свою очередь, подписан смартфон, с которого мы отправили задание. Таким образом, владелец смартфона узнает о том, что плата получила задание и выполнила его.
Как работать с клиентом: при запуске указанного выше mqtt-клиента — мы видим вот это окно. Ничего в нём не меняем, жмём кнопочку «Connect»:

Далее, появится следующее окно, где мы подписываемся на топик, в котором esp32 оставит сообщение о выполнении задания. Для этого жмём Add new topic subscription:

Вводим топик и жмём «Subscribe»:
Топик, на который мы подписались — появился справа, наверху:

Теперь, мы можем ввести топик, в который надо отправить сообщение и собственно, сообщение. И жмём «Publish». Сообщение уехало на esp32, и она отчиталась внизу, о выполнении задания:

То есть, для работы всей системы нужны:
Источник картинки: wikihandbk.com
И работает оно так (текст оттуда же):
Модифицируем её для нашего случая:
Прошивка проекта написана в Arduino IDE и доступна на моём гитхабе.
Пробежимся по основным моментам.
В своей работе мы будем использовать публичный mqtt broker по адресу: broker.hivemq.com:
Вы можете использовать любой другой — это вопрос исключительно предпочтений. Я выбрал этот и он у меня заработал. А так как я обычно иду по пути наименьшего сопротивления (в рамках парадигмы «и так сойдёт!» ), то искать что-то иное не было смысла. Ибо любая минута поиска — воровала у меня время, которое я мог бы с пользой провести, лёжа на диване, с думами о вечном :-))).
Для начала мы в блоке изначальной инициализации переменных указываем порт для подключения к mqtt брокеру, при необходимости — имя пользователя и его пароль(или имя и пароль оставляем пустыми, если брокер публичный — как в нашем случае):
Далее мы указываем два топика, — один из которых для публикации статуса компьютера в данный момент (то есть компьютер включён/выключен, или перезагружается):
Именно туда esp32 выводит строгие и выверенные системные сообщения, о происходящем с компьютером:
Другой, для получения сообщений из внешнего интернета(сюда мы постим со смартфона цифры 0, 1 или 2, в зависимости от которых выключается/включается/перезагружается компьютер):
Для подключения мосфет-транзисторов, я использовал пины, под номерами 19 и 21. Вы можете использовать, в принципе, любые допустимые пины, хорошее описание которых содержится по следующему адресу.
Из ещё одного интересного момента можно рассмотреть следующие три переменные:
В них мы задаем время в миллисекундах, в течение которого наше устройство будет держать нажатой соответствующую кнопку. Данные переменные вам нужно определить самостоятельно, опытным путём(если мои значения не будут работать)- для вашего конкретного компьютера, так как, вероятно, они могут отличаться в вашем конкретном случае. В прошивке значения переменных указаны для моего случая.
Ещё одним любопытным моментом, который некоторые могут не знать, является то, что встроенный в esp32 светодиод привязан к пину, под номером 2. Я решил, что «инженерия инженерией, но и красотень тоже должна быть». Поэтому наша esp-шка будет мигать встроенным светодиодом:
Теперь, что касается питания нашей сборки на esp32: единственный более-менее комфортный способ это осуществить,- запитать нашу сборку от дежурного питания компьютера. Так как наша сборка потребляет совсем немного, её подключение к дежурному питанию не должно вызвать проблемы с невозможностью включения компьютера из-за просадки напряжения.
А далее, когда компьютер включён — можно подключиться к нему, с помощью предварительно настроенных программ удалённого администрирования, удалённого рабочего стола и т.д. и т.п.
Ну, вот на этом кажется и всё. Ещё раз только остановлюсь на том факте, что вся эта идея со сборкой системы для удалённого управления компьютером была продиктована не только, и не столько потребностью в доступе к файлам (потому что, как альтернативу, можно купить в таком случае NAS), а скорее даже необходимостью иметь возможность доступа к своему пулу рабочих программ, которые установлены только на домашнем компьютере.


































