Usando comandos bash no script de espera

2

Eu tentei usar alguns comandos bash em um script de espera antes de gerar algo, e isso parece não funcionar:

#!/usr/bin/expect

sudo ifdown usb0
sudo ifup usb0

expect "[sudo] password for stud:"
send "FirstPassword\r"

spawn ssh [email protected]
expect "[email protected]'s password:"
send "SecondPassword\r"

expect eof

Eu tentei executar isso com a primeira parte do script comentada (porque não é necessário fazer essa verificação 100% do tempo, apenas melhor), mas, nesse caso, eu entro no dispositivo e literalmente consigo ' Não faça nada lá. Eu gostaria de ifdown, digite pass, ssh, digite pass e escopo para esse shell.

    
por Tachyon 23.10.2015 / 19:37

1 resposta

2

Não. você não pode esperar executar comandos bash em um intérprete esperado, assim como você não pode executar comandos perl em um interpretador python - eles são idiomas diferentes. Se você quer rodar alguns comandos bash que requerem interação com o usuário (sudo), então você precisa gerar bash

set prompt {$ $}    ; # this is a regular expression that should match the
                       # *end* of you bash prompt. Alter it as required.
spawn bash
expect -re $prompt

send "sudo ifdown usb0\r"
expect {
    "[sudo] password for stud:" {
        send "FirstPassword\r"
        exp_continue
    }
    -re $prompt
}
send "sudo ifup usb0\r"
expect -re $prompt

send "ssh [email protected]\r"
expect "[email protected]'s password:"
send "SecondPassword\r"
expect eof
    
por glenn jackman 26.10.2015 / 01:34