Envie uma string para um programa terminal

2

Precisa saber se é possível enviar uma string de comandos para um programa.

O programa é chamado Dynamips,

Depois de lançar o programa, ele aparece com "- >"

O comando que eu quero enviar para o terminal é "start R1" e "start R2" você obtém a imagem.

Também quero saber se ele pode dormir por 5 segundos e depois enviar a segunda string.

Eu tentei ecoar, mas o eco só aparece quando você sai do programa.

Qualquer ideia

Atenciosamente

    
por l0c0b0x 26.08.2009 / 17:42

2 respostas

3

Você pode usar o programa expect .

Aqui está um script de exemplo:

spawn /path/to/program/Dynamips
expect -- "->"
send "start R1\r"
expect -- "->" {
  sleep 5
  send "start R2\r"
}
expect eof

Você pode invocar isso com:

expect scriptname
    
por 26.08.2009 / 18:17
1

O Expect também está disponível como um módulo Perl, se você estiver mais confortável em Perl do que em TCL.

Um snippet simples usando o módulo Perl Expect pode ser assim:

my $bob = Expect->new("bob_program");
$bob->expect(1, "Hullo!");
$bob->send("Hi!\r");
$bob->expect(1, "Bye!");
$bob->send("Later!\r");
$bob->soft_close();

Trabalhei com o expect / TCL e o perl, e devo dizer que prefiro o Perl. Se você ainda não sabe, o TCL é irritante de pegar.

    
por 26.08.2009 / 19:22