Назад | Перейти на главную страницу

Отправить строку в программу терминала

Необходимо знать, можно ли послать программе строку команд.

Программа называется Dynamips,

После запуска программы появляется "->"

Я хочу отправить на терминал команду «запустить R1» и «запустить R2», как вы понимаете.

Также хочу знать, может ли он спать в течение 5 секунд, а затем отправить вторую строку.

Я пытался повторить его, но эхо появляется только тогда, когда вы выходите из программы.

Любые идеи

С уважением

Вы можете использовать expect программа.

Вот пример сценария:

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

Вы можете вызвать это с помощью:

expect scriptname

Expect также доступен в виде модуля Perl, если вам удобнее работать с Perl, чем с TCL.

Простой фрагмент кода с использованием модуля Perl Expect может выглядеть так:

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();

Я работал как с expect / TCL, так и с perl, и должен сказать, что предпочитаю Perl. Если вы этого еще не знаете, TCL немного раздражает.