Expect Script - arquivo de script bash não encontrado [fechado]

0

Meu script de expectativa

#!/usr/bin/expect -f

#I tried replacing sh - with bash -s still no positive results
spawn ssh xxxx@yyyy "sh -" < test.sh
expect "password: "
send "zzzzz\r"
expect "$ "

Este comando funciona bem se executado no terminal

ssh xxxx@yyyy "sh -" < test.sh

Mas se eu o executar via expect script; falha.

Esta é a saída se eu a executar através do script expect. Posso saber onde estou indo errado

bash: test.sh: No such file or directory

P.S: Sim, o arquivo existe e as credenciais estão corretas.

    
por Magesh Kumaar 30.06.2016 / 12:43

1 resposta

2

O problema é que o redirecionamento com < está sendo feito localmente quando você executa o ssh sozinho (pelo shell no qual está digitando), mas está sendo executado na máquina remota quando executa a partir de expect , porque spawn simplesmente copia os argumentos fornecidos, portanto, o < é passado para o remoto como parte do comando ssh. É como se você digitasse 'ssh' 'xxxx@yyyy' "sh -" '<' 'test.sh' no shell, o que da mesma forma não funcionará.

Você precisa adicionar um comando shell intermediário para obter o redirecionamento analisado antes do ssh. Use por exemplo,

spawn sh -c "ssh xxxx@yyyy sh - < test.sh"
    
por 30.06.2016 / 15:45