我正在尝试连接到作为信号点开关的开关。
我需要执行以下命令才能进入登录终端。
- 远程登录 IP 端口
- 发送 CTRL+A
- 获取提示“>”
- 发送命令 login:uid=user。
- 密码请求提供密码。
- 获取终端“>”
然后我必须继续执行一些命令才能走得更远,但是我的问题是我在发送 CTRL+A 时遇到了问题。
当我使用 Expect 发送“ctrl+A”时,它只会打印“^A”并且等待不会为我提供终端。
因此,我通过将命令更改为“ctrl+A\n”来修改脚本,这给了我终端,但在我的下一个终端提示符上带有新行。
像下面的输出:
^A
^A
^A
>
wait's here at next line.
它无法匹配我的下一个命令正则表达式“>”并且不发送登录名。
有人能告诉我为什么我的第一个命令“^A”不能让我终端吗?为什么在我得到终端之前命令被执行了三遍?
我手动方案它适用于单个 ctrl+A
我的示例代码:
use Expect;
my $exp = Expect->spawn("telnet 10.10.1.35 2020");
$exp->expect($timeout,
[ qr/]'./ => sub {my $exp = shift;
$exp->send("\cA\n");
} ]
);
$exp->expect($timeout,
[ qr/>/ => sub { my $exp = shift;
$exp->send("login:uid=user\n");
} ]
);
$exp->expect($timeout,
[ qr/Enter Password :/ => sub { my $exp = shift;
$exp->send("xxx\n");
} ]
);
谢谢你,普拉迪普。