Servidor casero desde cero (4): Ejecutar y monitorizar “a ciegas”

Está claro que mi servidor casero va a funcionar sin monitor, por si todavía quedaba alguna duda. Sólamente lo tendrá conectado durante el proceso de instalación hasta que no pueda empezar a administrarse remotamente (por ejemplo por SSH).

En este capítulo voy a explicar cómo hacer dos cosas distintas pero procedentes de una misma limitación: el servidor no tiene forma “humana” de comunicarse, es decir: no tiene teclado, ratón ni monitor. En primer lugar cómo iniciar y parar el sistema de vigilancia sin monitor ni teclado y en segundo lugar cómo construir y hacer funcionar un panel de tres leds que indiquen el estado de diversas funciones del servidor, como por ejemplo si está el servidor de vigilancia activado en ese momento o no.

Lo primero es fácil de conseguir de muchas maneras (por ejemplo asignando un botón al mando a distancia) pero me voy a centrar en la que a mí me gusta más. Voy a usar el botón de encendido de la caja para activarlo/desactivarlo. El principal motivo para preferir este método es que es muy sencillo de aplicar y el segundo es que el botón de encender funciona como un pulsador simple (no interruptor) de modo que en un futuro puedo poner ese botón donde yo quiera con tan sólo cablear, o incluso y también posible, hacer un pulsador inalámbrico codificado para apagar el sistema de vigilancia antes de entrar por la puerta.

Para poner en práctica esta parte sólo tenemos que decirle al demonio acpid (que en Debian Lenny y la mayoría de distribuciones corre por defecto) que cambie la función a realizar para el botón de pulsado de encendido. Para ello sólo tenemos que editar el archivo “/etc/acpi/events/powerbtn-acpi-support” en el que encontraremos algo parecido a esto:

event=button[ /]power
action=/etc/acpi/powerbtn-acpi-support.sh

La primera línea especifica a qué botón (o evento acpi) se hace referencia y la segunda especifica el comando que se va a ejecutar al pulsar el botón de encendido. En mi caso lo he dejado así:

event=button[ /]power
action=/usr/bin/activar-seguridad

El ejecutable “activar-seguridad” es un script escrito en bash cuya función es iniciar o parar el servidor de vigilancia según se vaya ejecutando sucesivamente. En adición, también establece para la ejecución un retardo de 10 segundos para que me dé tiempo a salir de la casa y se active cuando ya haya salido. Como no hay ninguna forma de saber si el pulsar el botón está funcionando puesto que el servidor no tiene monitor, este script también emite un sonido diferente según se active o se desactive el sistema de vigilancia. El script es el siguiente:

#!/bin/bash
if [ ! -e "$PWD/.exist" ]; then
       touch .exist
       sleep 5
       aplay /media/quetzal/Security/Sonidos/bang_2.wav
       echo "Activando vigilancia"
       /etc/init.d/motion/start
else
       aplay /media/quetzal/Security/Sonidos/bang_1.wav
       echo "Desactivando vigilancia"
       /etc/init.d/motion stop
       rm .exist
fi

Ahora vamos con nuestros tres leds indicadores…

Básicamente el propósito de los tres leds es el de aportar información sobre qué está pasando en el sistema sobre algún aspecto. A mí el tema que más me importaba era que uno de los leds “me dijera” si el servidor de vigilancia está activo o no. Esto por ejemplo es muy útil cuando conviven varias personas en la misma casa no sentirse observado al tener la duda constante de si las cámaras están funcionando en un determinado momento o no. Vamos, algo muy parecido al indicador luminoso de “on air” (en el aire) de los estudios de grabación. Y los dos leds restantes se pueden usar para indicar otras dos cosas como por ejemplo si hay alertas pendientes, etc…

Como yo no tengo ni puñetera idea de electrónica, no voy a comprar cables, resistencias y leds para montarme un circuito y programarlo para controlarlo con el servidor. Haré algo mucho más sencillo pero igualmente efectivo. Dado que con el programita ledcontrol (presente en todas las distribuciones) puedo controlar casi a mi antojo los leds de cualquier teclado, voy a usar el circuito ya fabricado de un teclado como indicador. Para ello sólo tengo que desmontar con cuidado un teclado USB viejo (o comprar uno barato que se consigue por menos de 10€) para quedarme sólo con el cable y el circuito (en la foto de más abajo) desechando la carcasa, las teclas y la membrana. Luego ya entra en la habilidad y la creatividad de cada uno hacer un panel para que esos leds queden más presentables que en un mero circuito “desnudo”.

El motivo de elegir un teclado USB es que el conector se puede adaptar tanto a un puerto USB externo de la caja como interno de la placa base (ideal para integrarlo en una caja a medida) al contrario que el PS/2, que sólo se puede conectar por fuera.

He investigado poco sobre este programa, del que no existe más que la página man (no he encontrado ninguna guía en ningún sitio) y me consta que tiene más posibilidades de las que yo voy a nombrar. Pero para mi caso me basta lo siguiente referencia:

Para encender mayúsculas

# ledcontrol anim C

Para apagar la mayúsculas

# ledcontrol anim c

Encender el bloqueo numérico

# ledcontrol anim N

Apagar bloqueo numérico

# ledcontrol anim n

También podemos encender o apagar simultáneamente varios leds. Por ejemplo para encender el bloqueo de mayúsculas y el bloqueo numérico de una vez, podemos hacer:

# ledcontrol anim NC

El encendido simple en mi caso no ha funcionado con el led de bloqueo de desplazamiento (el primero por la derecha o scroll lock). Al hacer ledcontrol anim S, que sería el comando para ello, sólo consigo que se encienda durante una décima de segundo y no sé bien por qué. De modo que este led sólo puedo (o sólo sé) usarlo con el modo parpadeante así:

# ledcontrol set s9 blink 500

La cifra 500 son los milisegundos de frecuencia del parpadeo y son totalmente intercambiables. Cambiando s9 por n9 o c9 podemos aplicar el parpadeo al led de bloqueo numérico o el de mayúsculas respectivamente. Y como en el anterior caso, también podemos aplicar el parpadeo a varios leds al mismo tiempo, como en el siguiente ejemplo donde se lo aplicamos a los tres al mismo tiempo:

# ledcontrol set n9c9s9 blink 150

Lo malo de este último ejemplo es que el parpadeo no es reversible. De modo que si pongo a parpadear el bloqueo numérico, ya no puedo dejarlo fijo o apagarlo, sólo puedo volver a aplicar parpadeo con una frecuencia distinta. Ahora mismo desconozco si es una limitación o es que yo no he sabido hacerlo.

Por tanto, al final he decidido usar el led de bloqueo de desplazamiento (el cual no podía usar de otra manera que no fuera parpadeando) para indicar que el servidor de vigilancia está activo y los otros dos leds para otras dos funciones aún no decididas pero que pueden ser de lo más diverso (por ejemplo para indicar que un disco duro ha sobrepasado un porcentaje de su capacidad). Además, el uso de ledcontrol funciona tanto en consola como en X y sólo afecta a los leds y no interfiere en absoluto en las funciones de bloqueo numérico, bloqueo de mayúsculas o bloqueo de desplazamiento, es decir, si se pone a parpadear el led de bloqueo numérico, no quiere decir que se esté activando y desactivando contínuamente.

1 comments On Servidor casero desde cero (4): Ejecutar y monitorizar “a ciegas”

Dejar una respuesta:

Tu dirección de correo no será publicada

Pie del sitio