私は奇妙な問題を抱えており、これの根底に行きたいと思っています:
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";
}
上記の出力は空白です。何も返されません。
私が間違っていることはありますか?