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