[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT] Problema raro, raro... en shell script



Saludos:

Estoy currando en un script alojado en un servidor Debian Squeeze cuya misión es capturar información de uso de disco y volumenes de servidores Windows y cabinas NetApp mediante SNMP (se usan checks de Nagios para lanzar estas consultas).

El problemas es que como la red de la cual obtener estos datos es bastante grande se tiene que lanzar de manera recursiva para todos los hosts, unidades y volumenes que hay definidos en varios ficheros de configuración, para lo cual se ha creado una rutina for para cada check:


# ------------- DECLARACION DE VARIABLES -------------
PATHBASE="/usr/local/bin/reports/capacitat"
TMPBASE="$PATHBASE/tmp"
INCBASE="$PATHBASE/incoming"
CONFBASE="$PATHBASE/etc"
VOLCONF=`cat $CONFBASE/volumes.conf`
EXCLUDECONF="$CONFBASE/exclude.conf"
STORAGEWINBIN="$PATHBASE/bin/check_snmp_storage.pl"
STORAGENETAPPBIN="$PATHBASE/bin/check_netapp_du.pl"
HOSTBIN="$PATHBASE/bin/dynhosts/run.sh"
SNMP="LT1"
WARN_LEVEL="80"
CRIT_LEVEL="95"


##########################################################
## Extraccion y generacion de reports servidores Windows #
##########################################################

# Comprobacion de la existencia de fichero de configuracion 'hosts.conf'.
if [[ -s $CONFBASE/hosts-win_$DATE.conf ]] ; then
        echo "OK. Fichero de configuracion 'hosts-win_$DATE.conf' encontrado"
else
        $HOSTBIN
        HOSTSWIN=`cat $CONFBASE/hosts-win_$DATE.conf`
fi

# Creacion de reports temporales por volumen
for MULTIHOSTSWIN in $HOSTSWIN
do
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[C]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:C: >> $TMPBASE/c.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[D]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:D: >> $TMPBASE/d.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[E]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:E: >> $TMPBASE/e.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[F]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:F: >> $TMPBASE/f.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[G]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:G: >> $TMPBASE/g.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[H]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:H: >> $TMPBASE/h.txt
        $STORAGEWINBIN -H $MULTIHOSTSWIN -C $SNMP -w $WARN_LEVEL -c $CRIT_LEVEL -m ^[I]: | cut -f4 -d ':' | xargs echo $MULTIHOSTSWIN:I: >> $TMPBASE/i.txt
done


######################################################
## Extraccion y generacion de reports cabinas NetApp #
######################################################

# Comprobacion de la existencia de fichero de configuracion 'hosts.conf'.
if [[ -s $CONFBASE/hosts-netapp_$DATE.conf ]] ; then
        echo "OK. Fichero de configuracion 'hosts-netapp_$DATE.conf' encontrado"
else
        $HOSTBIN
        HOSTSNETAPP=`cat $CONFBASE/hosts-netapp_$DATE.conf`
fi

# Creacion de reports temporales por volumen
for MULTIHOSTSNETAPP in $HOSTSNETAPP ; do for MULTIVOLNETAPP in $VOLCONF
do
       $STORAGENETAPPBIN -H $MULTIHOSTSNETAPP -w $WARN_LEVEL -c $CRIT_LEVEL -v $MULTIVOLNETAPP | xargs echo $MULTIHOSTSNETAPP : >> $TMPBASE/netapp.txt
        done
done

Lo raro del caso es que solo se ejecuta el primer for que encuentra en el script, pasando de ejecutar el que encuentra en segundo lugar. Incluso se partido el script en scripts independientes haciendo las llamadas desde el script principal y el comportamiento es el mismo.

Alguna idea o sugerencia? Alguien ve lo que estoy haciendo mal?

Muchas gracias.



-- 
Alfonso <alfonso@gnuino.net>


Reply to: