Zuletzt aktiv 10 months ago

這段 Python 程式碼 用於 實現 Wake-on-LAN (WOL),它能透過 網路廣播 (UDP) 發送 Magic Packet,來喚醒遠端電腦(如伺服器或 NAS)。

timmy hat die Gist bearbeitet 10 months ago. Zu Änderung gehen

Keine Änderungen

timmy hat die Gist bearbeitet 10 months ago. Zu Änderung gehen

1 file changed, 50 insertions

wake_on_lan.py(Datei erstellt)

@@ -0,0 +1,50 @@
1 + import socket
2 +
3 +
4 + class WakeOnLan:
5 + """
6 + WOL(Wake on LAN)
7 + """
8 +
9 + def __init__(self, macaddress):
10 + try:
11 + self.macaddress = self.validate_macaddress(macaddress)
12 + self.packet = self.create_magic_packet()
13 + self.broadcast_address = self.get_broadcast_ip()
14 + self.send_magic_packet()
15 + except Exception as e:
16 + print(e)
17 +
18 + def validate_macaddress(self, macaddress):
19 + import re
20 +
21 + macaddress_validate_pattern = "^(?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2})$"
22 + if re.match(macaddress_validate_pattern, macaddress):
23 + return macaddress
24 + else:
25 + raise ValueError("Incorrect Mac address")
26 +
27 + def create_magic_packet(self):
28 + sep = self.macaddress[2]
29 + macaddress_str = self.macaddress.replace(sep, "")
30 + return bytes.fromhex("F" * 12 + macaddress_str * 20)
31 +
32 + def get_broadcast_ip(self):
33 + import ipaddress
34 +
35 + local_ip = socket.gethostbyname(socket.gethostname())
36 + mask = "255.255.255.0"
37 + broadcast_address = ipaddress.IPv4Network(
38 + local_ip + "/" + mask, False
39 + ).broadcast_address
40 + return str(broadcast_address)
41 +
42 + def send_magic_packet(self):
43 + with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
44 + sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
45 + sock.sendto(self.packet, (self.broadcast_address, 7))
46 + # sock.sendto(self.packet, ("255.255.255.255", 7))
47 +
48 +
49 + mac = "FC-AA-14-B4-4C-18"
50 + foo = WakeOnLan(mac)
Neuer Älter