Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
[ANN] Net::SFTP 0.5.0
Jamis Buck
12/2/2004 3:09:00 PM
Net::SFTP is a pure-Ruby implementation of the SFTP client protocol,
versions 1 through 5. It requires Net::SSH 0.6.0.
project page:
http://rubyforge.org/projec...
Documentation is severely lacking in this release, and I apologize for
that. But I'm wanting to try something new for the user manual, and I
figured I'd rather release something now without the user manual, than
wait a few more weeks (or more) while the user manual solidifies.
(Incidentally, you can join the net-ssh-users mailing list if you want
help using either Net::SFTP or Net::SSH:
http://rubyforge.org/mailman/listinfo/net...
)
So, in lieu of real documentation, here are a few usage examples:
1. Transfering a remote file to the local filesystem:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
handle = sftp.open( "/path/to/remote/file.txt" )
contents = sftp.read( handle )
sftp.close_handle( handle )
File.open( "/path/to/local/file.txt ) { |f| f.write contents }
end
(Yes, I know the "open" should mimic the transactional interface
provided by, for instance, File, but it can't right now. A later release
will provide a #open_handle convenience method for doing that.)
2. Transfering a local file to the remote file system:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
contents = File.read( "/path/to/local/file.txt" )
handle = sftp.open( "/path/to/remote/file.txt",
IO::WRITE | IO::CREAT )
contents = sftp.write( handle, contents )
sftp.close_handle( handle )
end
3. Getting a list of the contents of a remote directory:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
handle = sftp.opendir( "/path/to/remote/dir" )
sftp.readdir( handle ).each { |item| puts item.filename }
sftp.close_handle( handle )
end
4. Querying (for instance) the size of a remote file:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
size = sftp.stat( "/path/to/remote/file.txt" ).size
end
5. Creating and remove a remote directory:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
sftp.mkdir( "/path/to/remote/directory", :permissions => 0660 )
sftp.rmdir( "/path/to/remote/directory )
end
6. Changing the user and/or owner of a file:
require 'net/sftp'
Net::SFTP.start( 'remote.host' ) do |sftp|
sftp.setstat( "/path/to/file.txt",
:uid => 1001,
:gid => 100 )
end
(Yah, that's kind of nasty, how it uses the id numbers directly, but
that's the way the SFTP protocol does it, prior to version 4, and all
SFTP servers that I know of only support up to version 3.)
Anyway, there are more examples in the 'examples' subdirectory of the
distribution. Enjoy!
- Jamis
--
Jamis Buck
jgb3@email.byu.edu
http://www.jamisbuck...
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
[ANN] Net::SFTP 0.5.0
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password