這是我第一次使用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過程已退出*」... *嘆息* –