Ssh wirklich leise machen

15

Ich bin auf halbem Weg durch das Schreiben eines Nagios-Skripts und habe einen Ärger mit SSH.

Nach der Manpage:

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

Wenn ich jedoch das stille Flag aktiviere und dann einen ungültigen Port übergebe, wird trotzdem eine Fehlermeldung angezeigt:

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

Dies ist ein Problem, da dadurch diese Nachricht als erste Zeile ausgegeben wird und das ist, was von Nagios erfasst wird. Ich muss etwas wie "Warning | SSH error" ausgeben, nachdem != 0ich einen Exit-Code von ssh erhalten habe, aber die erste Zeile, die ich ausgeben kann, wird Zeile 2 sein.

Wie kann ich SSH WIRKLICH leise machen?

Hinweis: Ich war mir nicht sicher, ob ich diese Frage bei Serverfehler, Superuser oder Stackoverflow posten sollte. Ich habe mich für serverfault entschieden, da die Benutzer mit CLI-SSH- und CLI-Scripting-Problemumgehungen wahrscheinlich am besten vertraut sind.

SimonJGreen
quelle
2
Nicht, dass es wirklich hilft, aber es sieht so aus, als ob das Handbuch aktualisiert wurde, um dies widerzuspiegeln. Ab OpenSSH 5.8 (und möglicherweise früher) wird angegeben, dass "die meisten Warnungen und Diagnosen" anstelle von " allen Warnungen und Diagnosen" unterdrückt werden .
James Sneeringer
heh nervig! guter Ort.
SimonJGreen
Warum vermeiden Sie nicht einfach den Versuch, eine Verbindung zu einem ungültigen Port herzustellen?
Zoredache
1
@Zoredache Dies ist ein Fehler beim Abfangen / Behandeln. Einen Tippfehler zu vermeiden, löst nicht das Problem, wie man mit einem würdevoll
umgeht

Antworten:

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

leitet stderrnach / dev / null weiter.

Sven
quelle
2
Jetzt fühle ich mich wie ein Volltreffer. Bringt mir bei, spät in der Nacht zu programmieren!
SimonJGreen
-2

Oder die einfachste Methode zum Speichern LogLevel QUIETin der Konfigurationsdatei:

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

Endet mit dem gleichen Ergebnis wie oben, mit viel weniger Tipparbeit.

Prost

todd_dsm
quelle
1
Ich habe die Antwort abgelehnt, weil sie das hier gestellte Problem nicht löst:% ssh -p test -oLogLevel = QUIET localhost Ungültiger Port 'test'
cstamas