Bueno , esta vez el invento se trata de un aparatito con unos leds que nos dicen si un servicio linux esta caído o arriba. Como una consola de control para saber que todo esta bien.
La programación consta de dos partes , el sketch de arduino que procesa los valores recibidos por el usb y un pequeño script que alojamos en la maquina linux que le proporciona esa información.
CODIGO ARDUINO DE EJEMPLO PARA UN SERVICIO A MONITORIZAR:
int led1_rojo = 2;// Nombramos el pin al que hemos conectado el LED
int led1_verde = 3;
int led2_rojo = 4;
int led2_verde = 5;
int led3_rojo = 6;
int led3_verde = 7;
int bot_ACT = 8;
int bot_SEL = 9;
int bot_KEY = 10;
int incoming ;
String cadena = "" ;
void setup () {
pinMode(led1_rojo, OUTPUT);// Declaramos el pin del LED como salida
pinMode(led1_verde, OUTPUT);// Declaramos el pin del LED como salida
pinMode(led2_rojo, OUTPUT);// Declaramos el pin del LED como salida
pinMode(led2_verde, OUTPUT);// Declaramos el pin del LED como salida
pinMode(led3_rojo, OUTPUT);// Declaramos el pin del LED como salida
pinMode(led3_verde, OUTPUT);// Declaramos el pin del LED como salida
pinMode(bot_ACT, INPUT);
pinMode(bot_SEL, INPUT);
pinMode(bot_KEY, INPUT);
digitalWrite(led1_rojo, HIGH);// Encendemos el LED
digitalWrite(led2_rojo, HIGH);
digitalWrite(led3_rojo, HIGH);
digitalWrite(led1_verde, LOW);
digitalWrite(led2_verde, LOW);
digitalWrite(led3_verde, LOW);
delay (500);//Tiempo que está encendido el led
digitalWrite(led1_rojo, LOW);// Encendemos el LED
digitalWrite(led2_rojo, LOW);
digitalWrite(led3_rojo, LOW);
digitalWrite(led1_verde, HIGH);
digitalWrite(led2_verde, HIGH);
digitalWrite(led3_verde, HIGH);
delay (500);
digitalWrite(led1_verde, LOW);
digitalWrite(led2_verde, LOW);
digitalWrite(led3_verde, LOW);
Serial.begin(9600);
delay (2000);
}
void loop () {
if (Serial.available() > 0) {
incoming = Serial.read();
cadena = cadena + char(incoming);
if (cadena == "squid activo"){
digitalWrite (led2_verde , HIGH);
cadena = "";
}
if (cadena == "squid caido"){
digitalWrite (led2_rojo , HIGH);
cadena = "";
}
if (incoming == 10 || incoming == 13) {
cadena = "";
Serial.flush();
}
}
delay (15000);
Serial.println ("check.sh");
digitalWrite(led1_rojo, LOW);
digitalWrite(led2_rojo, LOW);
digitalWrite(led3_rojo, LOW);
digitalWrite(led1_verde, LOW);
digitalWrite(led2_verde, LOW);
digitalWrite(led3_verde, LOW);
} //FIN DE LOOP
SCRIPT BASH PARA MANDAR LOS VALORES:
#!/bin/bash
#echo "iniciando el comprobador de servicios"
VAR=$(ls /dev/ttyUSB* | grep ttyUSB)
echo $VAR
stty -F $VAR 9600 -parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
cups=`ps awx | grep 'cups' |grep -v grep|wc -l`
if [ $cups == 0 ]; then
echo "cups caido" > $VAR
else
echo "cups activo" > $VAR
fi
squid=`ps awx | grep 'squid' |grep -v grep|wc -l`
if [ $squid == 0 ]; then
echo "squid caido" > $VAR
else
echo "squid activo" > $VAR
fi
hostapd=`ps awx | grep 'hostapd' |grep -v grep|wc -l`
if [ $hostapd == 0 ]; then
echo "hostapd caido" > $VAR
else
echo "hostapd activo" > $VAR
fi