2

私は奇妙な問題を抱えており、これの根底に行きたいと思っています:

SSH 接続していくつかのコマンドを実行する必要がある 1000 を超える CISCO デバイスのリストがあります。したがって、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 で行き詰っている場合は、まさに探しているものではないかもしれませんが、これは 1 回限りの作業のように思えます。

于 2013-05-22T02:33:17.390 に答える