[Сценарий] Интеграция Wake On Lan

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Интеграция Wake On Lan

Сообщение Alex » Пт мар 29, 2013 6:48 pm

Понятно. Этот вопрос я как нибудь решу. А в общем, нас можно поздравить — теперь мы умеем включать и выключать компьютеры в локальной сети. И это реально круто. :)

Следующий шаг — как бы поуправлять компьютером в сети. Например, по команде из МДМ запустить программу или скопировать файл на сетевом компьютере?
За это сообщение автора Alex поблагодарил:
димон устин (Ср янв 03, 2018 12:09 am)
Рейтинг: 1.18%
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Интеграция Wake On Lan

Сообщение anemcov » Пт мар 29, 2013 8:36 pm

Есть такая штука для Винды - telnet.
Но там только файловые операции легко даются.
Надо что-то сторонее искать.
Stealth
Сообщения: 1
Зарегистрирован: Ср апр 17, 2013 12:09 pm
Благодарил (а): 0
Поблагодарили: 2 раза

Re: Интеграция Wake On Lan

Сообщение Stealth » Ср апр 17, 2013 12:25 pm

Усовершенствовал код, приведённый в начале топика: подправил дизайн, причесал, вычистил мусор, ссылка для быстрого включения теперь появляется в адресной строке браузера, скрипт не привязан к имени файла скрипта, и для надежности он шлёт сразу 10 Magik Packets, а то UDP не особо надёжен знаете ли, к тому же теперь он распознаёт как формат XX:XX:XX:XX:XX:XX, так и XX-XX-XX-XX-XX-XX в MAC адресе... Делал для себя, ну и заодно с вами поделиться решил. :-)

Код: Выделить всё

<?php

print('<font size=+1><b>Wake On Lan</b></font><br><br>');

$ip_or_host = $_GET['ip_or_host'];
$mac_addres = $_GET['mac_addres'];
$port = $_GET['port'];

print("
<form name=\"forma\" method=\"get\">
<table>
<tr>
<td>IP адрес или Domain Name: </td><td><input type=\"text\" name=\"ip_or_host\" value=\"$ip_or_host\" style=\"width:200px;\"></td>
</tr>
<tr>
<td>MAC адрес: </td><td><input type=\"text\" name=\"mac_addres\" value=\"$mac_addres\" style=\"width:200px;\"></td>
</tr>
<tr>
<td>Порт: </td><td><input type=\"text\" name=\"port\" value=\"$port\" style=\"width:200px;\"></td>
</tr>
</table>
<input type=\"submit\" value=\"Отправить\">
</form>
<a href=\"wol.zip\" target=\"_blank\"><font size=-1 color=black>Source Code</font></a><br><br>");

if($ip_or_host != "" && $mac_addres != "" && $port != ""){

$package = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
$parts_mac = explode('-', $mac_addres);
if($parts_mac[5] == "") $parts_mac = explode(':', $mac_addres);
for ($i = 0; $i < 6; $i++) $transform_mac .= chr(hexdec($parts_mac[$i]));
for ($i = 0; $i < 16; $i++) $package .= $transform_mac;

$wol = fsockopen("udp://$ip_or_host", $port);
for($i = 0; $i < 10; $i++) fwrite($wol, $package);
fclose($wol);

print("<font size=+1 color=blue><b>$i Magic Packets отправлено на адрес $ip_or_host:$port (MAC $mac_addres)</b></font><br><br>
Ссылка для быстрого включения компьютера в дальнейшем находится в адресной строке браузера");

}

?>
За это сообщение автора Stealth поблагодарили (всего 2):
Amarok (Пн окт 17, 2016 6:33 am) • gfyz (Чт ноя 24, 2016 1:00 pm)
Рейтинг: 2.35%
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Интеграция Wake On Lan

Сообщение Urbas81 » Ср апр 17, 2013 12:39 pm

А я воспользовавшись кодом внедрил включение через WOL прямо в интерфейс MDM, у меня есть возможность дистанционно включать 2 компьютера, вот их маки я и забил жестко в код, и теперь только через selectbox выбираю имя и нажимаю кнопку Send. Хотел такую страницу поместить на роутер, но компьютеры почему-то не включались, хотя прав наставил по максимуму.
dmw
Сообщения: 468
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 40 раз
Поблагодарили: 78 раз

Re: Интеграция Wake On Lan

Сообщение dmw » Ср апр 17, 2013 12:51 pm

Зачем все выводить в отдельный php?
Я вот в меню сделал кнопку "Включить" с кодом:

Код: Выделить всё

$ip_or_host ="ххх.ххх.ххх.ххх"; //ip удаленного устройства
$mac_addres ="хх:хх:хх:хх:хх:хх"; //mac удаленного устройства
$port = '7';
$package = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
$parts_mac = explode(':', $mac_addres);  
for ($i=0; $i < 6; $i++) $transform_mac .= chr(hexdec($parts_mac[$i]));
for($i = 1; $i <= 16; $i++) $package .= $transform_mac;
$wol = fsockopen("udp://$ip_or_host", $port);
for($i = 0; $i < 5; $i++) fwrite($wol, $package);
fclose($wol);
и кнопку "Выключить" с кодом (сервер на ubuntu):

Код: Выделить всё

$ip_or_host ="ххх.ххх.ххх.ххх"; //ip удаленного устройства с ОС Windows
shell_exec("net rpc shutdown -f -I $ip_or_host -U '$ip_or_host\login%password'");
Также, как сказал Urbas81, легко и просто можно сделать переключатель с совмещающим в себе эти оба кода и исполнять их то один кусок то другой в зависимости от состояния какойто переменной, например из модуля "Устройства Online".
За это сообщение автора dmw поблагодарил:
gfyz (Вс дек 04, 2016 12:09 pm)
Рейтинг: 1.18%
Vadymkyr
Сообщения: 125
Зарегистрирован: Ср дек 26, 2012 8:33 pm
Откуда: Севастополь
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Интеграция Wake On Lan

Сообщение Vadymkyr » Вс апр 21, 2013 9:45 pm

вот еще нашел статью про удаленное выключение компьютера по сети.
Выключение или перезагрузка компьютеров по сети
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Интеграция Wake On Lan

Сообщение Urbas81 » Вт апр 23, 2013 11:54 am

Никак не получается пробудить компьютер при размещении страницы на роутере, кто подскажет в чем может быть ньюанс, из MDM срабатывает, тот же код при размещении на роутере нет, командой из консоли роутера тоже будится, со страницы никак.
chuk3
Сообщения: 16
Зарегистрирован: Вт мар 15, 2016 4:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Интеграция Wake On Lan

Сообщение chuk3 » Сб мар 19, 2016 11:03 am

dmw писал(а):Зачем все выводить в отдельный php?
Я вот в меню сделал кнопку "Включить" с кодом:

Код: Выделить всё

$ip_or_host ="ххх.ххх.ххх.ххх"; //ip удаленного устройства
$mac_addres ="хх:хх:хх:хх:хх:хх"; //mac удаленного устройства
$port = '7';
$package = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
$parts_mac = explode(':', $mac_addres);  
for ($i=0; $i < 6; $i++) $transform_mac .= chr(hexdec($parts_mac[$i]));
for($i = 1; $i <= 16; $i++) $package .= $transform_mac;
$wol = fsockopen("udp://$ip_or_host", $port);
for($i = 0; $i < 5; $i++) fwrite($wol, $package);
fclose($wol); 
и кнопку "Выключить" с кодом (сервер на ubuntu):

Код: Выделить всё

$ip_or_host ="ххх.ххх.ххх.ххх"; //ip удаленного устройства с ОС Windows
shell_exec("net rpc shutdown -f -I $ip_or_host -U '$ip_or_host\login%password'"); 
Также, как сказал Urbas81, легко и просто можно сделать переключатель с совмещающим в себе эти оба кода и исполнять их то один кусок то другой в зависимости от состояния какойто переменной, например из модуля "Устройства Online".
День добрый!
Пробую ваш код на включение не срабатывает, сторонней програмой включает с этого же компьютера без проблем, причем достаточно мака, сутки бьюсь. Ткните куда смотреть и что можно проверить. Спасибо.
За это сообщение автора chuk3 поблагодарил:
gfyz (Вс дек 04, 2016 1:13 pm)
Рейтинг: 1.18%
Sat
Сообщения: 25
Зарегистрирован: Пт авг 07, 2015 5:08 pm
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Re: Интеграция Wake On Lan

Сообщение Sat » Сб мар 26, 2016 10:18 pm

*fixed*
Zaezd2008
Сообщения: 165
Зарегистрирован: Чт ноя 13, 2014 8:56 pm
Благодарил (а): 23 раза
Поблагодарили: 7 раз

Re: Интеграция Wake On Lan

Сообщение Zaezd2008 » Чт апр 07, 2016 3:52 pm

Для тех, кто прочитав тему до конца так и не понял как выключать комп на Винде удаленно.
1. На компьютере, который хотим выключать. Нажав комбинацию клавиш «Win+R» вводим gpedit.msc
Слева Политика "Локальный компьютер"-«Конфигурация компьютера»-«Конфигурация Windows»-«Параметры безопасности»-«Локальные политики» - «Назначение прав пользователя»-«Принудительное удаленное завершение работы»
Добавляем пользователя, у меня компы в домашней сети, поэтому добавил HomeGroupUser$. если нет домашки, то можно просто Все.
2. Добавляем сценарий, заменив HOST своим:
shell_exec("shutdown -s -f -m \\\HOST -t 60 -d up:125:1");
За это сообщение автора Zaezd2008 поблагодарил:
gfyz (Чт ноя 24, 2016 1:02 pm)
Рейтинг: 1.18%
Ответить