2

我有一个奇怪的问题,我想深入了解:

我有一个超过 1000 个 CISCO 设备的列表,我需要通过 ssh 进入并运行一些命令。所以在 Perl 中,我有以下代码:

my $scon = Net::SSH::Perl->new("192.168.110.45");
$scon->login($username,$password);
my ($stdout,$stderr,$exit)= $scon->cmd('show run');
print "\n$stdout\n";

上面的代码可以向我展示我需要的输出。

但是,当我创建一个循环并尝试在一个循环中对每个设备进行 ssh 时,我得到 $stdout 为空白。

以下是不起作用的代码:

my @allhosts = `cat hosts_ip.txt | cut -d',' -f2`;
foreach my $ip (@allhosts) {
    my $scon = Net::SSH::Perl->new($ip);
    $scon->login($username,$password);
    my ($stdout,$stderr,$exit)= $scon->cmd('show run');
    print "$stdout\n";
}

上面的输出只是空白 - 它什么都不返回。

任何想法我做错了什么?

4

1 回答 1

1

你见过PSSH吗?这是一个 Python 脚本,但它非常适合在许多主机上快速运行一些命令。如果您坚持使用 Perl,它可能不是您正在寻找的东西,但听起来这可能是一项一次性任务。

于 2013-05-22T02:33:17.390 回答