WOL MAC 地址不工作
WOL MAC Address not working
我正在尝试 运行 一个 python 脚本来向我网络上的计算机发送一个魔法数据包。它适用于其他计算机,但是当我尝试使用我自己的 MAC 地址 运行 脚本时,我收到错误消息。
这是我的python脚本
#!/usr/bin/env python
#Wake-On-LAN
#
# Copyright (C) 2002 by Micro Systems Marc Balmer
# Written by Marc Balmer, marc@msys.ch, http://www.msys.ch/
# This code is free software under the GPL
import struct, socket
def WakeOnLan(ethernet_address):
# Construct a six-byte hardware address
addr_byte = ethernet_address.split(':')
hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
int(addr_byte[1], 16),
int(addr_byte[2], 16),
int(addr_byte[3], 16),
int(addr_byte[4], 16),
int(addr_byte[5], 16))
# Build the Wake-On-LAN "Magic Packet"...
msg = b'\xff' * 6 + hw_addr * 16
# ...and send it to the broadcast address using UDP
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(msg, ('10.0.0.129', 9))
s.sendto(msg, ('10.0.0.129', 7))
s.close()
# Example use
WakeOnLan('30-5A-3A-03-82-AE')
10.0.0.129 是我的本地地址,30-5A-3A-03-82-AE 是我的物理地址。
当我尝试 运行 脚本时出现此错误
Traceback (most recent call last):
File "C:\xampp\htdocs\wol\wolme.py", line 35, in <module>
WakeOnLan('30-5A-3A-03-82-AE')
File "C:\xampp\htdocs\wol\wolme.py", line 15, in WakeOnLan
hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
ValueError: invalid literal for int() with base 16: '30-5A-3A-03-82-AE'
同样,没有其他计算机有此问题。任何帮助表示赞赏。
它不适用于任何以“-”分隔的地址,因为这一行:
addr_byte = ethernet_address.split(':')
只需将 WakeOnLan('30-5A-3A-03-82-AE')
更改为 WakeOnLan('30:5A:3A:03:82:AE')
即可,或者更改以下行:
addr_byte = ethernet_address.split(':')
和
addr_byte = ethernet_address.split('-')
如果您想使用“-”作为分隔符。
希望对您有所帮助!
我正在尝试 运行 一个 python 脚本来向我网络上的计算机发送一个魔法数据包。它适用于其他计算机,但是当我尝试使用我自己的 MAC 地址 运行 脚本时,我收到错误消息。
这是我的python脚本
#!/usr/bin/env python
#Wake-On-LAN
#
# Copyright (C) 2002 by Micro Systems Marc Balmer
# Written by Marc Balmer, marc@msys.ch, http://www.msys.ch/
# This code is free software under the GPL
import struct, socket
def WakeOnLan(ethernet_address):
# Construct a six-byte hardware address
addr_byte = ethernet_address.split(':')
hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
int(addr_byte[1], 16),
int(addr_byte[2], 16),
int(addr_byte[3], 16),
int(addr_byte[4], 16),
int(addr_byte[5], 16))
# Build the Wake-On-LAN "Magic Packet"...
msg = b'\xff' * 6 + hw_addr * 16
# ...and send it to the broadcast address using UDP
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(msg, ('10.0.0.129', 9))
s.sendto(msg, ('10.0.0.129', 7))
s.close()
# Example use
WakeOnLan('30-5A-3A-03-82-AE')
10.0.0.129 是我的本地地址,30-5A-3A-03-82-AE 是我的物理地址。
当我尝试 运行 脚本时出现此错误
Traceback (most recent call last):
File "C:\xampp\htdocs\wol\wolme.py", line 35, in <module>
WakeOnLan('30-5A-3A-03-82-AE')
File "C:\xampp\htdocs\wol\wolme.py", line 15, in WakeOnLan
hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
ValueError: invalid literal for int() with base 16: '30-5A-3A-03-82-AE'
同样,没有其他计算机有此问题。任何帮助表示赞赏。
它不适用于任何以“-”分隔的地址,因为这一行:
addr_byte = ethernet_address.split(':')
只需将 WakeOnLan('30-5A-3A-03-82-AE')
更改为 WakeOnLan('30:5A:3A:03:82:AE')
即可,或者更改以下行:
addr_byte = ethernet_address.split(':')
和
addr_byte = ethernet_address.split('-')
如果您想使用“-”作为分隔符。
希望对您有所帮助!