WOL con Apache2 y CGI
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
.