2013-06-30 78 views
0

我試圖在perl中使用ssh執行密碼更少的登錄。我莫名其妙地堅持了以下錯誤消息:在perl腳本中使用ssh

ssh: Could not resolve hostname : Name or service not known 
lost connection 

下面是我在perl腳本代碼的一部分拋出了這個錯誤:

$dut_ip_addr="10.0.0.110"; 
system("scp run_application.sh isq\@\$dut_ip_addr\:\/home\/isq\/"); 

任何幫助將不勝感激

回答

1

這裏是你的問題:

\$dut_ip_addr 

你爲什麼要逃離美元SIG N +這樣,Perl將不會爲你插入該變量,並且scp將嘗試連接到$dut_ip_addr,這當然會失敗。

你的代碼中有幾個反斜槓沒有多大意義。我建議,你做這樣的事情:

$dut_ip_addr = "10.0.0.110"; 
my $login = "isq"; 
my $path  = "/home/isq/"; 
my $scp_command = sprintf 'scp run_application.sh %[email protected]%s:%s', $login, $dut_ip_addr, $path; 
system($scp_command); 
0

您可以使用Net::OpenSSH,忘掉一切麻煩的報價細節:

use Net::OpenSSH; 

my $ssh = Net::OpenSSH->new($dut_ip_addr, user => 'isq'); 
$ssh->scp_put('run_application.sh', '/home/isq/run_application.sh');