Hacer ssh realmente silencioso

15

Estoy a medio camino de escribir un guión nagios y he llegado a una molestia con SSH.

Según la página del manual:

-q       Quiet mode.  Causes all warning and diagnostic messages to be
         suppressed.

Sin embargo, si habilito el indicador silencioso y luego paso un puerto no válido, sigo recibiendo un error:

$ ssh user@localhost -q -p test
Bad port 'test'

Este es un problema, porque eso hará que ese mensaje sea la primera línea y eso es lo que agarra Nagios. Necesito mostrar algo como "Advertencia | Error de SSH" después de seleccionar un != 0código de salida de ssh, pero la primera línea en la que puedo mostrar será la línea 2.

¿Cómo puedo hacer que SSH sea realmente silencioso?

Nota: no estaba seguro de si publicar esta pregunta en serverfault, en superusuario o en stackoverflow. Fui con serverfault ya que la base de usuarios probablemente tenga más experiencia con cli SSH y soluciones de scripts de cli.

SimonJGreen
fuente
2
No es que realmente ayude, pero parece que el manual se ha actualizado para reflejar esto. A partir de OpenSSH 5.8 (y quizás antes), establece que "la mayoría de las advertencias y diagnósticos" se suprimirán, en lugar de " todas las advertencias y diagnósticos".
James Sneeringer
je je molesto! buen lugar sin embargo.
SimonJGreen
¿Por qué no simplemente evitar intentar conectarse a un puerto no válido?
Zoredache
1
@ Zoredache Este es un error en la captura / manejo. Evitar un error tipográfico no resuelve el problema de cómo manejarlo con gracia;)
SimonJGreen

Respuestas:

25
ssh user@localhost -q -p test 2> /dev/null 

redirigirá stderra / dev / null.

Sven
fuente
2
Ahora me siento como una teta completa. ¡Me enseñará a codificar a altas horas de la noche!
SimonJGreen
-2

O, el método más fácil de almacenar LogLevel QUIETen el archivo de configuración:

$ cat ~/.ssh/config 
Host *
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  LogLevel QUIET
  ...

Termina obteniendo el mismo resultado que el anterior con mucha menos escritura.

Salud

todd_dsm
fuente
1
Voté a la respuesta porque no resuelve el problema que se preguntó aquí:% ssh -p test -oLogLevel = QUIET localhost Bad port 'test'
cstamas