Wie entferne ich die Nachricht 'Verbindung zu xx.xxx.xx.xxx geschlossen'?

16
#!/bin/bash

ssh -t $SSH "
    some
    commands
"

Woher kommt die Nachricht "Verbindung zu xx.xxx.xx.xxx geschlossen"? Ich kann es auch mit result = nicht aufhaltenssh ...

ChocoDeveloper
quelle

Antworten:

9

Das kommt von SSH. Sie sehen es, weil Sie den -tSchalter gegeben haben, der SSH zwingt, ein Pseudo-Terminal für die Verbindung zuzuweisen . Normalerweise zeigt SSH diese Meldung an, um zu verdeutlichen, dass Sie nicht mehr mit der Shell auf dem Remote-Host interagieren. Dies ist normalerweise nur dann eine Frage, wenn SSH ein Pseudo-Terminal zugewiesen hat.

Fran
quelle
31

Wenn Sie -o LogLevel=QUIETder SSH-Befehlszeile hinzufügen , sollte diese Meldung verschwinden:

ssh -o LogLevel=QUIET -t $SSH "
      some 
      commands
"

Sie können es der ~/.ssh/configDatei auch als Zeile hinzufügenLogLevel QUIET

Löwe
quelle
Dies sollte die Antwort auf mich sein
Nam G VU
Vielleicht sollte diese Antwort akzeptiert werden!
Indianwebdevil
6

Wie Fran erwähnte, geschieht dies aufgrund des Schalters -t. Sie können die Nachricht ausblenden, indem Sie Folgendes anhängen:

 2> / dev / null

Ihr Code würde folgendermaßen aussehen:

#! / bin / bash

ssh -t $ SSH "
    etwas
    Befehle
"2> / dev / null

Dadurch wird STDERR nach / dev / null umgeleitet. Beachten Sie, dass alle Fehlermeldungen, die möglicherweise ausgelöst werden, ebenfalls nach / dev / null umgeleitet werden und somit nicht angezeigt werden.

Wrangler
quelle
1
Es gibt hier ein Problem, wenn ich die Ausgabe protokollieren möchte, wird dies nicht helfen. Aber sonst ist es gut.
Indianwebdevil
-1

Konnte Frans Antwort nicht kommentieren, die die richtige ist.

Ich wollte nur hinzufügen, dass Ihr Codefragment wie ein Skript aussieht, was bedeutet, dass Sie wahrscheinlich Remote-Inhalte aufrufen, die nicht von einem interaktiven Bildschirm abhängen (anders als zum Beispiel mcoder topdie ohne Tastatur und Bildschirm wenig Sinn machen - Sie werden sie daher nicht verwenden diese Programme in Skripten).

Sie sind also explizit ohne Terminal besser dran. Das heißt, ersetzen Sie das Flag -t durch das Flag -T. Längere Syntax , die ich in Skripten lieber machen sie selbstverständlich und lesbar wäre: -o 'RequestTTY no'vs -o 'RequestTTY yes'.

Vergessen Sie dabei die -o LogLevel=QUIETvon Leo vorgeschlagene Lösung - sie verbirgt auch Fehlermeldungen. Wenn Ihr Skript ungünstigen Umständen ausgesetzt ist, werden Sie nicht verstehen, was schief gelaufen ist. In Skripten, die Sie wahrscheinlich verwenden möchten -o LogLevel=ERROR- dies unterdrückt das Banner des Remote-Computers, falls vorhanden, lässt jedoch Fehlermeldungen durch.

marcingo
quelle