2015-01-28 2 views
0

FTP를 통해 파일을 업로드하는 루비 스크립트가 있습니다. LINUX 서버에서이를 테스트했으며 업로드가 잘 진행되고있었습니다.Ruby FTP가 IIS FTP 서버와 작동하지 않습니다.

A Connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - connect<2> <Errno::ETIMEDOUT> 

내가 그러나 FTPlog에서 연결을 찾을 수 있습니까 :

을 나는 윈도우 서버 2012 R2를 실행 IIS이다 프로덕션 서버에 업로드 대상을 변경하는 경우

는하지만, 나는 다음과 같은 오류 메시지를 받았습니다

2015-01-28 10:48:55 12.34.56.78 - 87.65.43.21 21 ControlChannelOpened - - 0 0 0 0 0 
2015-01-28 10:48:55 12.34.56.78 - 87.65.43.21 21 USER .... 331 0 0 23 17 0 
2015-01-28 10:48:55 12.34.56.78 WIN-0CFF8VSL25E\.... 87.65.43.21 21 PASS *** 230 0 0 21 15 94 
2015-01-28 10:48:55 12.34.56.78 WIN-0CFF8VSL25E\.... 87.65.43.21 21 TYPE I 200 0 0 20 8 0 
2015-01-28 10:48:55 12.34.56.78 WIN-0CFF8VSL25E\.... 87.65.43.21 21 PASV - 227 0 0 50 6 0 
2015-01-28 10:49:16 - WIN-0CFF8VSL25E\.... 87.65.43.21 49994 DataChannelClosed - - 0 0 0 0 0 
2015-01-28 10:49:16 12.34.56.78 WIN-0CFF8VSL25E\.... 87.65.43.21 21 ControlChannelClosed - - 0 0 141 46 21469 

오늘 윈도우 스크립트 ftp cli를 사용하여 배치 스크립트로 거의 동일한 작업을 수행하고 있습니다. 그것은 다른 서버와 잘 작동 된 이후 나는 스크립트에 문제가없는 가정입니다

require "net/ftp" 
require "rubygems" 
require "zip" 

puts "Copying data" 
FileUtils.cp("...", "...") 

folder = "C:\\..." 
input_filenames = ['...'] 

zipfile_name = "C:\\...\\....zip" 
puts "Compressing data" 
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| 
    input_filenames.each do |filename| 
    zipfile.add(filename, folder + '\\' + filename) 
    end 
end 

progress = 0.0; 
file_size = File.size(zipfile_name) 

NET::FTP.debug_mode = true 
puts "Uploading data:" 
ftp = Net::FTP.new('12.34.56.78','xxx','xxx') 
ftp.debug_mode = true 
ftp.read_timeout = 10000 
ftp.passive = true 
ftp.putbinaryfile('C:\\...\\....zip', '....zip') do |data| 
    progress = progress.to_f+data.length.to_f 
    print "\rProgress: " + ((progress/file_size)*100).round(2).to_s + "%" 
end 
ftp.close() 
puts "\nUpload completed!" 

: 여기

는 루비 코드입니다. 내가 가정하고있는 것은 IIS의 FTP 서버가 연결을 처리/응답하는 방식과 vsftpd가 처리하는 방식의 차이입니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

+1

이것은 데이터 연결을 차단하는 방식으로 방화벽과 비슷해 보입니다. –

+0

@Steffen Ullrich 나는 Windows ftp cli를 사용할 때, 동일한 클라이언트에서 동일한 호스트로, 그리고 연결할 수있는 로그에 따라 제대로 작동하기 때문에 어떻게 될지 모르지만, 그런 다음에 어떤 일이 발생합니다. – lshas

+0

Windows cli는 기본적으로 활성 모드를 사용하고 있지만 수동 모드를 사용하고 있습니다. 데이터 연결이 작동하지 않는 것은 NAT, 방화벽, 수동 및 활성 모드 간 상호 작용의 일반적인 문제입니다. –

답변

0

나는 수동으로 false로 설정하고 내 문제를 해결했습니다.

관련 문제