У меня есть сервер Linux в моей локальной сети, который настроен для использования пробуждения по локальной сети. Я скопировал этот сценарий дословно, просто заменив MAC-адрес в примере использования. Когда я запускаю этот скрипт на Mac, сервер просыпается. Когда я запускаю его из Windows 7 (32-битный Ultimate), он ничего не делает (обратите внимание, что скрипт запускается, я добавил debug raw_input () для подтверждения).
2 ответа
Это может быть брандмауэр.
Увидеть:
Откройте порт в брандмауэре Windows
Как настроить брандмауэр Windows в Windows 7
Я редко находил 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')