Rendre ssh vraiment silencieux

15

Je suis à mi-chemin de l'écriture d'un script nagios et j'ai rencontré un désagrément avec SSH.

Selon la page de manuel:

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

Pourtant, si j'active l'indicateur silencieux et que je passe ensuite un port invalide, j'obtiens toujours une erreur:

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

C'est un problème, car cela fera de ce message la première ligne et c'est ce que Nagios saisit. Je dois sortir quelque chose comme "Warning | SSH error" après avoir récupéré un != 0code de sortie de ssh, mais la première ligne sur laquelle je peux sortir sera la ligne 2.

Comment puis-je rendre SSH vraiment silencieux?

Remarque: je ne savais pas s'il fallait poster cette question sur serverfault, sur superutilisateur ou sur stackoverflow. Je suis allé avec serverfault car la base d'utilisateurs est probablement la plus expérimentée avec les solutions de contournement cli SSH et cli.

SimonJGreen
la source
2
Non pas que cela aide vraiment, mais il semble que le manuel ait été mis à jour pour refléter cela. Depuis OpenSSH 5.8 (et peut-être plus tôt), il indique que "la plupart des avertissements et diagnostics" seront supprimés, au lieu de " tous les avertissements et diagnostics".
James Sneeringer
heh ennuyeux! bon endroit cependant.
SimonJGreen
Pourquoi ne pas simplement essayer de vous connecter à un port invalide?
Zoredache
1
@Zoredache Il s'agit d'une capture / manipulation d'erreur. Éviter une faute de frappe ne résout pas le problème de la gestion élégante;)
SimonJGreen

Réponses:

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

redirigera stderrvers / dev / null.

Sven
la source
2
Maintenant, je me sens comme une mésange complète. M'apprendra à coder tard dans la nuit!
SimonJGreen
-2

Ou, le magasin de méthodes le plus simple LogLevel QUIETdans le fichier de configuration:

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

Finit par obtenir le même résultat que ci-dessus avec beaucoup moins de frappe.

À votre santé

todd_dsm
la source
1
J'ai rétrogradé la réponse car elle ne résout pas le problème posé ici:% ssh -p test -oLogLevel = QUIET localhost Bad port 'test'
cstamas