需要知道是否可以向程序发送一串命令。
该项目名为 Dynamips,
我启动程序后出现“->”
我想要发送到终端的命令是“启动 R1”和“启动 R2”,你明白了。
还想知道它是否可以睡眠 5 秒然后发送第二个字符串。
我确实尝试过回应它,但只有当你退出程序时才会出现回声。
有任何想法吗
问候
答案1
您可以使用expect
程序。
以下是示例脚本:
spawn /path/to/program/Dynamips
expect -- "->"
send "start R1\r"
expect -- "->" {
sleep 5
send "start R2\r"
}
expect eof
你可以通过以下方式调用它:
expect scriptname
答案2
如果您更喜欢使用 Perl 而不是 TCL,Expect 也可以作为 Perl 模块使用。
使用 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 有点难以掌握。