【发布时间】:2013-09-03 11:40:53
【问题描述】:
我正在尝试连接到作为信号点交换机的交换机。
我需要执行以下命令才能进入登录终端。
- telnet 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”无法让我终端?为什么在我到达终端之前命令执行了3次?
我手动的场景它适用于单个 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");
} ]
);
谢谢你, 普拉迪普。
【问题讨论】:
-
尝试
$exp->send(chr(1));发送Ctrl-A -
我得到了 ctrl+A 字符,它没有进一步移动它只是在等待。
标签: perl switch-statement telnet expect