Tutorial: Creare una Pagina Wake-on-LAN con Bottle in Python

In questo tutorial, esamineremo il codice che hai fornito per creare una semplice pagina web per l’invio di pacchetti Wake-on-LAN (WoL) utilizzando il framework web Bottle in Python. Wake-on-LAN è un meccanismo per risvegliare un computer in remoto mediante l’invio di un pacchetto di rete speciale.

Prerequisiti

Prima di iniziare, assicurati di avere Python installato sul tuo sistema. Puoi installare Bottle usando il seguente comando:

pip install bottle

Inoltre, è necessario avere lo strumento wakeonlan installato. Puoi installarlo con il seguente comando:

pip install wakeonlan

Comprensione del Codice

Andiamo attraverso il codice passo dopo passo.

from bottle import Bottle, request, run
import subprocess

Il codice inizia importando i moduli necessari, inclusi Bottle per il framework web, request per gestire le richieste HTTP e subprocess per eseguire comandi esterni.

app = Bottle()

Qui viene creata un’istanza del framework web Bottle.

@app.route('/')
def home():
    return '''
        <h1>Pagina Wake-on-LAN</h1>
        <form action="/wol" method="post">
            <label for="macAddress">Indirizzo MAC:</label>
            <input type="text" name="macAddress" placeholder="Inserisci l'indirizzo MAC" required>
            <button type="submit">Invia Wake-on-LAN</button>
        </form>
    '''

La funzione home definisce il contenuto della pagina iniziale. Include un semplice modulo HTML con un campo di input per l’indirizzo MAC e un pulsante per inviare il modulo. L’azione del modulo è impostata su /wol, che è il percorso per elaborare la richiesta Wake-on-LAN.

@app.route('/wol', method='POST')
def send_wol():
    mac_address = request.forms.get('macAddress')

    # Sostituisci 'your-wol-command' con il comando effettivo Wake-on-LAN
    wol_command = f'wakeonlan {mac_address}'

    try:
        subprocess.run(wol_command, shell=True, check=True)
        return f'Wake-on-LAN inviato a {mac_address}'
    except subprocess.CalledProcessError as e:
        return f'Errore nell\'invio di Wake-on-LAN: {e}', 500

La funzione send_wol è responsabile per l’elaborazione della richiesta POST quando il modulo viene inviato. Estrae l’indirizzo MAC dai dati del modulo e costruisce il comando Wake-on-LAN usando lo strumento wakeonlan. Il comando viene quindi eseguito utilizzando subprocess.run. Se il comando ha successo, viene restituito un messaggio di successo; altrimenti, viene restituito un messaggio di errore.

if __name__ == '__main__':
    run(app, host='localhost', port=1080)

Infine, lo script verifica se è il modulo principale e avvia il server web Bottle su localhost alla porta 1080 quando viene eseguito.

Testare la Pagina Wake-on-LAN

  1. Salva il codice in un file, ad esempio, wol_server.py.
  2. Apri un terminale e naviga nella directory che contiene lo script.
  3. Esegui lo script con il seguente comando:
python wol_server.py
  1. Apri un browser web e vai su http://localhost:1080 per accedere alla pagina Wake-on-LAN.
  2. Inserisci l’indirizzo MAC del dispositivo di destinazione nel modulo e fai clic sul pulsante “Invia Wake-on-LAN”.
  3. Lo script cercherà di inviare il pacchetto Wake-on-LAN e dovresti vedere un messaggio di successo o errore sulla pagina web.

Congratulazioni! Hai creato una semplice pagina Wake-on-LAN utilizzando il framework web Bottle in Python. Questo può essere uno strumento utile per risvegliare dispositivi sulla tua rete in remoto.

PER AUTOMATIZZARE L’AVVIO DELLO SCRIPT sul SERVER: Automatizzare l’Esecuzione di Script Python con Systemd su Linux

Share your thoughts