import socket import struct def send_wol_packet(mac_address, ip_address='255.255.255.255', port=9): """ Elküld egy Wake-on-LAN "magic packet"-et. :param mac_address: A felébresztendő eszköz MAC-címe (pl. "AA:BB:CC:DD:EE:FF" vagy "AABBCCDDEEFF"). :param ip_address: A cél IP-cím (általában broadcast cím a helyi hálózaton). Alapértelmezett: '255.255.255.255' :param port: A cél port (általában 7 vagy 9). Alapértelmezett: 9 """ if len(mac_address) == 12: pass elif len(mac_address) == 17: mac_address = mac_address.replace(':', '').replace('-', '') else: raise ValueError("Érvénytelen MAC-cím formátum. Használj 'AABBCCDDEEFF' vagy 'AA:BB:CC:DD:EE:FF' formátumot.") # A "magic packet" felépítése: 6 bájt FF, majd 16-szor a MAC-cím data = b'FFFFFFFFFFFF' + (bytes.fromhex(mac_address) * 16) # UDP socket létrehozása sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # Broadcast engedélyezése try: sock.sendto(data, (ip_address, port)) print(f"WOL csomag elküldve a {mac_address} MAC-címre a {ip_address}:{port} címre.") except Exception as e: print(f"Hiba történt a WOL csomag küldésekor: {e}") finally: sock.close() # Példa használat: if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Használat: python wakeonlan.py [IP_CÍM] [PORT]") sys.exit(1) mac_address = sys.argv[1] ip_address = sys.argv[2] if len(sys.argv) > 2 else '255.255.255.255' port = int(sys.argv[3]) if len(sys.argv) > 3 else 9 send_wol_packet(mac_address, ip_address, port)