bump version to 1.6, fix up docs a little bit
This commit is contained in:
Robey Pointer 2006-05-10 18:33:13 -07:00
parent 6f4110a066
commit af4b8fedc9
4 changed files with 31 additions and 26 deletions

View File

@ -19,6 +19,8 @@
# rhydon (04dec05) - 1.5.2 # rhydon (04dec05) - 1.5.2
# squirtle (19feb06) - 1.5.3 # squirtle (19feb06) - 1.5.3
# tentacool (11mar06) - 1.5.4 # tentacool (11mar06) - 1.5.4
# umbreon (10may06) - 1.6
release: release:
python ./setup.py sdist --formats=zip python ./setup.py sdist --formats=zip

38
README
View File

@ -1,5 +1,5 @@
paramiko 1.5.4 paramiko 1.6
"tentacool" release, 11 mar 2006 "umbreon" release, 10 may 2006
Copyright (c) 2003-2006 Robey Pointer <robey@lag.net> Copyright (c) 2003-2006 Robey Pointer <robey@lag.net>
@ -83,21 +83,20 @@ probably the simplest demo of all is this:
import paramiko, base64 import paramiko, base64
key = paramiko.RSAKey(data=base64.decodestring('AAA...')) key = paramiko.RSAKey(data=base64.decodestring('AAA...'))
t = paramiko.Transport('ssh.example.com') client = paramiko.SSHClient()
t.connect(username='strongbad', password='thecheat', hostkey=key) client.get_host_keys().add('ssh.example.com', 'ssh-rsa', key)
chan = t.open_session() client.connect('ssh.example.com', username='strongbad', password='thecheat')
chan.exec_command('ls') stdin, stdout, stderr = client.exec_command('ls')
for line in chan.makefile('r+'): for line in stdout:
print '... ' + line.strip('\n') print '... ' + line.strip('\n')
chan.close() client.close()
t.close()
...which prints out the results of executing 'ls' on a remote server. ...which prints out the results of executing 'ls' on a remote server.
(the host key 'AAA...' should of course be replaced by the actual base64 (the host key 'AAA...' should of course be replaced by the actual base64
encoding of the host key. if you skip host key verification, the encoding of the host key. if you skip host key verification, the
connection is not secure!) connection is not secure!)
the following example scripts get progressively more detailed: the following example scripts (in demos/) get progressively more detailed:
demo_simple.py demo_simple.py
calls invoke_shell() and emulates a terminal/tty through which you can calls invoke_shell() and emulates a terminal/tty through which you can
@ -132,15 +131,22 @@ ever would have before.
there are also unit tests here: there are also unit tests here:
$ python ./test.py $ python ./test.py
which will verify that some of the core components are working correctly. which will verify that most of the core components are working correctly.
not much is tested yet, but it's a start. the tests for SFTP are probably
the best and easiest examples of how to use the SFTP class.
*** WHAT'S NEW *** WHAT'S NEW
highlights of what's new in each release: highlights of what's new in each release:
v1.6 UMBREON
* pageant support on Windows thanks to john arbash meinel and todd whiteman
* fixed unit tests to work under windows and cygwin (thanks to alexander
belchenko for debugging)
* various bugfixes/tweaks to SFTP file prefetch
* added SSHClient for a higher-level API
* SFTP readv() now yields results as it gets them
* several APIs changed to throw an exception instead of "False" on failure
v1.5.4 TENTACOOL v1.5.4 TENTACOOL
* fixed HostKeys to more correctly emulate a python dict * fixed HostKeys to more correctly emulate a python dict
* fixed a bug where file read buffering was too aggressive * fixed a bug where file read buffering was too aggressive
@ -267,15 +273,11 @@ v1.0 JIGGLYPUFF
*** MISSING LINKS *** MISSING LINKS
* [sigh] release a fork of pycrypto with the speed improvements * [sigh] release a fork of pycrypto with the speed improvements
--- BEFORE 1.6: ---
* try making bzr use SSHClient
* host-based auth (yuck!) * host-based auth (yuck!)
* ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr) * ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr)
* sftp protocol 6 support (ugh....) -- once it settles down more * sftp protocol 6 support (ugh....) -- once it settles down more
* make a simple example demonstrating use of SocketServer (besides forward.py?) * make a simple example demonstrating use of SocketServer (besides forward.py?)
* should SSHClient try to use openssh config files? * should SSHClient try to use openssh config files?
* figure out how to parse ssh.com encrypted key files? * figure out how to parse ssh.com encrypted key files?
* is it possible to poll on a set of events at once? * is it possible to poll on a set of events at once?
* potentially create only one thread shared by all Transports

View File

@ -26,8 +26,9 @@ replaced C{telnet} and C{rsh} for secure access to remote shells, but the
protocol also includes the ability to open arbitrary channels to remote protocol also includes the ability to open arbitrary channels to remote
services across an encrypted tunnel. (This is how C{sftp} works, for example.) services across an encrypted tunnel. (This is how C{sftp} works, for example.)
To use this package, pass a socket (or socket-like object) to a L{Transport}, The high-level client API starts with creation of an L{SSHClient} object.
and use L{start_server <Transport.start_server>} or For more direct control, pass a socket (or socket-like object) to a
L{Transport}, and use L{start_server <Transport.start_server>} or
L{start_client <Transport.start_client>} to negoatite L{start_client <Transport.start_client>} to negoatite
with the remote host as either a server or client. As a client, you are with the remote host as either a server or client. As a client, you are
responsible for authenticating using a password or private key, and checking responsible for authenticating using a password or private key, and checking
@ -46,7 +47,7 @@ released under the GNU Lesser General Public License (LGPL).
Website: U{http://www.lag.net/paramiko/} Website: U{http://www.lag.net/paramiko/}
@version: 1.5.4 (tentacool) @version: 1.6 (umbreon)
@author: Robey Pointer @author: Robey Pointer
@contact: robey@lag.net @contact: robey@lag.net
@license: GNU Lesser General Public License (LGPL) @license: GNU Lesser General Public License (LGPL)
@ -59,8 +60,8 @@ if sys.version_info < (2, 2):
__author__ = "Robey Pointer <robey@lag.net>" __author__ = "Robey Pointer <robey@lag.net>"
__date__ = "11 Mar 2005" __date__ = "10 May 2006"
__version__ = "1.6 (u?)" __version__ = "1.6 (umbreon)"
__version_info__ = (1, 6, 0) __version_info__ = (1, 6, 0)
__license__ = "GNU Lesser General Public License (LGPL)" __license__ = "GNU Lesser General Public License (LGPL)"

View File

@ -1,4 +1,4 @@
# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> # Copyright (C) 2003-2006 Robey Pointer <robey@lag.net>
# #
# This file is part of paramiko. # This file is part of paramiko.
# #
@ -42,13 +42,13 @@ except ImportError:
kw = {} kw = {}
setup(name = "paramiko", setup(name = "paramiko",
version = "1.5.4", version = "1.6",
description = "SSH2 protocol library", description = "SSH2 protocol library",
author = "Robey Pointer", author = "Robey Pointer",
author_email = "robey@lag.net", author_email = "robey@lag.net",
url = "http://www.lag.net/paramiko/", url = "http://www.lag.net/paramiko/",
packages = [ 'paramiko' ], packages = [ 'paramiko' ],
download_url = 'http://www.lag.net/paramiko/download/paramiko-1.5.4.zip', download_url = 'http://www.lag.net/paramiko/download/paramiko-1.6.zip',
license = 'LGPL', license = 'LGPL',
platforms = 'Posix; MacOS X; Windows', platforms = 'Posix; MacOS X; Windows',
classifiers = [ 'Development Status :: 5 - Production/Stable', classifiers = [ 'Development Status :: 5 - Production/Stable',