Uma possibilidade é: criar um arquivo de sintaxe de expectativa e chamá-lo por meio de um script de shell:
#!/bin/bash
expect -f my-file.exp $1 # parameter 1 is the server name
No meu arquivo.exp você só espera comandos:
spawn ssh "username@[lindex $argv 0]" # param 1 : server name
# expect now reads the input and does what you tell it on certain patterns
expect {
"password:" { send "my-password\r"; send "do_this_command\r"; send "do_that_command\r"; exp_continue; }
"done" { send_user "exiting"; }
}
Este exemplo conecta-se ao servidor enviando a senha em texto simples, envia algum comando e continua.
Se ele ler "concluído" da entrada, ele será encerrado. Caso contrário, o tempo limite será esgotado após alguns segundos.
Contanto que você faça um "exp_continue", ele permanecerá dentro da expectativa {} -loop, correspondendo a entrada e fazendo a saída apropriada.