Me conecto desde mi windowsbox con masilla a una caja de linux. Después de eso hago lo siguiente:
en el Servidor A:
serverA: file /etc/motd
/etc/motd: : ASCII English text
en el servidor 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
¿Por qué la salida redirigida ahora tiene CR y LF? Esto sucede solo con la opción -t de ssh. -t es necesario si necesito ejecutar comandos en un inicio de sesión ssh con sudo. como por ejemplo:
serverB: ssh -t [email protected] "sudo cat /etc/shadow" > /etc/shadow
Gracias por tus sugerencias
Respuesta aceptada:
Inspeccione la configuración de 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
Estos pueden variar, pero muestran aquí que por defecto bajo ssh -t
que igncr
"ignorar CR" está deshabilitado en la entrada, y para la salida que onlcr
está configurado (mapea NL a CR-NL) y que CR no se altera ni se omite de otra manera. Uno puede buscar estos términos en stty(1)
manual, y ver también termios(4)
(que Linux puede colocar en alguna otra sección de man).
La configuración también se puede modificar (pero esto, sin embargo, puede romper cosas que, por alguna razón, necesitan onlcr
conjunto):
$ 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
$
Puede ser más sensato usar en su lugar scp
o sftp
para copiar datos para eliminar el riesgo de que el manejo de (pseudo)tty CR/NL provoque cambios en el contenido del archivo.