Необходимо знать, можно ли послать программе строку команд.
Программа называется 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 немного раздражает.