发出第一个命令后,SSH连接关闭

时间:2017-09-15 17:05:31

标签: perl ssh telnet openssh

我使用Perl OpenSSH(Net :: OpenSSH)连接Cisco设备。我能够连接设备,但问题是,它在服务器上发出第一个命令后断开连接。

请检查以下代码以获取Connections并捕获命令输出。

连接代码:

my %params = (
       host         => $hostname,
       user         => $username,
       passwd       => $password,          
       timeout      => defined $timeout ? $timeout : $self->{timeout},
       kill_ssh_on_timeout => 1,
       master_opts => [
           -o => "UserKnownHostsFile=/dev/null",
           -o => "StrictHostKeyChecking=no",
           -o => "ServerAliveInterval=120",
       ]
   );  

   $ssh_connection_obj = Net::OpenSSH->new(%params);

捕获命令:

命令是:

  1. sh int desc - 我正在获取此命令的输出,因为这是我的第一个命令。在那之后我得到了如上所述的以下错误。

  2. sh arp - 所以这是我的第二个。因为我的第一个命令输出后连接关闭错误。我对这个命令一无所知。

  3. 但Perl OpenSSH模块正在发生这种情况。但与Telnet模块配合良好。而且,如果我尝试使用我的本地机器的终端窗口手动登录,那个时候也工作正常。所以我只是想。这是OpenSSH模块的问题吗?或思科设备?

    此外,如果是Juniper设备,OpenSSH模块对所有命令的响应都很好。

    @openssh_output = $ssh_connection_obj->capture("$cmd");
    

    我正在获取第一个命令的输出。但是我收到了这个错误

    Connection to <IP_ADDRESS> closed by remote host.
    

    当我尝试捕获另一个命令的输出时。

    我也尝试过使用Telnet连接(新的Net :: Telnet)。它对所有后续命令都没有任何问题。

0 个答案:

没有答案