我正試圖連接到交換機,它是信令點交換機。使用Expect模塊的Telnet會話無法發送命令ctrl + A
我需要執行以下命令才能登錄終端。
- 遠程登錄IP端口
- 發送Ctrl + A
- 獲取提示 「>」
- 發送命令登錄:UID =用戶。
- 請求密碼提供密碼。
- 獲取終端「>」
然後,我必須繼續執行某些命令走得更遠,但我的問題我現在面臨一個問題,在發送CTRL + A。
當我發送使用期望「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");
} ]
);
謝謝 普拉迪普。
嘗試'$ EXP->發(CHR(1));'發送按Ctrl-A –
我ctrl + A角色,它並沒有進一步移動,它只是在等待。 – user2733721