SFTP version 0.5 by Peter Strand (peter@fisk.helsingborg.se)

First I'll want to make one thing clear, this program contains bugs! And lots of them :)

But if nothing unexpected happens everything should work, it's the error handling (the boring part of programming) that needs some work. But I'm trying to eliminate the bugs (and introducing new interesting ones) when I've got time and this will hopefully be a useful program one day :) In the meantime would I be very happy if you send me bug reports and describe what happend and under which circumstances (I know that the program can crash, but I have to now when it crashes to be able to do something about it). My email-address is peter@fisk.helsingborg.se

I've developed this under Linux but it should work under most unixes, if you have problem then tell me and I'll see what I can do about it. It also works (sort of) under windows (95 or NT) with the cygnus gcc port, you can get it at www.cygnus.com/gnu-win32/ (background downloading doesn't work and it may crash unexpectedly... I'm working on it...)

I'm constantly working on this program, there's something new almost every week, so get the latest version If you happen to like the concept! Look in the TODO file to see some of my future plans. But if you have an idea you think is great then don't hesitate, mail me! (I'll credit you if you want and if your idea is good) And now, some of the features, or bugs :)


There are shortcuts for all commands:
ie:
sftp> g file   
is the same as:
sftp> get file
You'll get a list of all commands with the ? key (or the "keys" command)
The listed files are numbered for faster referencing:
example:
sftp> l
#1	bin		#2	lib
#3	etc		#4	pub
#5	welcome.msg
sftp> g #5
150 Opening BINARY mode data connection for welcome.msg (346 bytes).
       346 bytes recieved (100%)
226 Transfer complete.
sftp> c #4
250 CWD command successful.
sftp> 

You can get many files at the same time, and you can mix numbers and real filenames:
example:
sftp> g #1-5 #7,9,11 #56 #87
sftp> g linux-2.1.52.tar.gz #1 patch-2.1.52.gz 

You can view files with the v (view) command, it uses you're favourite pager (more, less, ... or whatever) by examine your $PAGER variable.
example:
sftp> view README
This will fork of $PAGER and feed it with README
sftp> view README.gz 
This will run gzip(1) to uncompress the file and feed the result to $PAGER (unless the -p option is given). This works also for compressed(1) files.
You can mark files and retrieve them in the end of you're session. (This is good if you're on a slow link and don't want to wait for every file.)
example:
sftp> d
150 Opening BINARY mode data connection for /bin/ls.
        total 8326
#1      dr-xr-xr-x   4 root     root         1024 Sep  6 19:53 .
#2      dr-xr-xr-x   6 root     root         1024 Jul 24 19:47 ..
#3      drwxr-x-wx   2 root     root         1024 Sep  6 19:53 incoming
#4      -rwxr-xr-x   1 root     root      8485996 Sep  6 19:51 linux-2.1.50.tar.gz
#5      drwxr-xr-x   2 root     root         1024 Sep  6 19:53 patch
sftp> m #4
sftp> c #5
250 CWD command successful.
sftp> d
150 Opening BINARY mode data connection for /bin/ls.
        total 824
#1      drwxr-xr-x   2 root     root         1024 Sep  6 19:53 .
#2      dr-xr-xr-x   4 root     root         1024 Sep  6 19:53 ..
#3      -rwxr-xr-x   1 root     root       390688 Sep  6 19:52 patch-2.1.51.gz
#4      -rwxr-xr-x   1 root     root        87491 Sep  6 19:51 patch-2.1.52.gz
#5      -rwxr-xr-x   1 root     root       354787 Sep  6 19:51 patch-2.1.53.gz
sftp> m #3-5
sftp> L
/pub/linux-2.1.50.tar.gz
/pub/patch/patch-2.1.51.gz
/pub/patch/patch-2.1.52.gz
/pub/patch/patch-2.1.53.gz
sftp> G
The 'G' gets all marked files.
With the set command can you alter the global options, these can also be altered "locally" by options to the commands
example:
sftp> set r
sftp> set m
sftp> get linux/kernel/v2.1
is (almost, the options don't change globally) the same as:
sftp> get -rm linux/kernel/v2.1

You can use the -n option to retry the connection (for busy ftp-sites)
sftp> open -a -n 100 ftp-host
This will try to connect 100 times in a row...
sftp> open -a -n 100:30 ftp-host
This is better, it sleeps for 30 seconds between the tries...
And, finally, background downloading:
sftp> get -b linux-2.1.51.tar.gz
sftp> 
this forks of a child which loggs in to the server and gets the wanted file.. If you're on a slow machine or a slow line then don't try the following :)
sftp> get -b #1-200

Well... there's more... but I don't like writing docs...
If you want to find out more about the program... read the source :) (or ask me by email...)