无法使用perl Net :: Appliance :: Session库重新加载Cisco设备

时间:2013-02-21 10:19:18

标签: perl cisco

我正在尝试使用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.

This thread in the cpan forum也告诉我这样做。我认为回车和确认对话框有问题。因为当我尝试创建一个目录时,它可以正常工作:

$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

所以我认为问题不在于重装命令。但问题是发送回车作为确认。我尝试了\n \r \n\r \r\n并填空字符串,但它们无效。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

也许Cisco设备区分大小写?在示例中,您在Perl代码中使用了“reload”和“Reload”。

也许你可以试试这个:

$会话而>说( '刷新'); $会话而>收集(); $会话级>说( '确认'); $会话而>收集();