Saya terhubung dari windowsbox saya dengan dempul ke kotak linux. Setelah itu saya melakukan hal berikut:
di Server A:
serverA: file /etc/motd
/etc/motd: : ASCII English text
di 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
Mengapa output yang dialihkan sekarang memiliki CR &LF? Ini hanya terjadi dengan opsi -t dari ssh. -t diperlukan jika saya perlu menjalankan perintah pada login ssh dengan Sudo. seperti misalnya:
serverB: ssh -t [email protected] "sudo cat /etc/shadow" > /etc/shadow
Terima kasih atas saran Anda
Jawaban yang Diterima:
Periksa setelan TTY.
$ 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
Ini mungkin berbeda, tetapi mereka menunjukkan di sini bahwa secara default di bawah ssh -t
igncr
. itu "ignore CR" dinonaktifkan pada input, dan untuk output yang onlcr
diatur (memetakan NL ke CR-NL) dan bahwa CR tidak akan rusak atau dihilangkan. Seseorang dapat mencari istilah ini di stty(1)
manual, dan lihat juga termios(4)
(yang mungkin ditempatkan linux di beberapa bagian man lainnya).
Pengaturan juga dapat diubah-ubah (namun hal ini dapat merusak hal-hal yang karena alasan tertentu memerlukan onlcr
tetapkan):
$ 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
$
Mungkin lebih masuk akal untuk menggunakan scp
atau sftp
untuk menyalin data untuk menghilangkan risiko penanganan (pseudo)tty CR/NL yang menyebabkan perubahan pada konten file.