-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.py
More file actions
56 lines (43 loc) · 1.46 KB
/
script.py
File metadata and controls
56 lines (43 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import socket
import struct
import os
import sys
from dotenv import load_dotenv
#Script para ligar/desligar PC remoto via WoL e SSH
load_dotenv()
MAC_ADDR = os.getenv("MAC_ADDR")
LINUX_IP = os.getenv("LINUX_IP")
USER = os.getenv("USER")
#Funcao para enviar o pacote magico WoL
#WOL = Wake on LAN
def wake_on_lan(mac_address):
mac_bytes = bytes.fromhex(mac_address.replace(':', '').replace('-', ''))
magic_packet = b'\xff' * 6 + mac_bytes * 16
# Envia pacotes via UDP para ligar o PC remoto
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(magic_packet, ("255.255.255.255", 9))
print(f"[!] Pacote Magico enviado para {mac_address}")
#Funcao para desligar o PC remoto via SSH
def shutdown_remote():
print(f"[!] Enviando comando de desligamento para {LINUX_IP}...")
# Usa o cliente SSH nativo do Windows
os.system(f"ssh {USER}@{LINUX_IP} \"shutdown -h now\"")
#Funcao principal com menu interativo
def main():
while True:
print("\n--- CONTROLE PAULINLX ---")
print("1. Ligar (WoL)")
print("2. Desligar (SSH)")
print("3. Sair")
choice = input("Opcao: ")
if choice == '1':
wake_on_lan(MAC_ADDR)
break
elif choice == '2':
shutdown_remote()
break
elif choice == '3':
sys.exit()
if __name__ == "__main__":
main()