2011-12-30 36 views
-1

是否有任何錯誤的腳本bewlow,因爲我只是不能登錄..... 而且我確定我使用正確的用戶名和密碼。 (無法登錄登錄不正確。)FTP中的perl錯誤?

sub UploadToFTPServer() 
{ 
my $filename = shift; 


$ftp = Net::FTP->new($FTPSERVER, Debug => 0) ; 
if ($ftp) {  
    eval { 
     $ftp->login($USERNAME,$PASSWORD) or warn "Cannot login ", $ftp->message; 
     $ftp->binary(); 

     $ftp->putfile($filename) or warn "Cannot upload ($filename)", $ftp->message; 
     $ftp->quit(); 
    }; 
} 
else { 
    warn "Cannot connect to $FTPSERVER: [email protected]"; 
} 
} 
+0

你爲什麼認爲這是你的腳本的錯誤,而不是你的憑據?你確認了嗎? – Mat 2011-12-30 15:50:00

+0

您的身份驗證不正確。檢查你的用戶名和密碼,並嘗試與另一個客戶端FTP,看看他們的工作。 – gpojd 2011-12-30 15:50:45

+0

這就是要點,憑證可以與FireFTP一起使用。 – user1095332 2011-12-30 15:54:55

回答

3

與此啓動腳本關閉:

use strict; 
use warnings; 

然後確保Perl不嘗試interpolate任何東西在你的UN/PW。

my $USERNAME = '[email protected]'; ## notice the single quotes 
my $PASSWORD = 'mypass'; 

鑑於您的錯誤,它應該與這些更改一起工作。如果從一開始就使用strictwarnings編譯指示,那麼將更容易捕獲。

0

使用模塊 「Net::FTP::Simple

@send = Net::FTP::Simple->send_files({ 
    username  => $user, 
    password  => $pass, 
    server   => $host, 
    remote_dir  => $path, 
    debug_ftp  => 0, 
    files   => [ 
     $file, 
    ], 
}); 

print "The following files were retrieved successfully:\n\t", 
    join("\n\t", @send), "\n" 
     if @send; 
+0

「PerlApp無法找到網絡\ FTP \ Simple.pm」 – user1095332 2011-12-30 16:55:12

+0

它看起來像你有net :: FTP :: Simple,而不是Net :: FTP :: Simple。我希望你必須從cpan安裝它。無論哪種方式,它都不會解決您的身份驗證問題。 – gpojd 2011-12-30 16:57:33

0

確實來自同一個IP的測試?

此外,請嘗試使用用戶名&用引號括起來,如gpojd建議。

0

嘗試$ ftp-> put而不是$ ftp-> putfile。我沒有在文檔中看到putfile。