combina vários ecos iguais para um eco de loop no bash

1

Estou criando um script de monitoramento que analisa os resultados de vários hosts no loop e, em seguida, o OK ou o OK do eco ... Se tudo resultou OK, quero combinar a mensagem com o único OK, caso contrário, OK. Veja o que funciona atualmente:

Script:

for HOST in $HOST1 $HOST2 $HOST2
do
    HEARTBEAT=$(${LDAPSEARCH} -h ${HOST} -p ${PORT} -D "${USER}" -w $${PASS} -b "" -s base "(objectClass=*)" | grep dn: | sed 's/dn:/dn/g')
    if [ $HEARTBEAT = 'dn' ]; then
        echo "ok"
    else
        echo "NOT OK"
    fi
done

Saída:

$OK
$OK
$OK

Outra saída:

$NOT OK
$NOT OK
$NOT OK

Saída desejada:

$OK
else
$NOT OK
    
por Riz 20.08.2017 / 20:53

1 resposta

3

Que tal isso - um pouco de reorganização do seu script:

#!/usr/bin/env bash

for HOST in $HOST1 $HOST2 $HOST2
do
    HEARTBEAT=$(${LDAPSEARCH} -h ${HOST} -p ${PORT} -D "${USER}" -w $${PASS} -b "" -s base "(objectClass=*)" | grep dn: | sed 's/dn:/dn/g')
    if [ ! $HEARTBEAT = 'dn' ]; then
        echo "NOT OK"
        exit 1
    fi
done

echo "ok"

Este script imprimirá um único NOT OK depois de encontrar o primeiro HOST incorreto e imprimirá um único OK se não houver HOSTs incorreto.

    
por 20.08.2017 / 21:02