Computer/Netzwerkgerät im Ruhe-/Sleepmodus mit MAC-Addresse 00:01:03:04:05:06 im Subnetz 192.168.2/24 wird durch senden eines Wake-on-LAN-Datenpakets an die SubNetzbroadcast-IPAdresse ‚aufgeweckt‘.
einfach mit fester MAC-Adresse im Script:
#!/usr/bin/env python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto('\xff'*6 + '\x00\x01\x03\x04\x05\x06'*16, ('255.255.255.255', 9))
dynamisch mit MAC-Adresse als commandline-Argument:
#!/usr/bin/env python
# Dateiname: wakeOnLan.py
import re, socket, struct, sys
def main():
if len(sys.argv) != 2 or sys.argv[1] == '-h' or sys.argv[1] == '--help':
print("Syntax:\n\twakeOnLan.py \n")
print("Die MAC-Adresse kann folgende Ausprägungen haben:")
print("\t00:01:02:03:04:05\n\t00-01-02-03-04-05\n\t000102030405\n")
sys.exit(1)
arg = sys.argv[1]
if len(arg) == 12:
mac = arg
elif len(arg) == 17:
mac = arg.replace(arg[2], '')
else:
print("FEHLER: MAC-Adresse hat nicht die korrekte Länge")
sys.exit(1)
if not re.search('[0-9a-fA-F]{12}', mac):
print("FEHLER: ungültige MAC-Addresse")
sys.exit(1)
mp = ''.join(['FF' * 6, mac * 16])
send_data = ''
for i in range(0, len(mp), 2):
send_data = ''.join([send_data, struct.pack('B', int(mp[i: i + 2], 16))])
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(send_data, ("255.255.255.255", 9))
# quit python script
sys.exit(0)
if __name__ == '__main__':
main()