Cuando utilice el comando snmpstatus, redirija cualquier salida del terminal, incluido 'Tiempo de espera: ...' a una variable

Cuando utilice el comando snmpstatus, redirija cualquier salida del terminal, incluido 'Tiempo de espera: ...' a una variable

Estoy ejecutando bash 5.0.007-1 y net-snmp 5.8-2 en un Arch Linux actualizado.

Esta línea recoge el estado de un dispositivo:

snmpstatus -c public -v1 192.168.1.240

Cuando el dispositivo no está encendido, es decir, la dirección IP anterior no existe en la red, el comando anterior devuelve el siguiente resultado al terminal:

Timeout: No Response from 192.168.1.240

¿Cómo puedo detener la visualización de esta línea de salida de tiempo de espera en la terminal y capturarla en una variable? Además, si el dispositivo está encendido y la dirección IP existe, se debe mostrar la salida normal en el terminal y pasar la salida a la misma variable.

Analizaré la variable una vez que la tenga y decidiré qué hacer dependiendo de su contenido.

(He leído bastante man snmpcmd, incluido man smnpwalky sobre la redirección, pero la solución se me escapa).

Respuesta1

Me lo imaginé. En general, el problema que experimenté se debió a que hice la redirección después de haber canalizado la salida del comando.

snmpstatus -c public -v1 192.168.1.240

grep y luego sed, al final de una línea bastante larga. No me di cuenta en ese momento, aunque ahora es muy obvio, que la redirección de cualquier stderr o stdout debe ocurrir inmediatamente después del comando asociado. Esto es importante porque en realidad encontré la solución y la descarté porque extrañamente no funcionaba, porque había intentado redirigir al final de la tubería.

A continuación se explica cómo redirigir el stderr a una variable.

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

Aquí hay una explicación de la sintaxis. 0 = stdin 1 = stdout 2 = stderr > = redirect

Por lo tanto, 2>1 significa redirigir stderr a stdout. El & es esencial por lo tanto 2>&1debe escribirse, pero en mi lectura no pude establecer por qué.

Este desbordamiento de pilarespuestafue muy útil, y también lo fueesta página muy bien escrita sobre redirección.

información relacionada