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 <alfo...@gnuino.net>


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/3367454.228.1378808153738.javamail.r...@gnuino.net

Responder a