2012-03-08 56 views
3

我已经写在perl的自动化scp命令下面的程序。SCP与期望模块不能正常工作

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

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

在此先感谢!!

+0

什么是错误您收到? – 2012-03-08 09:08:10

回答

2

使用Net::OpenSSH

my $ssh = Net::OpenSSH->new('[email protected]', password => 'jujsa32s'); 
$ssh->scp_get('/home/hscpe/output.txt', 'imt/output.txt'); 
+1

谢谢你这么munch :):)...它真的工作! – user650521 2012-03-08 09:45:20

0

您正在使用expect的密码。
我认为你应该使用expect.pm这项任务。运行perl脚本时使用的环境可能会漏掉运行expect的部分。

0

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

#!/bin/bash 
sshpass -p "password" scp -r [email protected]:/some/remote/path /some/local/path