armazenar a saída do comando ssh remoto executado para variável está bloqueando. conexão não termina?

1

Não sei bem qual é o problema. Estou no Kali Linux 2.0 agora, nova instalação. O seguinte trabalhou no Ubuntu 14.04, mas ele não está mais funcionando (talvez eu tenha mudado isso acidentalmente?). Parece correto para mim, mas toda vez que ele roda bloqueia.

backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1')

Isso faz parte de um script maior. $ server e $ dir estão configurados. Quando eu executo o comando sozinho, recebo a saída correta, mas ela não encerra a conexão.

    
por sand_storm_of_code.txt 15.10.2015 / 22:55

2 respostas

0

Não sei bem por que o comando travaria, mas você não precisa executar todo o pipeline no servidor. É o suficiente para fazer o ls lá:

backup_folder=$( ssh -i keyfile "$server" "ls -t '$dir'" | head -n 1 )

Observe que isso cita o valor $dir no lado remoto (ele ainda será expandido localmente). O head será executado localmente.

Isso também vem com as advertências mencionadas nas respostas para " Por que * not * pars 'ls'? ".

    
por 20.06.2018 / 15:52
-1

Eu tive o mesmo problema recentemente, provavelmente você deve adicionar um redirecionamento ao stdout no final do comando, assim:

backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1' 2>&1)
    
por 15.04.2016 / 11:02