我的网络中有很少的路由器接受telnet和其他几个只接受ssh的路由器。 所以我使用了这个模块(SSH_TELNET :: ssh_telnet;)
现在有一台路由器(blys830)不接受我的凭证。我希望在这种情况下尝试下一个路由器并跳过当前路由器。
这是我的代码但没有工作。
use SSH_TELNET::ssh_telnet;
my @node=("blys830","brtc817");
my @op;
my $ok=1;
$user="xxxx";
chomp $user;
$pass="xxx";
chomp $pass;
foreach $node (@node) {
$node=~s/^\s+|\s+$//g;
$session = SSH_TELNET::ssh_telnet->new("$node") or $ok=0;
$session->login($user,$pass) or $ok=0;
if (!$ok) {
print "not OK\n";
next;
}
else {
$session->cmd('term len 0');
@op=$session->cmd('sh isis neighbor');
}
$session->disconnect;
}
我原本期待它转移到下一个路由器,但它打印在输出下方。
blys830 TELNET authentication failed at test_ssh.pl line 47
有什么建议吗?
此致 马赫什
答案 0 :(得分:0)
使用eval:
use SSH_TELNET::ssh_telnet;
my @node=("blys830","brtc817");
my @op;
my $ok=1;
$user="xxxx";
chomp $user;
$pass="xxx";
chomp $pass;
foreach $node (@node) {
$node=~s/^\s+|\s+$//g;
eval {
$session = SSH_TELNET::ssh_telnet->new("$node") or $ok=0;
$session->login($user,$pass) or $ok=0;
}
if (!$ok) {
print "not OK\n";
next;
}
else {
eval {
$session->cmd('term len 0');
@op=$session->cmd('sh isis neighbor');
}
}
$session->disconnect;
}