Ao usar o comando snmpstatus, redirecione qualquer saída do terminal, incluindo 'Timeout: ...' para uma variável

Ao usar o comando snmpstatus, redirecione qualquer saída do terminal, incluindo 'Timeout: ...' para uma variável

Estou executando o bash 5.0.007-1 e o net-snmp 5.8-2 em um Arch Linux atualizado.

Esta linha coleta o status de um dispositivo:

snmpstatus -c public -v1 192.168.1.240

Quando o dispositivo não está ligado, ou seja, o endereço IP acima não existe na rede, o comando acima retorna a saída abaixo para o terminal:

Timeout: No Response from 192.168.1.240

Como faço para interromper a exibição dessa linha de saída de tempo limite no terminal e capturá-la em uma variável. Além disso, se o dispositivo estiver ligado e o endereço IP existir, a saída normal deverá ser exibida no terminal, bem como passar a saída para a mesma variável.

Analisarei a variável assim que a tiver e decidirei o que fazer dependendo de seu conteúdo.

(Eu li bastante man snmpcmd, incluindo man smnpwalke sobre redirecionamento, mas a solução está me escapando).

Responder1

Eu descobri. Em geral, o problema que experimentei foi porque fiz o redirecionamento depois de canalizar a saída do comando

snmpstatus -c public -v1 192.168.1.240

para grep e depois sed, no final de um forro bastante longo. Eu não percebi na época, embora seja muito óbvio agora, que o redirecionamento de qualquer stderr ou stdout deve acontecer imediatamente após o comando associado. Isso é importante porque eu realmente encontrei a solução e a descartei por estranhamente não funcionar, porque tentei redirecionar no final do tubo.

Aqui está como redirecionar o stderr para uma variável

error=$(snmpstatus -c public -v1 192.168.1.240 2>&1)
echo $error

Aqui está uma explicação da sintaxe 0 = stdin 1 = stdout 2 = stderr > = redirect

Portanto 2>1 significa redirecionar stderr para stdout. O & é essencial, portanto, 2>&1deve ser escrito, mas na minha leitura não consegui estabelecer o porquê.

Este Stackoverflowresponderfoi muito útil, e tambémesta página muito bem escrita sobre redirecionamento.

informação relacionada