A mensagem do ldapsearch está sendo impresso no fluxo stderr , que não está sendo detectado antes do | while
.
Se você estivesse tentando redirecioná-lo com apenas um >
, isso explicaria por que ele não estava funcionando dentro do loop.
Se você deseja capturar a saída de erro do ldapsearch, altere seu script para:
#!/bin/bash
for i in $(seq 20000); do
ldapsearch -x -LLL -D "cn=manager,ou=ft,o=cudb,c=es" \
-w normal -h 10.22.127.4 -p 389 \
-b 'dc=IMSI, ou=identities,ou=ft,o=cudb,c=es' 2>&1 ## <-- added "2>&1" here
done | while IFS= read -r line
do
echo "[---- PL0 ----] $(date) $line";
done >> search_imsi_$(date '+%Y_%m_%d__%H_%M_%S').log ## no need for 2>&1 here
Eu reformatei o script um pouco para facilitar a visualização dos loops e das duas alterações. Como o segundo loop está executando apenas uma instrução echo
(para stdout), não há necessidade de redirecionar o stderr para ele.