Пробуждение по локальной сети с помощью PythonPython

Программы на Python
Ответить
Anonymous
 Пробуждение по локальной сети с помощью Python

Сообщение Anonymous »

Я пишу приложение для включения систем в сети с использованием функции WakeOnLan.

Я погуглил и смог получить код отсюда. Мой код выглядит следующим образом.
Я также перенаправил порт 9 на своем маршрутизаторе.

Я включил параметры пробуждения по локальной сети для сетевой карты в разделе «Управление питанием». Я следовал инструкциям отсюда

Я установил Wake on Lan Monitor/Sniffer отсюда, чтобы проверить, могу ли я получить волшебный пакет для пробуждения. И система получает волшебные пакеты. Когда я выключаю и запускаю скрипт Python WOL из другой системы (ноутбука) в той же сети, моя система не включается.

Может ли кто-нибудь предложить мне решение.

Мои системы:
Настольный компьютер с Win 8.1, который необходимо вывести из спящего режима по локальной сети.
Ноутбук с Win 8, на котором необходимо запустить приложение и отправить волшебный пакет на рабочий стол. .

Мой IP-адреса локальной сети варьируются от 172.16.0.1 и т. д., поэтому в качестве широковещательного адреса используется 172.16.255.255.

import sys, struct, socket

# Configuration variables
broadcast = ['172.16.255.255']
wol_port = 9

known_computers = {
'mercury' : '00:1C:55:35:12:BF',
'venus' : '00:1d:39:55:5c:df',
'earth' : '00:10:60:15:97:fb',
'mars' : '00:10:DC:34:B2:87',
}

def WakeOnLan(ethernet_address):

# Construct 6 byte hardware address
add_oct = ethernet_address.split(':')
if len(add_oct) != 6:
print "\n*** Illegal MAC address\n"
print "MAC should be written as 00:11:22:33:44:55\n"
return
hwa = struct.pack('BBBBBB', int(add_oct[0],16),
int(add_oct[1],16),
int(add_oct[2],16),
int(add_oct[3],16),
int(add_oct[4],16),
int(add_oct[5],16))

# Build magic packet

msg = '\xff' * 6 + hwa * 16

# Send packet to broadcast address using UDP port 9

soc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
soc.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
for i in broadcast:
soc.sendto(msg,(i,wol_port))
soc.close()

def wol(*macs):
if len(macs) == 0:
print "\n*** No computer given to power up\n"
print "Use: 'wol computername' or 'wol 00:11:22:33:44:55'"
else:
for i in macs:
if i[0] != '/':
if ":" in i:
# Wake up using MAC address
WakeOnLan(i)
else:
# Wake up known computers
if i in known_computers:
WakeOnLan(known_computers)
else:
print "\n*** Unknown computer " + i + "\n"
quit()

if len(macs) == 2:
print "\nDone! The computer should be up and running in a short while."
else:
print "\nDone! The computers should be up and running in a short while."
print

wol('My System MAC address')


Подробнее здесь: https://stackoverflow.com/questions/287 ... ith-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»