Não espere trabalhar usando argumentos -c

0

Portanto, tenho um script como este que funciona:

#!/usr/bin/expect
spawn scp [email protected]:* .
expect {
password: {send "mypassword"; exp_continue}
}

Com base na página man do expect, acho que eu deveria conseguir fazer isso da linha de comando para realizar a mesma coisa

expect -c "spawn scp [email protected]:* ." -c "expect {password: {send \"mypassword\r\"; exp_continue}}"

Mas isso retorna ao terminal

spawn scp [email protected]:* .
[email protected]'s password: 

e depois de alguns segundos desiste sem uma mensagem de erro e nunca faz nada.

Nota

Sim, estou ciente de que não devo fazer isso com o scp e, em vez disso, usar as chaves.

    
por G Gordon Worley III 16.05.2013 / 19:56

1 resposta

0

Não tenho certeza, mas suspeito que os vários argumentos -c sejam o problema. Você pode usar um aqui-doc para passar o script em stdin:

expect <<'END'
spawn scp [email protected]:* .
expect {
password: {send "mypassword"; exp_continue}
}
END

As aspas simples em torno do primeiro 'END' citarão todo o documento.

    
por 17.05.2013 / 01:18