我正在尝试使用 net::appliance::session 库重新启动 Cisco 设备。但即使代码没有给出错误,设备也不会重新启动。这是我正在使用的两行:
$session->cmd(String => 'Reload',Match => ['/Proceed/'], );
$session->cmd(String => "\n", Match => ['//'],);
在 Cisco shell 中,重新加载命令如下所示:
test#reload
Proceed with reload? [confirm]
Connection closed by foreign host.
cpan论坛中的这个帖子也告诉我这样做。我认为回车和确认对话框有问题。因为当我尝试创建一个目录时它工作正常:
$session->cmd(String => 'mkdir',Match => ['/Create dire.*/'] );
$session->cmd(String => 'test',Match => ['//'] );
这在 Cisco shell 中的等价物:
test#mkdir
Create directory filename []? test
Created dir flash:test
但是当我尝试删除这个需要回车作为确认的目录时,脚本再次失败。
$session->cmd(String => 'rmdir asd',Match => ['/Remove directory.*/'] );
$session->cmd(String => '\n' ,Match => ['/Delete flash.*/'] );
$session->cmd(String => '\n');
思科的等价物是这样的:
test#rmdir test
Remove directory filename [test]?
Delete flash:test? [confirm]
Removed dir flash:test
所以我认为问题不在于 reload 命令。但问题是发送回车作为确认。我试过\n
\r
\n\r
\r\n
空字符串,但它们没有用。
有任何想法吗?