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
nanoovimen 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.