SSH期待跳过"更多"在路由器上提示

时间:2014-06-18 07:08:40

标签: ssh expect router net-ssh

在测试了几个用PERL发送SSH命令的模块之后,我选择 Net :: SSH :: Expect 模块(能够为唯一连接发送多个命令)

我还在测试一些函数,这是我的代码:

use Net::SSH::Expect;

my $user="myuser";
my $host = "126.30.186.249";
my $passwd = "mypasswd";


my $ssh = Net::SSH::Expect->new(host => "$host", password=> "$passwd", user => "$user", raw_pty => 1 );
my $login_output = $ssh->login();
$ssh->send("sh arp");
my $line ;
while ( defined ($line = $ssh->read_line()) ) {
    print $line . "\n" ;
}

以下是我的问题:使用“ exec ”功能代替“发送”时:

sh arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  126.30.186.3          112   0080.9f8b.fc1a  ARPA   GigabitEthernet0/1.186
Internet  126.30.186.6          163   0080.9f8b.fc1a  ARPA   GigabitEthernet0/1.186
Internet  126.30.186.247          -   e4c7.2291.5181  ARPA   GigabitEthernet0/1.186
Internet  126.30.186.248         33   885a.9291.c7e1  ARPA   GigabitEthernet0/1.186
Internet  126.30.186.249          -   0000.0c07.ac65  ARPA   GigabitEthernet0/1.186
Internet  126.30.186.250          -   0000.0c07.ac66  ARPA   GigabitEthernet0/1.186
Internet  126.30.187.241         38   0017.e05d.b144  ARPA   GigabitEthernet0/1.230
Internet  126.30.187.242         96   0012.dada.65c1  ARPA   GigabitEthernet0/1.230
Internet  126.30.187.243         96   f025.7275.63c1  ARPA   GigabitEthernet0/1.230
Internet  126.30.187.250          -   0000.0c07.ac00  ARPA   GigabitEthernet0/1.230
Internet  126.30.187.251          -   e4c7.2291.5181  ARPA   GigabitEthernet0/1.230
 **--More--** 

此“更多”提示是一个问题。 所以你可以看到,我尝试了“发送”并做了一个while循环。给出的结果是相同的,但没有--More--提示。 我需要跳过“more”提示并查看所有结果。 Net :: OpenSSH在发送“捕获”时给了我所有的结果。 我搜索任何功能自动跳过“更多”提示...但不是结果:( 谁可以帮我这个事 ?感谢。

1 个答案:

答案 0 :(得分:0)

添加

my $out2 = $ssh->exec ("term le 0");
在执行任何命令之前

正在运行。这允许通过SSH连接模拟的终端不限制行缓冲区 使用Cisco / Hp材料。我不知道它是否在为其他任何人工作。