scp imprime alguns caracteres estranhos e não copia arquivos

0

Estou tentando copiar um pequeno arquivo de outro computador na rede usando o scp, o computador está executando o Linux Mint 18.3.

Eu tentei do macOS e recebo isto:

$ scp [email protected]:/home/fyde/Downloads/notes/ubuntu.txt .                          
[email protected]'s password:
3]4;0;#2b12293\033]4;1;#FFD36D3\033]4;2;#6559B63\033]4;3;#E1549E3\033]4;4;#788FA33\033]4;5;#778BE13\033]4;6;#D88AA73\033]4;7;#d2d8d23\033]4;8;#9397933\033]4;9;#FFD36D3\033]4;10;#6559B63\033]4;11;#E1549E3\033]4;12;#788FA33\033]4;13;#778BE13\033]4;14;#D88AA73\033]4;15;#d2d8d23\033]10;#d2d8d23\033]11;#2b12293\033]12;#FFD36D3\033]13;#d2d8d23\033[s3[1000H3[8m3]708;#2b12293\033[u3]13;#d2d8d23\C0644 6743 ubuntu.txt

Eu tentei de uma máquina Ubuntu e recebi algo semelhante:

$ scp [email protected]:/home/fyde/Downloads/notes/ubuntu.txt .
[email protected]'s password:
C0644 6743 ubuntu.txt

Eu tentei com arquivos diferentes e obtive o mesmo resultado, copiando de outros computadores funciona bem.

Alguém sabe o que está acontecendo?

    
por Fyde 28.07.2018 / 11:14

1 resposta

6

Você estragou os scripts de inicialização do seu shell de login, o que é um erro de scp .

scp está iniciando uma sessão SSH não interativa e invocando um shell de login não interativo sem um terminal de controle. Mas os scripts de inicialização do seu shell não estão verificando este caso corretamente, e estão fazendo as coisas que eles fazem para shells interativos invocados com um terminal de controle. Na verdade, essas conchas são sumariamente e incorretamente assumindo que o terminal é um tipo particular de terminal.

Toda essa saída misteriosa é o resultado de comandos nos scripts de inicialização de seu shell que geram várias seqüências de controle OSC ( ␛[ e ␛/ sendo os aliases ECMA-48 de 7 bits para os caracteres de controle OSC e ST) e CSI seqüências de controle ( ␛] sendo o alias ECMA-48 de 7 bits para o caractere de controle CSI). Essas seqüências estão tentando alterar os mapeamentos de cores e afetam o retrocesso do terminal. Eles só funcionam com um emulador de terminal específico.

Mas o fim local da sua conexão SSH não é algo que espelhe tudo isso em seu terminal local (que, dado que você está usando o MacOS, provavelmente não é aquele emulador de terminal específico e provavelmente mais parecido com iTerm2, em qualquer evento). É o programa local scp , que espera falar um protocolo especializado sobre a conexão SSH, que implementa o mecanismo de cópia de arquivos. Todo o lixo que os scripts de inicialização do seu shell estão erroneamente cuspindo mesmo no modo não interativo , está misturando suas comunicações.

Corrija seus scripts de inicialização defeituosos do shell para não tentar fazer coisas do terminal quando eles são invocados de forma não interativa ou sem um terminal de controle.

Leitura adicional

por 28.07.2018 / 14:23

Tags