在perl脚本中使用ssh

时间:2013-06-30 13:55:33

标签: 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\/");

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

这是你的问题:

\$dut_ip_addr

你为什么逃避美元符号?这样,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 %s@%s:%s', $login, $dut_ip_addr, $path;
system( $scp_command );

答案 1 :(得分: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');
相关问题