Como faço para descartar mensagens de falha indesejadas de um comando ssh?

2

Estou tentando evitar a impressão de mensagens no console recebido quando um lun não é encontrado durante um comando ssh. O SSH é para um arquivador NetApp. O comando está sendo executado em um host do Solaris 10.

Aqui estão alguns dos códigos que estou executando:

for filer in <list>
do
echo $filer
ssh $filer lun show <lunpath> |grep vol
...
done

Se o LUN for encontrado, o código funcionará bem, mas se o LUN não for encontrado, o comando SSH retornará "lun show: Nenhum tal LUN existe"

Eu tentei vários comandos grep e egrep, incluindo variantes -v ... mas ainda assim recebo a mensagem "lun show: No such tal LUN exists" impressa no console.

O que tenho que fazer para pular a impressão desta linha para o console?

    
por Gilles 09.06.2016 / 02:43

1 resposta

2

Novos ssh parecem trazer de volta stdout e stderr do host remoto como dois fluxos distintos.

Para criar um filtro que combine stdout e stderr, você poderia fazer:

ssh $filer lun show <lunpath> 2>&1 |grep vol

Para enviar stderr para um arquivo separado, você poderia fazer:

ssh $filer lun show <lunpath> 2>lun.show.stderr |grep vol
if [ -s lun.show.stderr ]; then
   # there was some stderr output
   grep -v "No such LUN exists" lun.show.stderr
fi

Para descartar stderr:

ssh $filer lun show <lunpath> 2>/dev/null | grep vol

Observe que isso pode ocultar erros reais e dificultar a depuração.

    
por 09.06.2016 / 03:14