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")