Bash
Per crear un script en Bash que permeti despertar un equip a través de la xarxa (utilitzant la funcionalitat Wake-on-LAN, o WoL), pots seguir aquests passos. Abans de començar, assegura’t de tenir instal·lades les eines necessàries com ara wakeonlan
.
- Obre un editor de text com ara
nano
ovim
en el teu terminal:
nano desperta.sh
- Ara pots començar a escriure el teu script. Aquí tens un exemple senzill:
#!/bin/bash # Defineix les variables necessàries MAC_ADDRESS="00:11:22:33:44:55" # Adreça MAC de l'equip que vols despertar # Envia el senyal WoL wakeonlan $MAC_ADDRESS echo "S'ha enviat el senyal WoL a $MAC_ADDRESS"
- Desa i tanca l’editor de text. A continuació, fes que el teu script sigui executable:
chmod +x desperta.sh
- Ara pots executar el teu script per despertar l’equip a través de la xarxa:
./desperta.sh
Aquest script simplement envia un senyal WoL a l’adreça MAC especificada, el que farà que l’equip s’aixequi de l’estat de suspensió o apagat. Assegura’t que l’equip que vols despertar tingui l’opció WoL habilitada a la BIOS i que estigui connectat a la xarxa local.
Recorda canviar la variable MAC_ADDRESS
amb l’adreça MAC de l’equip que vols despertar. També, potser hauràs d’instal·lar la comanda wakeonlan
al teu sistema abans d’utilitzar aquest script. Pots fer-ho a través del gestor de paquets del teu sistema.
# ethtool eth1 Settings for eth1: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 9 Transceiver: external Auto-negotiation: on Supports Wake-on: g Wake-on: d Link detected: yes
Activar Wake on Lan
# ethtool -s eth0 wol g
Python
Pots utilitzar el següent script en Python per enviar un paquet màgic (també conegut com a «wake-on-LAN») a una adreça MAC específica:
import socket import struct def send_magic_packet(mac_address, broadcast_ip='255.255.255.255', port=9): # Ens assegurem que la adreça MAC està en el format adequat mac_address = mac_address.replace(':', '').replace('-', '') if len(mac_address) != 12: raise ValueError("Adreça MAC no vàlida") # Convertim la adreça MAC a bytes mac_bytes = bytes.fromhex(mac_address) # Creem el paquet màgic magic_packet = b'\xff' * 6 + mac_bytes * 16 # Creem un socket UDP with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: # Habilitem l'opció de reutilitzar l'adreça s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Enviem el paquet màgic al port de broadcast s.sendto(magic_packet, (broadcast_ip, port)) # Adreça MAC del dispositiu al qual volem enviar el paquet màgic mac_address = "00:11:22:33:44:55" # Adreça IP de la xarxa de l'ordinador des del qual s'enviarà el paquet màgic (opcional) # Si vols enviar el paquet màgic a través d'Internet, has de proporcionar la teva adreça IP externa o l'adreça IP del teu router. #broadcast_ip = '192.168.1.255' # Port pel paquet màgic (per defecte és el port 9) port = 9 # Enviam el paquet màgic send_magic_packet(mac_address)
Aquest script crea un paquet màgic amb la adreça MAC especificada i l’envia a través d’una tramesa UDP a l’adreça de broadcast de la xarxa especificada. Si vols enviar el paquet màgic a través d’Internet, hauràs de modificar la variable broadcast_ip
perquè contingui l’adreça IP externa o l’adreça IP del teu router, i assegurar-te que el teu router està configurat per reenviar paquets màgics a la teva xarxa local.