Остання активність 10 months ago

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

timmy ревизій цього gist 10 months ago. До ревизії

Без змін

timmy ревизій цього gist 10 months ago. До ревизії

1 file changed, 50 insertions

wake_on_lan.py(файл створено)

@@ -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)
Новіше Пізніше