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

Ali*_*lix 0 perl

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

adev@abclnxdev:[/home/adev/perl-scripts] {63} % perl try.pl
Net::SSH: Bad host name: abclnxtest01
 at try.pl line 21
Run Code Online (Sandbox Code Playgroud)

当我手动对这个主机执行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";
}
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 8

您在服务器名称的末尾有一个换行符.

加:

chomp @server_list;
Run Code Online (Sandbox Code Playgroud)

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