From af4b8fedc918de87d3294b1afd77d8c4d3a0f4ac Mon Sep 17 00:00:00 2001 From: Robey Pointer Date: Wed, 10 May 2006 18:33:13 -0700 Subject: [PATCH] [project @ robey@lag.net-20060511013313-411d1524da3b53f0] bump version to 1.6, fix up docs a little bit --- Makefile | 2 ++ README | 38 ++++++++++++++++++++------------------ paramiko/__init__.py | 11 ++++++----- setup.py | 6 +++--- 4 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index b120a6d..629b3fd 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,8 @@ # rhydon (04dec05) - 1.5.2 # squirtle (19feb06) - 1.5.3 # tentacool (11mar06) - 1.5.4 +# umbreon (10may06) - 1.6 + release: python ./setup.py sdist --formats=zip diff --git a/README b/README index 63ec6f0..2af7a96 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ -paramiko 1.5.4 -"tentacool" release, 11 mar 2006 +paramiko 1.6 +"umbreon" release, 10 may 2006 Copyright (c) 2003-2006 Robey Pointer @@ -83,21 +83,20 @@ probably the simplest demo of all is this: import paramiko, base64 key = paramiko.RSAKey(data=base64.decodestring('AAA...')) - t = paramiko.Transport('ssh.example.com') - t.connect(username='strongbad', password='thecheat', hostkey=key) - chan = t.open_session() - chan.exec_command('ls') - for line in chan.makefile('r+'): + client = paramiko.SSHClient() + client.get_host_keys().add('ssh.example.com', 'ssh-rsa', key) + client.connect('ssh.example.com', username='strongbad', password='thecheat') + stdin, stdout, stderr = client.exec_command('ls') + for line in stdout: print '... ' + line.strip('\n') - chan.close() - t.close() + client.close() ...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 encoding of the host key. if you skip host key verification, the 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 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: $ python ./test.py -which will verify that some 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. +which will verify that most of the core components are working correctly. *** WHAT'S NEW 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 * fixed HostKeys to more correctly emulate a python dict * fixed a bug where file read buffering was too aggressive @@ -267,15 +273,11 @@ v1.0 JIGGLYPUFF *** MISSING LINKS * [sigh] release a fork of pycrypto with the speed improvements - ---- BEFORE 1.6: --- -* try making bzr use SSHClient - * host-based auth (yuck!) * ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr) * sftp protocol 6 support (ugh....) -- once it settles down more * make a simple example demonstrating use of SocketServer (besides forward.py?) * should SSHClient try to use openssh config files? * figure out how to parse ssh.com encrypted key files? - * is it possible to poll on a set of events at once? +* potentially create only one thread shared by all Transports diff --git a/paramiko/__init__.py b/paramiko/__init__.py index 9cc6be3..e134677 100644 --- a/paramiko/__init__.py +++ b/paramiko/__init__.py @@ -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 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}, -and use L{start_server } or +The high-level client API starts with creation of an L{SSHClient} object. +For more direct control, pass a socket (or socket-like object) to a +L{Transport}, and use L{start_server } or L{start_client } to negoatite 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 @@ -46,7 +47,7 @@ released under the GNU Lesser General Public License (LGPL). Website: U{http://www.lag.net/paramiko/} -@version: 1.5.4 (tentacool) +@version: 1.6 (umbreon) @author: Robey Pointer @contact: robey@lag.net @license: GNU Lesser General Public License (LGPL) @@ -59,8 +60,8 @@ if sys.version_info < (2, 2): __author__ = "Robey Pointer " -__date__ = "11 Mar 2005" -__version__ = "1.6 (u?)" +__date__ = "10 May 2006" +__version__ = "1.6 (umbreon)" __version_info__ = (1, 6, 0) __license__ = "GNU Lesser General Public License (LGPL)" diff --git a/setup.py b/setup.py index 3d6d315..003bc39 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2005 Robey Pointer +# Copyright (C) 2003-2006 Robey Pointer # # This file is part of paramiko. # @@ -42,13 +42,13 @@ except ImportError: kw = {} setup(name = "paramiko", - version = "1.5.4", + version = "1.6", description = "SSH2 protocol library", author = "Robey Pointer", author_email = "robey@lag.net", url = "http://www.lag.net/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', platforms = 'Posix; MacOS X; Windows', classifiers = [ 'Development Status :: 5 - Production/Stable',