我使用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);
捕获命令:
命令是:
sh int desc - 我正在获取此命令的输出,因为这是我的第一个命令。在那之后我得到了如上所述的以下错误。
sh arp - 所以这是我的第二个。因为我的第一个命令输出后连接关闭错误。我对这个命令一无所知。
但Perl OpenSSH模块正在发生这种情况。但与Telnet模块配合良好。而且,如果我尝试使用我的本地机器的终端窗口手动登录,那个时候也工作正常。所以我只是想。这是OpenSSH模块的问题吗?或思科设备?
此外,如果是Juniper设备,OpenSSH模块对所有命令的响应都很好。
@openssh_output = $ssh_connection_obj->capture("$cmd");
我正在获取第一个命令的输出。但是我收到了这个错误
Connection to <IP_ADDRESS> closed by remote host.
当我尝试捕获另一个命令的输出时。
我也尝试过使用Telnet连接(新的Net :: Telnet)。它对所有后续命令都没有任何问题。