Ich verbinde mich von meiner Windowsbox mit Putty zu einer Linux-Box. Danach mache ich folgendes:
auf Server A:
serverA: file /etc/motd
/etc/motd: : ASCII English text
auf Server B:
serverB: ssh -t [email protected] "cat /etc/motd" > /etc/motd.serverA
serverB: file /etc/motd.serverA
/etc/motd.serverA: ASCII text, with CRLF line terminators
Warum hat die umgeleitete Ausgabe jetzt CR &LF? Dies geschieht nur mit der Option -t von ssh. -t wird benötigt, wenn ich Befehle bei einer SSH-Anmeldung mit sudo ausführen muss. wie zum Beispiel:
serverB: ssh -t [email protected] "sudo cat /etc/shadow" > /etc/shadow
Vielen Dank für Ihre Vorschläge
Akzeptierte Antwort:
Überprüfen Sie die TTY-Einstellungen.
$ ssh -t somewhere 'stty -a' | grep cr
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
Diese können variieren, aber sie zeigen das hier standardmäßig unter ssh -t
dass igncr
„ignore CR“ ist für die Eingabe deaktiviert und für die Ausgabe von onlcr
gesetzt ist (bildet NL auf CR-NL ab) und dass CR ansonsten nicht verstümmelt oder weggelassen werden. Man kann diese Begriffe in stty(1)
nachschlagen Handbuch, und siehe auch termios(4)
(welches Linux in einem anderen Man-Abschnitt platzieren kann).
An den Einstellungen kann auch rumgefummelt werden (was aber Dinge kaputt machen kann, die aus irgendwelchen Gründen onlcr
brauchen einstellen):
$ ssh -t somehost 'stty onlcr; cat /etc/motd' > x ; file x
x: ASCII English text, with CRLF line terminators
$ ssh -t somehost 'stty -onlcr; cat /etc/motd' > x ; file x
x: ASCII English text
$
Es kann sinnvoller sein, stattdessen scp
zu verwenden oder sftp
um Daten zu kopieren, um das Risiko einer (pseudo-)tty CR/NL-Behandlung zu beseitigen, die Änderungen an Dateiinhalten verursacht.