scp gibt den Fehler "unerwarteter <newline>" zurück

11

Ich versuche, scpeine Datei von einem Server auf meinen lokalen Computer zu übertragen, aber es wird folgende Fehlermeldung angezeigt:

protocol error: unexpected <newline>

Das ist meine Syntax:

scp user@server:/path/to/file .

Auf diesem Server hat es nicht funktioniert, aber dann habe ich denselben Befehl auf meinem anderen Server versucht, sodass ich nur davon ausgehen kann, dass etwas mit meinem Server nicht stimmt und nicht mit der Syntax des scpBefehls.

Irgendwelche Ideen?

Srchulo
quelle
Bitte poste deine ~/.bashrcauf dem Server.
Quanten
Danke für die Hilfequanten. Ich habe meine .bashrc bearbeitet, bevor ich Ihren Beitrag gesehen habe. Das Problem war, dass ich eine Echo-Aussage darin hatte. Danke für die Hilfe!
Srchulo
@Miles, ich habe es versucht, aber ich muss 8 Stunden warten, weil ich einen Ruf von weniger als 100 habe. Ich werde es als Antwort posten, wenn diese Zeit abgelaufen ist.
Srchulo
Zu Ihrer Information, ich bin auf dieses Problem gestoßen und ... <sheepish> mein scp-Befehl war falsch </ sheepish>. Es könnte also einfach so sein.
ognockocaten

Antworten:

19

Eines Ihrer Anmeldeskripte (.bashrc / .cshrc / etc.) Gibt Daten an das Terminal aus, wenn dies nicht der Fall sein sollte. Dies führt dazu, dass scp beim Herstellen einer Verbindung und beim Kopieren einen Fehler verursacht, wenn zusätzliche Daten empfangen werden, die nicht erwartet werden. Entfernen Sie die hier generierte Ausgabe.

Sie können überprüfen, ob Ihr Terminal interaktiv ist und nur Text ausgeben, indem Sie den folgenden Code in einem bashrc verwenden. Etwas Äquivalentes gibt es auch für andere Muscheln:

if shopt -q login_shell; then
    [any code that outputs text here]
fi
Andrew Case
quelle
2

Die Lösung gefunden. Meine .bashrc-Datei und .bash_logout wurden so eingestellt, dass sie mir bei jeder An- und Abmeldung Informationen wiedergeben. Anscheinend gab diese Echo-neue Zeile scp einige Probleme. Ich habe meine Echo-Aussagen auskommentiert und das hat den Trick gemacht!

Srchulo
quelle
-1

Ich hatte ein ähnliches Problem. Der Grund war genau der folgende: Ich habe in meiner .bashrc einen Befehl "echo" some text "" zum Drucken des Status des Proxys. Und dieses "Echo" eines Textes "" führte dazu, dass scp fehlschlug. Wenn ich also das "Echo" in der .bashrc-Datei entferne, werden die Dateien mit scp übertragen.

evinhas
quelle
1
Dies unterscheidet sich nicht von den beiden anderen Antworten, die vor sieben Jahren veröffentlicht wurden.
Kasperd