期望模块不工作的scp

时间:2012-03-08 08:23:43

标签: linux perl unix

我编写了以下用于在perl中自动执行scp命令的程序。

#!/usr/bin/expect
spawn scp hscpe@9.126.134.54:/home/hscpe/output.txt imt
set pass "jujsa32s"
expect {
        password: {send "$pass\r"; exp_continue
     }

但文件传输没有发生。通常在控制台上,如果我尝试相同的scp命令,它的工作正常。任何人都可以找出问题

提前致谢!! ..

3 个答案:

答案 0 :(得分:2)

使用Net::OpenSSH

my $ssh = Net::OpenSSH->new('hscpe@9.126.134.54', password => 'jujsa32s');
$ssh->scp_get('/home/hscpe/output.txt', 'imt/output.txt');

答案 1 :(得分:0)

您使用期望密码。
我认为你应该使用expect.pm来完成这项任务。运行perl脚本时使用的环境可能会遗漏要运行的部分。

答案 2 :(得分:0)

你应该使用" sshpass"在bash脚本中:

#!/bin/bash
sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path