Wake on LAN script

python Python
#!/usr/bin/python
# envoi un packet avec 12 F plus 16 * l'address mac a une addres ip sur n'importe quelle port

import re
import socket
import struct

broadcast = "192.168.1.255"
mac = "30:9C:23:8F:86:6E"
port = 7

# debug
def debug(level, msg):
    print("%s" % msg)

def error(msg):
    debug(0, "ERREUR: %s" % msg)

def info(msg):
    debug(0, "INFO: %s" % msg)

# verification de l'adresse mac
nonhex = re.compile('[^0-9a-fA-F]')
mac = nonhex.sub('', mac)
if len(mac) != 12:
    error("L'adresse mac n'est pas bonne [%s]" % mac)
info("Envois du packet magique a : [%s]" % mac)

# 12 * F coller a 16 (ou +) * l'adresse mac
data = ''.join(['FFFFFFFFFFFF', mac * 16])

# data en binaire
send_data = ''
for i in range(0, len(data), 2):
    tmp_data = struct.pack('B', int(data[i: i + 2], 16))
    send_data = ''.join([send_data, str(tmp_data[0])])

# envoi
try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sock.sendto(send_data, (broadcast, port))
except:
    error("l'envois du packet n'a pas pus etre envoyer")