Se o shell de login do usuário remoto ( user2
on server2
) for bash
, lembre-se de que bash
lê e interpreta ~/.bashrc
(e possivelmente /etc/bash.bashrc
ou o equivalente no sistema remoto) quando chamado de ssh
, mesmo quando não interativo (como quando ele apenas interpreta /bin/cat > user2@server2:/......./test.sql.gz
que você fornece).
Certifique-se de que as coisas em ~/.bashrc
não façam coisas como stty
ou mesg
(o mesg
de sysvinit-utils
como encontrado em muitas distribuições do Linux é conhecido por produzir exatamente a mesma mensagem que você pode ver executando : | mesg n
), ou somente depois de ter verificado que stdin é um terminal [ -t 0 ]
e que o o shell é interativo ( case $- in (*i*) ...;; esac
).
Se o shell de login do usuário remoto for csh
ou tcsh
, observe os .cshrc
e .tcshrc
e zsh
at ~/.zshenv
, que são interpretados por cada shell, incluindo os não interativos independentemente de serem chamados de ssh
ou não (mas, como tal, eles normalmente não farão coisas com tty
incondicionalmente).
Observe que isso não fará com que seu comando falhe, apenas que a falsa mensagem seja exibida.
O que faria com que o comando falhasse é:
/bin/cat > user2@server2:/......./test.sql.gz
Quando não faz muito sentido, a menos que exista um diretório chamado user2@server2:
no diretório inicial de user2
on server2
.
Isso é provavelmente o que causa o erro:
: No such file or directory
O fato de que o "arquivo ou diretório" está reclamando parece estar "vazio" sugere que há um caractere de retorno de carro escondido em algum lugar na linha de comando.
O que você quer é /bin/cat > /path/to/output/file/on/server2/test.sql.gz
e o diretório /path/to/output/file/on/server2
deve existir de antemão.
Você também pode querer remover o -v
e o ~/.bashrc
temporariamente, já que estamos vendo mensagens de ssh
, dos comandos executados no seu ~/.bashrc
, possivelmente pelo shell remoto quando interpreta essa linha de comando cat ...
, por cat
e pelo comando mysqldump
, o que dificulta ver o que é o quê.