Creación de la página web

Creamos y editamos el fichero index.html con el texto que sigue y –suponiendo el empleo del servidor http apache2– lo situamos en la dirección correspondiente. Para ello ejecutamos nano /var/www/index.html

<html><head></head><body>
<form method="get" action="/cgi-bin/wake-on-lan.cgi">
    <button type="submit">Wake-on-LAN</button>
</form>
</body></html>

Edición de archivos de configuración apache2

Editamos el archivo de configuración con el comando siguiente sudo nano /etc/apache2/sites-available/default modificando el apartado correspondiente para que quede tal y como se muestra a continuación.

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
	AllowOverride None
	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
	Order allow,deny
	Allow from all
</Directory>

Creación del script cgi

Creamos un archivo mediante sudo nano /usr/lib/cgi-bin/wake-on-lan.cgi

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html><head><title>Bash as CGI"
echo "</title></head><body>"
echo "<h1>Wake on LAN</h1>"
echo ""
echo "<pre> $(sudo etherwake -i eth0 ff:ff:ff:ff:ff:ff)</pre>"
echo "<center>Information generated on $(date)</center>"
echo "</body></html>"

La parte que ejecuta el wol es el comando sudo etherwake -i eth0 ff:ff:ff:ff:ff:ff cambiando las efes por la mac del la nic del ordenador a despertar.

Dar permisos

Para que lo anterior funcione, ya que etherwake necesita ser ejecutado como superusuario, será necesario añadir la siguiente línea ejecutando el comando sudo visudo para no solicitar contraseña al usuario www-data para ejecutar el comando etherwake como superusuario.

www-data ALL=(ALL) NOPASSWD: /usr/sbin/etherwake

Ahora solo es necesario levanta el servidor apache2 sin no lo está ya mediante sudo service apache2 start y meter la ip del localhost 127.0.0.1 en nuestro navegador preferido. Ejemplo: lynx localhost.