这是我第一次使用Net :: OpenSSH,并且我正在尝试创建一个SSH for循环,在那里我打印服务器的主机名在使用whoami
。我强麦在命令行SSH连接到我的意图的服务器,但是当我运行我的脚本,我遇到以下错误......无法使用Net :: OpenSSH进行SSH,可以通过命令行
SSH:无法解析主机名
:名称或服务不知道
用户名
为了获得更多的信息,我打印的$ssh->error
,其中$ssh
是我的Net :: OpenSSH的对象的输出。
无法建立主SSH连接:密码错误或主进程在24行,$ FH线1
这是脚本到目前为止意外退出...
#!/usr/bin/perl
use strict;
use warnings;
use Net::OpenSSH;
my $file = 'servers.txt';
open (my $fh, $file) or die "Could not open";
while (my $row = <$fh>) {
my $user = "username";
my $password = "password";
my $ssh = Net::OpenSSH->new(host => $row, user => $user, password => $password);
$ssh-error and die "SSH connection failed: " . $ssh->error;
my $whoami = `whoami`;
print $whoami;
}
servers.txt文件是一个包含服务器主机名列表的纯文本文件。
我的理解是,如果我可以从命令行对这些服务器进行SSH连接,问题必须出现在脚本中,而不是服务器/网络。任何洞察为什么我Net :: OpenSSH无法解决看似可访问的服务器,将不胜感激。
你需要在'$ row'上调用'chomp'吗? – mob
这段代码甚至不应该编译(裸字“错误”)。 – melpomene
“*姓名或服务不知道*”和“*错误的密码或moster过程已退出*”... *叹息* –