2016-09-24 9 views
0

파이썬 스크립트를 실행하여 네트워크의 컴퓨터에 마법 패킷을 보내려고합니다. 그것은 다른 컴퓨터에서 작동하지만 내 자신의 MAC 주소로 스크립트를 실행하려고하면 오류가 발생합니다.WOL MAC 주소가 작동하지 않습니다.

이 10.0.0.129 내 로컬 주소와 30-5A-3A-03-82-AE 내 실제 주소 인 것을 내 파이썬 스크립트

#!/usr/bin/env python 
#Wake-On-LAN 
# 
# Copyright (C) 2002 by Micro Systems Marc Balmer 
# Written by Marc Balmer, [email protected], 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') 

입니다. 내가 스크립트를 실행하려고하면

내가 다시이 오류

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' 

을 얻을, 다른 컴퓨터에서이 문제가 없습니다. 어떤 도움을 주셔서 감사합니다.

답변

0

가에 의해 분리 된 모든 주소에서 작동하지 않습니다 - 때문에이 라인의, ""

addr_byte = ethernet_address.split(':') 

그냥 WakeOnLan('30:5A:3A:03:82:AE')WakeOnLan('30-5A-3A-03-82-AE')을 변경하고 작동, 또는 대신 말한다 라인 변경 :

를 "-"separa로 사용하려는 경우

addr_byte = ethernet_address.split('-') 

addr_byte = ethernet_address.split(':') 

tors.

희망이 도움이됩니다.

+0

오 마이 갓. 나는 너무 어리 석다. 내가 어떻게 보지 못했습니까? 고맙습니다! –