#!/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 ...
#!/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 ...
Antworten:
Das kommt von SSH. Sie sehen es, weil Sie den -t
Schalter 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.
Wenn Sie -o LogLevel=QUIET
der SSH-Befehlszeile hinzufügen , sollte diese Meldung verschwinden:
ssh -o LogLevel=QUIET -t $SSH "
some
commands
"
Sie können es der ~/.ssh/config
Datei auch als Zeile hinzufügenLogLevel QUIET
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.
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 mc
oder top
die 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=QUIET
von 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.