stdin: no está en tty

stdin: no está en tty

Estoy intentando hacer una copia de seguridad del servidor1 al servidor2 usando el siguiente comando en ssh

[user1@server1 ~]$ mysqldump -u dbuser -p"dbpwd" --opt  dbname        \
                      | gzip -c                                       \
                      | ssh  -o StrictHostKeyChecking=no              \
                             -o UserKnownHostsFile=/...../known_hosts \
                             -l deploy                                \
                             -i  /...../id_rsa                        \
                             -v  user2@server2                        \
                             "/bin/cat > /.../test.sql.gz" \
                      2>&1 

Recibí el error como se muestra a continuación.

debug1: Sending command: /bin/cat > -t user2@server2:/..../test.sql.gz
stdin: is not a tty
/bin/cat: user20@server2:/..../test.sql.gz
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
: No such file or directory
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Transferred: sent 265040, received 2552 bytes, in 0.0 seconds
Bytes per second: sent 6736670.0, received 64865.6
debug1: Exit status 1
mysqldump: Got errno 32 on write

¿Alguien puede resolver este problema?

Actualización

Eliminé 'usuario2@servidor2' y 'deploy -i' del comando de copia de seguridad y lo ejecuté. Me da debajo mensajes

debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: /bin/cat > -t /....../test.sql.gz
stdin: is not a tty
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
/bin/cat: /......./test.sql.gz: No such file or directory
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Transferred: sent 248608, received 2536 bytes, in 0.1 seconds
Bytes per second: sent 4628197.5, received 47211.3
debug1: Exit status 1
mysqldump: Got errno 32 on write

Respuesta1

Si el shell de inicio de sesión del usuario remoto ( user2on server2) es bash, tenga en cuenta que bashlee e interpreta ~/.bashrc(y posiblemente /etc/bash.bashrco su equivalente en el sistema remoto) cuando se le llama ssh, incluso cuando no es interactivo (como cuando simplemente interpreta lo /bin/cat > user2@server2:/......./test.sql.gzque usted le da) .

Asegúrese de que las cosas en ~/.bashrcno hagan cosas como sttyo mesg(el mesgdesysvinit-utilscomo se encuentra en muchas distribuciones de Linux, genera exactamente el mismo mensaje que puede ver al ejecutar : | mesg n), o solo lo hace después de haber verificado que stdin es una terminal [ -t 0 ]y que el shell es interactivo ( case $- in (*i*) ...;; esac).

Si el shell de inicio de sesión del usuario remoto es csho tcsh, observe los .cshrcand .tcshrcy for zshque ~/.zshenvson interpretados por todos los shells, incluidos los no interactivos, independientemente de si se les llama ssho no (pero como tales, normalmente no harán cosas con el ttyincondicionalmente).

Tenga en cuenta que eso no hará que su comando falle, solo se mostrará ese mensaje falso.

Sin embargo, lo que haría que el comando fallara es:

 /bin/cat > user2@server2:/......./test.sql.gz

When no tiene mucho sentido a menos que haya un directorio llamado user2@server2:en el directorio de inicio de user2on server2.

Probablemente eso sea lo que causa el error:

 : No such file or directory

El hecho de que el "archivo o directorio" del que se queja parezca estar "vacío" sugiere que hay un carácter de retorno de carro oculto en algún lugar de la línea de comando.

Lo que quieres es /bin/cat > /path/to/output/file/on/server2/test.sql.gzy el /path/to/output/file/on/server2directorio debe existir de antemano.

Es posible que también desee eliminar -vy ~/.bashrctemporalmente, ya que en este momento estamos viendo mensajes de ssh, de comandos ejecutados en su ~/.bashrc, posiblemente por el shell remoto cuando interpreta esa cat ...línea de comando, por caty por el mysqldumpcomando que dificulta ver qué es qué.

información relacionada