perl脚本中已知错误的未知原因

时间:2011-12-22 22:54:15

标签: perl

我正在编写以下脚本来从文本文件中读取服务器列表ssh到它们并运行ldd命令来获取服务器上安装的版本。 唯一的问题是我看到错误,其中显示错误的主机名

adev@abclnxdev:[/home/adev/perl-scripts] {63} % perl try.pl
Net::SSH: Bad host name: abclnxtest01
 at try.pl line 21

当我手动对这个主机执行ssh时。它得到连接。 这是脚本:

#!/mu/bin/perl
use Net::SSH::Perl;
use warnings;

my $file = "server-list.txt";
my $usr = "user";
my $pwd = "password";
my $output_file = "GlibC-version.txt";

open(HANDLE, $file) or die("Cant open the file :( ");
@server_list = <HANDLE>;
close(HANDLE);
#debug_print_array(@server_list);

open(HANDLE, ">>$output_file"); #opening file for output.
foreach $host (@server_list)
{

my $ssh = Net::SSH::Perl->new($host);

$ssh->login($usr,$pwd,$ssh);
my($stdout, $stderr, $exit) = $ssh->cmd("ldd --version|grep ldd");
print HANDLE "----------------------------------";
print HANDLE "Hostname : $host";
print HANDLE "GLIBC Version : $stdout";
print HANDLE "----------------------------------\n\n";
}

1 个答案:

答案 0 :(得分:8)

服务器名称末尾有换行符。

添加:

chomp @server_list;

(顺便说一下,最好使用较新的3个参数open();请参阅http://perlmaven.com/open-files-in-the-old-way。)