我遇到了一个奇怪的问题,我想深究这个问题:
我有一个超过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";
}
上面的输出只是空白 - 它什么都不返回。
任何想法我做错了什么?
答案 0 :(得分:0)
你见过PSSH吗?它是一个Python脚本,但它非常适合在许多主机上快速运行一些命令。如果你坚持使用Perl,它可能不是你想要的,但听起来这可能是一次性的任务。