发送字符串到终端程序

发送字符串到终端程序

需要知道是否可以向程序发送一串命令。

该项目名为 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 有点难以掌握。

相关内容