executar script bash local na máquina remota usando esperar

1

Eu tenho um script de shell local. Agora, quero executar este script local na máquina remota. É claro que eu posso usar ssh , mas como ele (o shell script local) deve ser como um script automatizado, ele não deve pedir a senha para entrar manualmente. Então eu usei esperar para eliminar esse problema, para que, se eu executar o script, ele não pergunte a senha. E meu script parece abaixo.

#!/usr/bin/expect
spawn ssh -o GSSAPIAuthentication=no [email protected] 'bash -s' < /path/to/localscript
expect -timeout 7 "*(yes/no)?" { send "yes\r";exp_continue } 
expect -timeout 3 "*d: "
send "qbcrootpass\n"
interact

Mas não está funcionando. Observe que, no meu cenário, não quero usar a autenticação de chave pública.

Por favor, ajude-me a executar um script local em uma máquina remota usando o recurso "esperar".

    
por Uvais Ibrahim 25.03.2014 / 12:21

1 resposta

2

Esse redirecionamento é processado pelo seu shell na linha de comando. A expectativa não vai entender como fazer isso. Isso deve funcionar (não testado):

set fh [open /path/to/localscript r]
set contents [read $fh]
close $fh

spawn ssh ... "bash -c '$contents'"
    
por glenn jackman 25.03.2014 / 14:34