Скрипт Wakeup on LAN работает с Mac, но не с Windows 7

787

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

0

2 ответа на вопрос

0
harrymc
+1. Да, скорее всего скрипт был остановлен брандмауэром Anotomix 13 лет назад 0
0
rjt

Я редко находил 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')