wake_on_lan.py
· 1.5 KiB · Python
Originalformat
import socket
class WakeOnLan:
"""
WOL(Wake on LAN)
"""
def __init__(self, macaddress):
try:
self.macaddress = self.validate_macaddress(macaddress)
self.packet = self.create_magic_packet()
self.broadcast_address = self.get_broadcast_ip()
self.send_magic_packet()
except Exception as e:
print(e)
def validate_macaddress(self, macaddress):
import re
macaddress_validate_pattern = "^(?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2})$"
if re.match(macaddress_validate_pattern, macaddress):
return macaddress
else:
raise ValueError("Incorrect Mac address")
def create_magic_packet(self):
sep = self.macaddress[2]
macaddress_str = self.macaddress.replace(sep, "")
return bytes.fromhex("F" * 12 + macaddress_str * 20)
def get_broadcast_ip(self):
import ipaddress
local_ip = socket.gethostbyname(socket.gethostname())
mask = "255.255.255.0"
broadcast_address = ipaddress.IPv4Network(
local_ip + "/" + mask, False
).broadcast_address
return str(broadcast_address)
def send_magic_packet(self):
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(self.packet, (self.broadcast_address, 7))
# sock.sendto(self.packet, ("255.255.255.255", 7))
mac = "FC-AA-14-B4-4C-18"
foo = WakeOnLan(mac)
| 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) |
| 51 |