2011-07-27 93 views
1

我有一個相對簡單的腳本工作。腳本中沒有改變,我使用紅寶石1.8.6。net/ftp無效的參數錯誤

require 'net/ftp' 
ftp = Net:: FTP.new(ip) 
ftp.login(user=name,passwd=pass) 
ftp.chdir(pathHere) 
ftp.gettextfile('onhandapt.txt', File.basename('onhandapt.txt')) 
ftp.close 

我從通過IRB的步驟,我可以成功登錄,甚至發出ftp.list命令來獲得當前目錄下運行都知道,但ftp.chdir就是腳本失敗。在irb中,ftp.chdir命令產生'nil'。雙重檢查服務器上的路徑。從C中readline': Invalid argument (Errno::EINVAL) from c:/ruby/lib/ruby/1.8/net/ftp.rb:211:in函數getline」 :

該腳本產生這樣的錯誤: C:/ruby/lib/ruby/1.8/net/ftp.rb:211 /ruby/lib/ruby/1.8/net/ftp .rb:221:getmultiline' from c:/ruby/lib/ruby/1.8/net/ftp.rb:235:in getresp' from c:/ruby/lib/ruby/1.8/net/ftp.rb:251:in voidresp' from c:/ruby/lib/ruby/1.8/net/ftp.rb:274:in voidcmd' from c:/ruby/lib/ruby/1.8/monitor.rb :242:在synchronize' from c:/ruby/lib/ruby/1.8/net/ftp.rb:290:in sendport' from c:/ruby/lib/ruby/1.8/net/ftp.rb:298:in makeport' from c:/ruby/lib/ruby/1.8/net/ftp.rb:329:in transfercmd' from c:/ruby/lib/ruby/1.8/net/ftp.rb :421:retrlines' from c:/ruby/lib/ruby/1.8/monitor.rb:242:in同步' from c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in retrlines' from c:/ruby/lib/ruby/1.8/net/ftp.rb:518:in gettextfile'

想法歡迎。

+0

您是否嘗試過使用手動FTP客戶端來檢查您是否可以進入目標目錄?即你沒有處理某種權限問題或類似問題。 – Casper

回答

0

確保pathHere包含一個有效的路徑,而不是設置爲零

+0

路徑是正確的。在我的腳本中,我實際上發出了ftp.chdir('live/www')。在irb中,當我發出ftp.chdir('live')時,我可以步,它報告爲零。 – Mike

0

想通了。我們有一些辦公室網絡的變化。我現在需要使用被動模式,可以使用此命令設置:ftp.passive=true