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

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

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

alex.frost
Сообщения: 20
Зарегистрирован: Пн июл 30, 2018 8:45 am
Благодарил (а): 29 раз
Поблагодарили: 0

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

Сообщение alex.frost » Ср сен 12, 2018 10:55 pm

Друзья, подскажите пожалуйста, в чем ошибка?
Пытаюсь с raspberry разбудить mac os. Утилиту wakeonlan на малину установил. Пока пробую напрямую через ssh, но получаю вот такой ответ:
2018-09-12 22.49.43.jpg
2018-09-12 22.49.43.jpg (29.39 КБ) 5469 просмотров
Raspberry Pi3B+ 3_3.4
Аватара пользователя
Stan
Сообщения: 81
Зарегистрирован: Вт фев 13, 2018 2:37 am
Благодарил (а): 11 раз
Поблагодарили: 8 раз

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

Сообщение Stan » Сб окт 27, 2018 6:05 pm

А как можно включить режим гибернации, а не полностью выключить удаленный компьютер? Для выключения сейчас использую shell_exec("shutdown /s /f /m \\\\192.168.1.10 /t 1");, но дело в том, что включить его уже из этого состояния удаленно не получается. А команда вида shell_exec("shutdown /h /f /m \\\\192.168.1.10 /t 1"); результатов не дает.

UPD: В итоге сделал через getURL.
По совету skysilver поставил это https://blog.instalator.ru/archives/47 на комп, который надо выключить, добавил в нее ссыль на shutdown.exe с параметром -h, в МД сделал сценарий с кодом:

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

getURL('http://192.168.1.10:8870/?cmd=hiber');
По итогу рабочий комп с панели управления МД легко и непринужденно уходит в гибернацию, из которой потом так же легко просыпается кодом (который я весь и полностью спер из сценариев у sergejey):

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

//
if (!isset($params['mac'])) {
 $mac='ТУТ_MAC;
 } else {
 $mac=$params['mac'];
}

if (!function_exists('magicPacke')) {
 

function magicPacket($mac,$addr='255.255.255.255',$socket_number=7) {

	//split up the mac address based upon the colons in the string
        $addr_byte = explode(':', $mac);
        $hw_addr = '';

	for ($a=0; $a <6; $a++) 
		$hw_addr .=chr(hexdec($addr_byte[$a])); //convert the hex to its decimal equivalent, encode as a character, and repeat 16 times
        
        $msg = str_repeat(chr(255),6); //FF in decimal is 255, which is then encoded as a char as with our mac address
	for ($a = 1; $a <= 16; $a++) 
		$msg .= $hw_addr;

        $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);  //create our socket

        if ($s == false) {
                        echo "Error creating socket!\n";
                        echo "Error code is '".socket_last_error($s)."'- " . socket_strerror(socket_last_error($s));
                        return false;
          }

        else {
          // setting a broadcast option to socket:
          //$opt_ret = socket_set_option($s, 1, 6, TRUE);
          $opt_ret = socket_set_option($s,SOL_SOCKET,SO_BROADCAST,true);
          if($opt_ret <0) {
            echo "setsockopt() failed, error: " . strerror($opt_ret) ."\n";
            return false;
            }
 	  if(socket_sendto($s, $msg, strlen($msg), 0, $addr,$socket_number)) {
            socket_close($s);
            return true;
            }

          else {
            return false;
            }
          }
        }
 }

magicPacket($mac);
Screenshot_4.png
Screenshot_4.png (13.42 КБ) 5307 просмотров
За это сообщение автора Stan поблагодарил:
webms (Сб ноя 10, 2018 3:30 pm)
Рейтинг: 1.16%
deemjd
Сообщения: 58
Зарегистрирован: Чт сен 13, 2018 10:20 pm
Благодарил (а): 30 раз
Поблагодарили: 4 раза

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

Сообщение deemjd » Чт ноя 08, 2018 11:55 pm

Для тех у кого WOL не работает. Пробуйте сменить порт с 7 на 9.
Вообще, 9 для WOL - классика. Не знаю почему везде 7 суют.
У меня на матери Asrock заработало только на 9 порту. Wireshark тоже по умолчанию в пресете WOL,порт 7 не слушает
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Чт ноя 15, 2018 10:37 am

Бывает комп не просыпается после выключения из винды. Решение есть- нужно обновить драйвер сетевой карты. Более подробно описал ситуацию в теме модуля WakeOnLan
http://majordomo.smartliving.ru/forum/v ... =wakeonlan
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
vinipuh81
Сообщения: 1
Зарегистрирован: Чт апр 25, 2019 12:32 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение vinipuh81 » Чт апр 25, 2019 2:19 pm

Доброго дня! скажите пожалуйста а хоть один из методов представленных тут выводит компьютер из состояния "G3" (полное обесточивание)?
Кстати пользуюсь вот таким скриптом. Он взят с японского сайта https://poga.jp/?p=182
@echo off
:: Wake On Lan????????
:: ??OS:Windows7??

:: ?vMAC??????/2??????????????????????
set MacAd=AB-CD-EF-12-34-56
:: ?^??????????

:: ??????????????????????
set MacAd=%MacAd:-=:%

:: ??MAC?????WakeOnLan(????????????)
powershell "$dst=[byte[]]("""%MacAd%""".split(""":""") | ForEach-Object{[Convert]::ToInt32($_, 16)});$magicPacket=([byte[]](@(0xFF)*6)) + $dst * 16;$client=new-object System.Net.Sockets.UdpClient;$target=[System.Net.IPAddress]::Broadcast;$client.Connect($target,9);$client.Send($magicPacket,$magicPacket.Length)|out-null;$client.Close()"

:: ???pause?????????????????????????????
echo;
echo ??MAC?????%MacAd%??WOL??????????
echo ^(??WOL?????????????????^)
echo;
pause
exit /b 0
Dimonopera
Сообщения: 91
Зарегистрирован: Чт окт 04, 2018 10:12 am
Благодарил (а): 23 раза
Поблагодарили: 13 раз

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

Сообщение Dimonopera » Сб июл 20, 2019 8:25 pm

Промучился пол дня и все таки добился. В общем вдруг кому пригодится. Выключаемый компьютер Win7. Если при выполнении команды shutdown через командную строку появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам. Для этого нужно Открыть редактор реестра (regedit.exe)
1. Перейти в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
2. Создать новый параметр типа DWORD (32-bit) с именем LocalAccountTokenFilterPolicy
3. Установить значение параметра LocalAccountTokenFilterPolicy равным 1
Ну или просто выполнить команду от имени администратора
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

Выключение должно по команде сработать сразу при условии, что разрешено удаленное принудительное выключение и отключен доступ с парольной защитой.
Volter5000
Сообщения: 38
Зарегистрирован: Пн мар 27, 2017 12:33 am
Откуда: ДНР, Донецк
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение Volter5000 » Вт ноя 26, 2019 10:51 pm

Подскажите пожалуйста, есть ли простой способ выключать ПК на линуксе удаленно. Есть ноутбук подключенный к МД серверу по воздуху. Задумка следующая: по команде "я пошел спать" МД опрашивает состояние датчиков и выключает все лишнее, в том числе ноутбук. Нашел сдесь решение но оно слишком сложное, может кто знает однострочное решение для подобной задачи. Заранее спасибо.
Ответить