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.

  1. Obre un editor de text com ara nano o vim en el teu terminal:
nano desperta.sh
  1. 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"
  1. Desa i tanca l’editor de text. A continuació, fes que el teu script sigui executable:
chmod +x desperta.sh
  1. 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.