2011-09-22 40 views
2
#!/usr/local/bin/perl 
use strict; 
use warnings; 
system("cd $PATH 
/usr/bin/sftp mysite.com <<!EOF 
put sample.txt 
bye 
!EPF"); 

當我請編譯塔應用爲sftp,它要求pasword, 如何在代碼本身通過用戶名/密碼,我如何能連接使用Linux命令從Perl的

我要的是,我的腳本不應該詢問密碼。我想在代碼本身設置用戶/密碼。 用戶命令不能在sftp中工作 如何製作它。

+1

您能詳細說明一下,並說明您迄今所做的工作嗎? – Mat

+0

除非您使用ssh-agent設置公鑰認證,否則將始終提示您輸入sftp的密碼, – Bruce

+0

shell中有方法,稱爲「expect」 –

回答

6

有了這樣一個模糊的問題它很難讓更多的答案...

你有沒有試過Net::SFTP模塊?

編輯:

基於編輯的問題 - 嘗試使用的Net :: SFTP ::國際

use Net::SFTP::Foreign; 
    use warnings; 
    use strict; 

    my $host = "xxx.xxx.xxx.xxx"; 
    my $sftp = Net::SFTP::Foreign->new($host, user => 'user', password => 'pass'); 
    $sftp->error and die "Something bad happened: " . $sftp->error; 
    $sftp->put("sample.txt", "/home/test/test") or die "put failed: " . $sftp->error; 

你應該得到一個更有意義的錯誤消息,你可以把它從那裏。