Ir al contenido principal

MONITORIZANDO LOS SERVICIOS DE UNA MAQUINA LINUX A TRAVES DE ARDUINO



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