У меня есть сервер Linux в моей локальной сети, который настроен для использования пробуждения по локальной сети. Я скопировал этот сценарий дословно, просто заменив MAC-адрес в примере использования. Когда я запускаю этот скрипт на Mac, сервер просыпается. Когда я запускаю его из Windows 7 (32-битный Ultimate), он ничего не делает (обратите внимание, что скрипт запускается, я добавил debug raw_input () для подтверждения).

2 ответа2

0

Я редко находил WOL надежным даже для машин, которые были сертифицированы EPA Energy Start.

В некоторых случаях, в зависимости от того, обрабатывает ли драйвер устройства WOL или BIOS или что-то среднее, MAC-адрес чувствителен к регистру. Попробуйте отправить два кадра, один в верхнем регистре и один в нижнем. Вызовите WakeOnLan('0a:1b:f5...') во второй раз.

Это MAC для PowerPC или Intel? Может быть ошибка Big-Endian против Little-Endian, когда преобразование в сетевой формат байтов не выполняется. Следовательно, MAC-адрес не распознается получателем. Поэтому вместо получения 0A:1B:F5:... он получает A0:B1:5F:...

Снова вставьте третий и четвертый MAC-адрес в скрипт:

WakeOnLan('0A:1B:F5:...')  
WakeOnLan('A0:B1:5F:...')  

Что заставило меня задуматься об этом - у меня HPdc7800 с Intel vPro. Большая часть идентифицирующей информации отображается в обратном направлении в каждом байте в зависимости от того, что я использую для просмотра MAC или GUID. На консоли vPro, с веб-страницы vPro, с использованием BIOS и ОС - очень сложно предварительно выделить активный каталог компьютера по GUID.

Чтобы отредактировать этот скрипт и добавить следующее:

WakeOnLan('uppercase and big endian')  
WakeOnLan('uppercase and little endian')  
WakeOnLan('lowercase and big endian')  
WakeOnLan('lowercase and little endian')  

В сценарии пример беззаботен независимо от того, явно ли определен весь байт или нет, игнорируя любые начальные нулевые байты. Я бы явно ввел ведущие нули. Кто знает, кто написал код, который NIC использует для идентификации себя и на каком уровне микропрограммы управления, простого BIOS или драйвера устройства его обрабатывают.

WakeOnLan('0:3:93:81:68:b2') 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .