Como fazer mais com um script de espera do que apenas um log in

0

Eu tenho um script de espera que faz login no meu Beaglebone:

    #!/usr/bin/expect -f
    spawn ssh [email protected]
    expect "[email protected]'s password:"
    send "temppwd\r"
    interact &&
    mkdir emma &&
    cd emma

Isso funciona e ele faz login na conta do Debian. No entanto, ele pára depois que interact os outros dois comandos não estão sendo executados. O que eu tenho que fazer para fazer isso?

EDITAR

ok então obrigado andy256 Eu percebi que interact está errado aqui, no entanto, eu recebo

invalid command name "mkdir" while executing

Como posso combinar um script de espera com um script de shell normal?

Obrigado antecipadamente!

    
por Paul Bernhard Wagner 29.11.2015 / 05:41

1 resposta

4

O principal objetivo da programação é send e expect pares: você envia algum texto para o processo gerado e espera uma resposta. Nesse caso, você envia o comando mkdir e espera ver seu prompt para saber que o comando foi concluído. Os prompts são melhor correspondidos como expressões regulares para corresponder ao fim dele. Como os prompts são configuráveis, talvez você queira editar a expressão de prompt: essa corresponde a um sinal de dólar literal e a um espaço no final da string.

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "[email protected]'s password:"
send "temppwd\r"
set prompt_re {\$ $}
expect -re $prompt_re
send "mkdir -p emma && cd emma\r"
expect -re $prompt_re
interact
    
por glenn jackman 29.11.2015 / 13:34