Re: FTPS - How to connect with Ruby?
- From: castillo.bryan@xxxxxxxxx
- Date: 20 Mar 2007 22:51:34 -0700
On Mar 20, 10:40 am, "ChrisKaelin" <c...@xxxxxxxxxxxxxx> wrote:
On 20 Mrz., 17:42, "Jan Veselý" <janvesely....@xxxxxxxxx> wrote:
Hello, I'm new to Ruby and have the first problem I can't solve myself
after a lot of googling - connecting to a FTPS server (FTP AUTH TLS/
SSL).
- there's some library called chilkat, but it's not free (for this
little script it's really too expensive to solve it that way)
- ftpfxp library is targeted on fxp transfers, but it connects ok -
but it doesn't seem like a good library for normal ftp-related work
- the standard ftp library doesn't look like it has some support for
firewall/proxy to get there a program like TLSWrap between client and
server and solve the problem
- I found some curl library in prealfa state that could possibly help
me somehow - but it looks like the last solution when everything else
fails (prealfa, weird installation)
Could you please give me a hint?
Try net/sftp Module. With that I made a backup script on window$ using
scp and/or sftp, because rsync is not available on the server, I have
to back up.
net/sftp project:http://raa.ruby-lang.org/project/net-sftp/
Unfortunately, sftp is a different protocol than FTPS and that module
probably won't help.
(3 months ago I received a spec saying my company would communicate
with another company using SFTP, only to figure out after code had
been written that they meant FTPS.)
I looked in my install of ruby and found a file net/ftptls.rb. That
code looks like it's only for Implicit FTPS, not explicit. I'd try it
anyway.
The code I ended up writing (in Java) was a class that interfaced to
the curl command line client. It worked very well. As dirty as it
seemed at the time, I still think it was better than writing JNI to
the curl C interface.
Here is a quick and dirty class to interface to the curl command line
client from ruby. This should work for FTPS, if your curl client was
compiled with it. curl -V will list the protocols it supports.
class CurlFtp
CURL = "curl"
def initialize(url, user, pass, verbose=false)
@url = url
@user = user
@pass = pass
@verboseFlag = (verbose) ? '-v' : ''
end
def put(path, &block)
command = sprintf "'%s' %s --upload-file - --user '%s:%s' '%s/
%s'",
CURL, @verboseFlag, @user, @pass, @url, path
IO.popen(command, "w", &block)
raise "Curl error: #{$?.to_i / 256}" if $? != 0
end
def get(path, &block)
command = sprintf "'%s' %s --user '%s:%s' '%s/%s'",
CURL, @verboseFlag, @user, @pass, @url, CGI.escape(path)
IO.popen(command, "r", &block)
raise "Curl error: #{$?.to_i / 256}" if $? != 0
end
end
ftp = CurlFtp.new('ftp://localhost:21', 'bcastill', 'pass', false)
ftp.put('/upload/file.txt') do |io|
io.puts("Writing to FTP server....")
end
puts "Getting data:"
ftp.get('/upload/file.txt') do |io|
io.each_line do |line|
puts "LINE: #{line}"
end
end
.
- Follow-Ups:
- Re: FTPS - How to connect with Ruby?
- From: Jan Veselý
- Re: FTPS - How to connect with Ruby?
- From: castillo . bryan
- Re: FTPS - How to connect with Ruby?
- References:
- FTPS - How to connect with Ruby?
- From: Jan Veselý
- Re: FTPS - How to connect with Ruby?
- From: ChrisKaelin
- FTPS - How to connect with Ruby?
- Prev by Date: Re: eRuby questions
- Next by Date: Re: FTPS - How to connect with Ruby?
- Previous by thread: Re: FTPS - How to connect with Ruby?
- Next by thread: Re: FTPS - How to connect with Ruby?
- Index(es):
Relevant Pages
|
|