diff options
author | Jeremy T. Bouse <jbouse@debian.org> | 2009-11-27 16:25:55 -0500 |
---|---|---|
committer | Jeremy T. Bouse <jbouse@debian.org> | 2009-11-27 16:25:55 -0500 |
commit | e299181a5dda25aed4879ebcbe1359604448b3ae (patch) | |
tree | f2d18804fcc3367ca9c5e977c1618679b5a5e363 | |
parent | ed280d5ac360e2af796e9bd973d7b4df89f0c449 (diff) | |
download | python-paramiko-upstream/1.7.6.tar python-paramiko-upstream/1.7.6.tar.gz |
Imported Upstream version 1.7.6upstream/1.7.6
222 files changed, 8663 insertions, 7377 deletions
@@ -1,12 +1,12 @@ Metadata-Version: 1.0 Name: paramiko -Version: 1.7.4 +Version: 1.7.6 Summary: SSH2 protocol library Home-page: http://www.lag.net/paramiko/ Author: Robey Pointer -Author-email: robey@lag.net +Author-email: robeypointer@gmail.com License: LGPL -Download-URL: http://www.lag.net/paramiko/download/paramiko-1.7.4.zip +Download-URL: http://www.lag.net/paramiko/download/paramiko-1.7.6.zip Description: This is a library for making SSH2 connections (client or server). Emphasis is on using SSH2 as an alternative to SSL for making secure @@ -4,15 +4,15 @@ paramiko ======== :Paramiko: Python SSH module -:Copyright: Copyright (c) 2003-2008 Robey Pointer <robey@lag.net> +:Copyright: Copyright (c) 2003-2009 Robey Pointer <robeypointer@gmail.com> :License: LGPL :Homepage: http://www.lag.net/paramiko/ -paramiko 1.7.4 +paramiko 1.7.6 ============== -"Desmond" release, 06 july 2008 +"Fanny" release, 1 november 2009 What diff --git a/demos/demo.py b/demos/demo.py index c8346ce..05524d3 100755 --- a/demos/demo.py +++ b/demos/demo.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/demos/demo_server.py b/demos/demo_server.py index e7b0e61..4972928 100755..100644 --- a/demos/demo_server.py +++ b/demos/demo_server.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/demos/demo_sftp.py b/demos/demo_sftp.py index a823fb3..992615f 100755 --- a/demos/demo_sftp.py +++ b/demos/demo_sftp.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/demos/demo_simple.py b/demos/demo_simple.py index 5bcc214..231da8d 100755 --- a/demos/demo_simple.py +++ b/demos/demo_simple.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -59,43 +59,26 @@ if username == '': password = getpass.getpass('Password for %s@%s: ' % (username, hostname)) -# get host key, if we know one -hostkeytype = None -hostkey = None +# now, connect and use paramiko Client to negotiate SSH2 across the connection try: - host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts')) -except IOError: - try: - # try ~/ssh/ too, because windows can't have a folder named ~/.ssh/ - host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts')) - except IOError: - print '*** Unable to open host keys file' - host_keys = {} - -if host_keys.has_key(hostname): - hostkeytype = host_keys[hostname].keys()[0] - hostkey = host_keys[hostname][hostkeytype] - print 'Using host key of type %s' % hostkeytype - - -# now, connect and use paramiko Transport to negotiate SSH2 across the connection -try: - t = paramiko.Transport((hostname, port)) - t.connect(username=username, password=password, hostkey=hostkey) - chan = t.open_session() - chan.get_pty() - chan.invoke_shell() + client = paramiko.SSHClient() + client.load_system_host_keys() + client.set_missing_host_key_policy(paramiko.WarningPolicy) + print '*** Connecting...' + client.connect(hostname, port, username, password) + chan = client.invoke_shell() + print repr(client.get_transport()) print '*** Here we go!' print interactive.interactive_shell(chan) chan.close() - t.close() + client.close() except Exception, e: print '*** Caught exception: %s: %s' % (e.__class__, e) traceback.print_exc() try: - t.close() + client.close() except: pass sys.exit(1) diff --git a/demos/forward.py b/demos/forward.py index 33c98ab..4e10785 100755..100644 --- a/demos/forward.py +++ b/demos/forward.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/demos/interactive.py b/demos/interactive.py index b80e661..4cbc617 100644 --- a/demos/interactive.py +++ b/demos/interactive.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/demos/rforward.py b/demos/rforward.py index 810fea6..ef4c532 100755 --- a/demos/rforward.py +++ b/demos/rforward.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2008 Robey Pointer <robey@lag.net> +# Copyright (C) 2008 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/docs/api-objects.txt b/docs/api-objects.txt index 5ef02ce..70270dc 100644 --- a/docs/api-objects.txt +++ b/docs/api-objects.txt @@ -1,4 +1,5 @@ paramiko paramiko-module.html +paramiko.__package__ paramiko-module.html#__package__ paramiko.__license__ paramiko-module.html#__license__ paramiko.__version_info__ paramiko-module.html#__version_info__ paramiko.__author__ paramiko-module.html#__author__ @@ -7,6 +8,7 @@ paramiko.agent paramiko.agent-module.html paramiko.agent.SSH2_AGENT_IDENTITIES_ANSWER paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER paramiko.agent.SSH2_AGENTC_REQUEST_IDENTITIES paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES paramiko.agent.SSH2_AGENTC_SIGN_REQUEST paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST +paramiko.agent.__package__ paramiko.agent-module.html#__package__ paramiko.agent.SSH2_AGENT_SIGN_RESPONSE paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE paramiko.auth_handler paramiko.auth_handler-module.html paramiko.auth_handler.AUTH_SUCCESSFUL paramiko.auth_handler-module.html#AUTH_SUCCESSFUL @@ -26,7 +28,7 @@ paramiko.auth_handler.AUTH_FAILED paramiko.auth_handler-module.html#AUTH_FAILED paramiko.auth_handler.MSG_CHANNEL_SUCCESS paramiko.auth_handler-module.html#MSG_CHANNEL_SUCCESS paramiko.auth_handler.MSG_USERAUTH_FAILURE paramiko.auth_handler-module.html#MSG_USERAUTH_FAILURE paramiko.auth_handler.MSG_REQUEST_FAILURE paramiko.auth_handler-module.html#MSG_REQUEST_FAILURE -paramiko.auth_handler.randpool paramiko.auth_handler-module.html#randpool +paramiko.auth_handler.__package__ paramiko.auth_handler-module.html#__package__ paramiko.auth_handler.MSG_CHANNEL_DATA paramiko.auth_handler-module.html#MSG_CHANNEL_DATA paramiko.auth_handler.AUTH_PARTIALLY_SUCCESSFUL paramiko.auth_handler-module.html#AUTH_PARTIALLY_SUCCESSFUL paramiko.auth_handler.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.auth_handler-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -54,12 +56,15 @@ paramiko.auth_handler.MSG_SERVICE_REQUEST paramiko.auth_handler-module.html#MSG_ paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA paramiko.auth_handler-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.auth_handler.MSG_CHANNEL_CLOSE paramiko.auth_handler-module.html#MSG_CHANNEL_CLOSE paramiko.auth_handler.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.auth_handler-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.auth_handler.randpool paramiko.auth_handler-module.html#randpool paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.auth_handler.MSG_CHANNEL_EOF paramiko.auth_handler-module.html#MSG_CHANNEL_EOF paramiko.auth_handler.MSG_USERAUTH_SUCCESS paramiko.auth_handler-module.html#MSG_USERAUTH_SUCCESS paramiko.auth_handler.CONNECTION_FAILED_CODE paramiko.auth_handler-module.html#CONNECTION_FAILED_CODE paramiko.ber paramiko.ber-module.html +paramiko.ber.__package__ paramiko.ber-module.html#__package__ paramiko.buffered_pipe paramiko.buffered_pipe-module.html +paramiko.buffered_pipe.__package__ paramiko.buffered_pipe-module.html#__package__ paramiko.channel paramiko.channel-module.html paramiko.channel.AUTH_SUCCESSFUL paramiko.channel-module.html#AUTH_SUCCESSFUL paramiko.channel.MSG_KEXINIT paramiko.channel-module.html#MSG_KEXINIT @@ -78,7 +83,7 @@ paramiko.channel.MSG_CHANNEL_SUCCESS paramiko.channel-module.html#MSG_CHANNEL_SU paramiko.channel.MSG_USERAUTH_FAILURE paramiko.channel-module.html#MSG_USERAUTH_FAILURE paramiko.channel.MSG_REQUEST_FAILURE paramiko.channel-module.html#MSG_REQUEST_FAILURE paramiko.channel.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.channel-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED -paramiko.channel.randpool paramiko.channel-module.html#randpool +paramiko.channel.__package__ paramiko.channel-module.html#__package__ paramiko.channel.MSG_CHANNEL_DATA paramiko.channel-module.html#MSG_CHANNEL_DATA paramiko.channel.CRITICAL paramiko.channel-module.html#CRITICAL paramiko.channel.MSG_IGNORE paramiko.channel-module.html#MSG_IGNORE @@ -107,6 +112,7 @@ paramiko.channel.MSG_SERVICE_REQUEST paramiko.channel-module.html#MSG_SERVICE_RE paramiko.channel.MSG_CHANNEL_EXTENDED_DATA paramiko.channel-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.channel.MSG_CHANNEL_CLOSE paramiko.channel-module.html#MSG_CHANNEL_CLOSE paramiko.channel.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.channel-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.channel.randpool paramiko.channel-module.html#randpool paramiko.channel.MSG_CHANNEL_OPEN_SUCCESS paramiko.channel-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.channel.MSG_CHANNEL_EOF paramiko.channel-module.html#MSG_CHANNEL_EOF paramiko.channel.MSG_USERAUTH_SUCCESS paramiko.channel-module.html#MSG_USERAUTH_SUCCESS @@ -120,9 +126,11 @@ paramiko.client.MSG_NAMES paramiko.client-module.html#MSG_NAMES paramiko.client.MSG_REQUEST_FAILURE paramiko.client-module.html#MSG_REQUEST_FAILURE paramiko.client.MSG_CHANNEL_OPEN paramiko.client-module.html#MSG_CHANNEL_OPEN paramiko.client.MSG_SERVICE_REQUEST paramiko.client-module.html#MSG_SERVICE_REQUEST +paramiko.client.__package__ paramiko.client-module.html#__package__ paramiko.client.MSG_DISCONNECT paramiko.client-module.html#MSG_DISCONNECT paramiko.client.DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE paramiko.client-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE paramiko.client.MSG_SERVICE_ACCEPT paramiko.client-module.html#MSG_SERVICE_ACCEPT +paramiko.client.SSH_PORT paramiko.client-module.html#SSH_PORT paramiko.client.MSG_IGNORE paramiko.client-module.html#MSG_IGNORE paramiko.client.WARNING paramiko.client-module.html#WARNING paramiko.client.MSG_GLOBAL_REQUEST paramiko.client-module.html#MSG_GLOBAL_REQUEST @@ -178,7 +186,7 @@ paramiko.common.MSG_USERAUTH_INFO_RESPONSE paramiko.common-module.html#MSG_USERA paramiko.common.MSG_CHANNEL_SUCCESS paramiko.common-module.html#MSG_CHANNEL_SUCCESS paramiko.common.MSG_USERAUTH_FAILURE paramiko.common-module.html#MSG_USERAUTH_FAILURE paramiko.common.MSG_REQUEST_FAILURE paramiko.common-module.html#MSG_REQUEST_FAILURE -paramiko.common.randpool paramiko.common-module.html#randpool +paramiko.common.__package__ paramiko.common-module.html#__package__ paramiko.common.MSG_CHANNEL_DATA paramiko.common-module.html#MSG_CHANNEL_DATA paramiko.common.CRITICAL paramiko.common-module.html#CRITICAL paramiko.common.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.common-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -207,12 +215,15 @@ paramiko.common.AUTH_FAILED paramiko.common-module.html#AUTH_FAILED paramiko.common.MSG_CHANNEL_EXTENDED_DATA paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.common.MSG_CHANNEL_CLOSE paramiko.common-module.html#MSG_CHANNEL_CLOSE paramiko.common.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.common.randpool paramiko.common-module.html#randpool paramiko.common.MSG_CHANNEL_OPEN_SUCCESS paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.common.MSG_CHANNEL_EOF paramiko.common-module.html#MSG_CHANNEL_EOF paramiko.common.MSG_USERAUTH_SUCCESS paramiko.common-module.html#MSG_USERAUTH_SUCCESS paramiko.common.CONNECTION_FAILED_CODE paramiko.common-module.html#CONNECTION_FAILED_CODE paramiko.compress paramiko.compress-module.html +paramiko.compress.__package__ paramiko.compress-module.html#__package__ paramiko.config paramiko.config-module.html +paramiko.config.__package__ paramiko.config-module.html#__package__ paramiko.dsskey paramiko.dsskey-module.html paramiko.dsskey.AUTH_SUCCESSFUL paramiko.dsskey-module.html#AUTH_SUCCESSFUL paramiko.dsskey.MSG_KEXINIT paramiko.dsskey-module.html#MSG_KEXINIT @@ -231,7 +242,7 @@ paramiko.dsskey.MSG_GLOBAL_REQUEST paramiko.dsskey-module.html#MSG_GLOBAL_REQUES paramiko.dsskey.MSG_USERAUTH_INFO_RESPONSE paramiko.dsskey-module.html#MSG_USERAUTH_INFO_RESPONSE paramiko.dsskey.MSG_CHANNEL_SUCCESS paramiko.dsskey-module.html#MSG_CHANNEL_SUCCESS paramiko.dsskey.MSG_USERAUTH_FAILURE paramiko.dsskey-module.html#MSG_USERAUTH_FAILURE -paramiko.dsskey.randpool paramiko.dsskey-module.html#randpool +paramiko.dsskey.__package__ paramiko.dsskey-module.html#__package__ paramiko.dsskey.MSG_CHANNEL_DATA paramiko.dsskey-module.html#MSG_CHANNEL_DATA paramiko.dsskey.CRITICAL paramiko.dsskey-module.html#CRITICAL paramiko.dsskey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.dsskey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -259,11 +270,13 @@ paramiko.dsskey.AUTH_FAILED paramiko.dsskey-module.html#AUTH_FAILED paramiko.dsskey.MSG_CHANNEL_EXTENDED_DATA paramiko.dsskey-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.dsskey.MSG_CHANNEL_CLOSE paramiko.dsskey-module.html#MSG_CHANNEL_CLOSE paramiko.dsskey.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.dsskey-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.dsskey.randpool paramiko.dsskey-module.html#randpool paramiko.dsskey.MSG_CHANNEL_OPEN_SUCCESS paramiko.dsskey-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.dsskey.MSG_CHANNEL_EOF paramiko.dsskey-module.html#MSG_CHANNEL_EOF paramiko.dsskey.MSG_USERAUTH_SUCCESS paramiko.dsskey-module.html#MSG_USERAUTH_SUCCESS paramiko.dsskey.CONNECTION_FAILED_CODE paramiko.dsskey-module.html#CONNECTION_FAILED_CODE paramiko.file paramiko.file-module.html +paramiko.file.__package__ paramiko.file-module.html#__package__ paramiko.hostkeys paramiko.hostkeys-module.html paramiko.hostkeys.AUTH_SUCCESSFUL paramiko.hostkeys-module.html#AUTH_SUCCESSFUL paramiko.hostkeys.MSG_KEXINIT paramiko.hostkeys-module.html#MSG_KEXINIT @@ -281,7 +294,7 @@ paramiko.hostkeys.MSG_GLOBAL_REQUEST paramiko.hostkeys-module.html#MSG_GLOBAL_RE paramiko.hostkeys.MSG_USERAUTH_INFO_RESPONSE paramiko.hostkeys-module.html#MSG_USERAUTH_INFO_RESPONSE paramiko.hostkeys.MSG_CHANNEL_SUCCESS paramiko.hostkeys-module.html#MSG_CHANNEL_SUCCESS paramiko.hostkeys.MSG_USERAUTH_FAILURE paramiko.hostkeys-module.html#MSG_USERAUTH_FAILURE -paramiko.hostkeys.randpool paramiko.hostkeys-module.html#randpool +paramiko.hostkeys.__package__ paramiko.hostkeys-module.html#__package__ paramiko.hostkeys.MSG_CHANNEL_DATA paramiko.hostkeys-module.html#MSG_CHANNEL_DATA paramiko.hostkeys.CRITICAL paramiko.hostkeys-module.html#CRITICAL paramiko.hostkeys.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.hostkeys-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -311,6 +324,7 @@ paramiko.hostkeys.AUTH_FAILED paramiko.hostkeys-module.html#AUTH_FAILED paramiko.hostkeys.MSG_CHANNEL_EXTENDED_DATA paramiko.hostkeys-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.hostkeys.MSG_CHANNEL_CLOSE paramiko.hostkeys-module.html#MSG_CHANNEL_CLOSE paramiko.hostkeys.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.hostkeys-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.hostkeys.randpool paramiko.hostkeys-module.html#randpool paramiko.hostkeys.MSG_CHANNEL_OPEN_SUCCESS paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.hostkeys.MSG_CHANNEL_EOF paramiko.hostkeys-module.html#MSG_CHANNEL_EOF paramiko.hostkeys.CONNECTION_FAILED_CODE paramiko.hostkeys-module.html#CONNECTION_FAILED_CODE @@ -332,7 +346,7 @@ paramiko.kex_gex.MSG_USERAUTH_INFO_RESPONSE paramiko.kex_gex-module.html#MSG_USE paramiko.kex_gex.MSG_CHANNEL_SUCCESS paramiko.kex_gex-module.html#MSG_CHANNEL_SUCCESS paramiko.kex_gex.MSG_USERAUTH_FAILURE paramiko.kex_gex-module.html#MSG_USERAUTH_FAILURE paramiko.kex_gex.MSG_REQUEST_FAILURE paramiko.kex_gex-module.html#MSG_REQUEST_FAILURE -paramiko.kex_gex.randpool paramiko.kex_gex-module.html#randpool +paramiko.kex_gex.__package__ paramiko.kex_gex-module.html#__package__ paramiko.kex_gex.MSG_CHANNEL_DATA paramiko.kex_gex-module.html#MSG_CHANNEL_DATA paramiko.kex_gex.CRITICAL paramiko.kex_gex-module.html#CRITICAL paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST_OLD paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST_OLD @@ -365,6 +379,7 @@ paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST paramiko.kex_gex-module.html#_MSG_KEXDH_ paramiko.kex_gex.MSG_CHANNEL_EXTENDED_DATA paramiko.kex_gex-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.kex_gex.MSG_CHANNEL_CLOSE paramiko.kex_gex-module.html#MSG_CHANNEL_CLOSE paramiko.kex_gex.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.kex_gex-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.kex_gex.randpool paramiko.kex_gex-module.html#randpool paramiko.kex_gex.MSG_CHANNEL_OPEN_SUCCESS paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.kex_gex.MSG_CHANNEL_EOF paramiko.kex_gex-module.html#MSG_CHANNEL_EOF paramiko.kex_gex.MSG_USERAUTH_SUCCESS paramiko.kex_gex-module.html#MSG_USERAUTH_SUCCESS @@ -389,7 +404,7 @@ paramiko.kex_group1.P paramiko.kex_group1-module.html#P paramiko.kex_group1.MSG_CHANNEL_SUCCESS paramiko.kex_group1-module.html#MSG_CHANNEL_SUCCESS paramiko.kex_group1.MSG_USERAUTH_FAILURE paramiko.kex_group1-module.html#MSG_USERAUTH_FAILURE paramiko.kex_group1.MSG_REQUEST_FAILURE paramiko.kex_group1-module.html#MSG_REQUEST_FAILURE -paramiko.kex_group1.randpool paramiko.kex_group1-module.html#randpool +paramiko.kex_group1.__package__ paramiko.kex_group1-module.html#__package__ paramiko.kex_group1.MSG_CHANNEL_DATA paramiko.kex_group1-module.html#MSG_CHANNEL_DATA paramiko.kex_group1.CRITICAL paramiko.kex_group1-module.html#CRITICAL paramiko.kex_group1.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.kex_group1-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -419,6 +434,7 @@ paramiko.kex_group1.AUTH_FAILED paramiko.kex_group1-module.html#AUTH_FAILED paramiko.kex_group1.MSG_CHANNEL_EXTENDED_DATA paramiko.kex_group1-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.kex_group1.MSG_CHANNEL_CLOSE paramiko.kex_group1-module.html#MSG_CHANNEL_CLOSE paramiko.kex_group1.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.kex_group1-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.kex_group1.randpool paramiko.kex_group1-module.html#randpool paramiko.kex_group1.MSG_CHANNEL_OPEN_SUCCESS paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.kex_group1.MSG_CHANNEL_EOF paramiko.kex_group1-module.html#MSG_CHANNEL_EOF paramiko.kex_group1.MSG_USERAUTH_SUCCESS paramiko.kex_group1-module.html#MSG_USERAUTH_SUCCESS @@ -427,11 +443,13 @@ paramiko.logging22 paramiko.logging22-module.html paramiko.logging22.INFO paramiko.logging22-module.html#INFO paramiko.logging22.WARNING paramiko.logging22-module.html#WARNING paramiko.logging22._logger paramiko.logging22-module.html#_logger +paramiko.logging22.__package__ paramiko.logging22-module.html#__package__ paramiko.logging22.getLogger paramiko.logging22-module.html#getLogger paramiko.logging22.CRITICAL paramiko.logging22-module.html#CRITICAL paramiko.logging22.ERROR paramiko.logging22-module.html#ERROR paramiko.logging22.DEBUG paramiko.logging22-module.html#DEBUG paramiko.message paramiko.message-module.html +paramiko.message.__package__ paramiko.message-module.html#__package__ paramiko.packet paramiko.packet-module.html paramiko.packet.AUTH_SUCCESSFUL paramiko.packet-module.html#AUTH_SUCCESSFUL paramiko.packet.MSG_KEXINIT paramiko.packet-module.html#MSG_KEXINIT @@ -452,7 +470,7 @@ paramiko.packet.MSG_CHANNEL_SUCCESS paramiko.packet-module.html#MSG_CHANNEL_SUCC paramiko.packet.MSG_USERAUTH_FAILURE paramiko.packet-module.html#MSG_USERAUTH_FAILURE paramiko.packet.compute_hmac paramiko.packet-module.html#compute_hmac paramiko.packet.MSG_REQUEST_FAILURE paramiko.packet-module.html#MSG_REQUEST_FAILURE -paramiko.packet.randpool paramiko.packet-module.html#randpool +paramiko.packet.__package__ paramiko.packet-module.html#__package__ paramiko.packet.MSG_CHANNEL_DATA paramiko.packet-module.html#MSG_CHANNEL_DATA paramiko.packet.CRITICAL paramiko.packet-module.html#CRITICAL paramiko.packet.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.packet-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -480,12 +498,14 @@ paramiko.packet.AUTH_FAILED paramiko.packet-module.html#AUTH_FAILED paramiko.packet.MSG_CHANNEL_EXTENDED_DATA paramiko.packet-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.packet.MSG_CHANNEL_CLOSE paramiko.packet-module.html#MSG_CHANNEL_CLOSE paramiko.packet.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.packet-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.packet.randpool paramiko.packet-module.html#randpool paramiko.packet.MSG_CHANNEL_OPEN_SUCCESS paramiko.packet-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.packet.MSG_CHANNEL_EOF paramiko.packet-module.html#MSG_CHANNEL_EOF paramiko.packet.MSG_USERAUTH_SUCCESS paramiko.packet-module.html#MSG_USERAUTH_SUCCESS paramiko.packet.CONNECTION_FAILED_CODE paramiko.packet-module.html#CONNECTION_FAILED_CODE paramiko.pipe paramiko.pipe-module.html paramiko.pipe.make_or_pipe paramiko.pipe-module.html#make_or_pipe +paramiko.pipe.__package__ paramiko.pipe-module.html#__package__ paramiko.pipe.make_pipe paramiko.pipe-module.html#make_pipe paramiko.pkey paramiko.pkey-module.html paramiko.pkey.AUTH_SUCCESSFUL paramiko.pkey-module.html#AUTH_SUCCESSFUL @@ -537,19 +557,25 @@ paramiko.pkey.MSG_CHANNEL_OPEN_SUCCESS paramiko.pkey-module.html#MSG_CHANNEL_OPE paramiko.pkey.MSG_CHANNEL_EOF paramiko.pkey-module.html#MSG_CHANNEL_EOF paramiko.pkey.MSG_USERAUTH_SUCCESS paramiko.pkey-module.html#MSG_USERAUTH_SUCCESS paramiko.pkey.CONNECTION_FAILED_CODE paramiko.pkey-module.html#CONNECTION_FAILED_CODE +paramiko.pkey.__package__ paramiko.pkey-module.html#__package__ paramiko.primes paramiko.primes-module.html paramiko.primes._roll_random paramiko.primes-module.html#_roll_random paramiko.primes._generate_prime paramiko.primes-module.html#_generate_prime +paramiko.primes.__package__ paramiko.primes-module.html#__package__ paramiko.resource paramiko.resource-module.html paramiko.resource.ResourceManager paramiko.resource-module.html#ResourceManager +paramiko.resource.__package__ paramiko.resource-module.html#__package__ paramiko.rng paramiko.rng-module.html paramiko.rng.rng_device paramiko.rng-module.html#rng_device +paramiko.rng.__package__ paramiko.rng-module.html#__package__ paramiko.rng._strxor paramiko.rng-module.html#_strxor paramiko.rng_posix paramiko.rng_posix-module.html +paramiko.rng_posix.__package__ paramiko.rng_posix-module.html#__package__ paramiko.rng_posix.open_rng_device paramiko.rng_posix-module.html#open_rng_device paramiko.rng_win32 paramiko.rng_win32-module.html paramiko.rng_win32._winrandom paramiko.rng_win32-module.html#_winrandom paramiko.rng_win32._open_winrandom paramiko.rng_win32-module.html#_open_winrandom +paramiko.rng_win32.__package__ paramiko.rng_win32-module.html#__package__ paramiko.rng_win32.open_rng_device paramiko.rng_win32-module.html#open_rng_device paramiko.rng_win32._open_urandom paramiko.rng_win32-module.html#_open_urandom paramiko.rsakey paramiko.rsakey-module.html @@ -602,6 +628,7 @@ paramiko.rsakey.MSG_CHANNEL_OPEN_SUCCESS paramiko.rsakey-module.html#MSG_CHANNEL paramiko.rsakey.MSG_CHANNEL_EOF paramiko.rsakey-module.html#MSG_CHANNEL_EOF paramiko.rsakey.MSG_USERAUTH_SUCCESS paramiko.rsakey-module.html#MSG_USERAUTH_SUCCESS paramiko.rsakey.CONNECTION_FAILED_CODE paramiko.rsakey-module.html#CONNECTION_FAILED_CODE +paramiko.rsakey.__package__ paramiko.rsakey-module.html#__package__ paramiko.server paramiko.server-module.html paramiko.server.AUTH_SUCCESSFUL paramiko.server-module.html#AUTH_SUCCESSFUL paramiko.server.MSG_KEXINIT paramiko.server-module.html#MSG_KEXINIT @@ -620,7 +647,7 @@ paramiko.server.AUTH_FAILED paramiko.server-module.html#AUTH_FAILED paramiko.server.MSG_CHANNEL_SUCCESS paramiko.server-module.html#MSG_CHANNEL_SUCCESS paramiko.server.MSG_USERAUTH_FAILURE paramiko.server-module.html#MSG_USERAUTH_FAILURE paramiko.server.MSG_REQUEST_FAILURE paramiko.server-module.html#MSG_REQUEST_FAILURE -paramiko.server.randpool paramiko.server-module.html#randpool +paramiko.server.__package__ paramiko.server-module.html#__package__ paramiko.server.MSG_CHANNEL_DATA paramiko.server-module.html#MSG_CHANNEL_DATA paramiko.server.CRITICAL paramiko.server-module.html#CRITICAL paramiko.server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.server-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -648,6 +675,7 @@ paramiko.server.MSG_SERVICE_REQUEST paramiko.server-module.html#MSG_SERVICE_REQU paramiko.server.MSG_CHANNEL_EXTENDED_DATA paramiko.server-module.html#MSG_CHANNEL_EXTENDED_DATA paramiko.server.MSG_CHANNEL_CLOSE paramiko.server-module.html#MSG_CHANNEL_CLOSE paramiko.server.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.server-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER +paramiko.server.randpool paramiko.server-module.html#randpool paramiko.server.MSG_CHANNEL_OPEN_SUCCESS paramiko.server-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.server.MSG_CHANNEL_EOF paramiko.server-module.html#MSG_CHANNEL_EOF paramiko.server.MSG_USERAUTH_SUCCESS paramiko.server-module.html#MSG_USERAUTH_SUCCESS @@ -673,6 +701,7 @@ paramiko.sftp.MSG_CHANNEL_EOF paramiko.sftp-module.html#MSG_CHANNEL_EOF paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp-module.html#SFTP_BAD_MESSAGE paramiko.sftp.PY22 paramiko.sftp-module.html#PY22 paramiko.sftp.CMD_READLINK paramiko.sftp-module.html#CMD_READLINK +paramiko.sftp.__package__ paramiko.sftp-module.html#__package__ paramiko.sftp.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp.MSG_NEWKEYS paramiko.sftp-module.html#MSG_NEWKEYS paramiko.sftp.MSG_USERAUTH_SUCCESS paramiko.sftp-module.html#MSG_USERAUTH_SUCCESS @@ -768,6 +797,7 @@ paramiko.sftp_attr.MSG_CHANNEL_EOF paramiko.sftp_attr-module.html#MSG_CHANNEL_EO paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_attr-module.html#SFTP_BAD_MESSAGE paramiko.sftp_attr.PY22 paramiko.sftp_attr-module.html#PY22 paramiko.sftp_attr.CMD_READLINK paramiko.sftp_attr-module.html#CMD_READLINK +paramiko.sftp_attr.__package__ paramiko.sftp_attr-module.html#__package__ paramiko.sftp_attr.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_attr-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_attr.MSG_NEWKEYS paramiko.sftp_attr-module.html#MSG_NEWKEYS paramiko.sftp_attr.MSG_USERAUTH_SUCCESS paramiko.sftp_attr-module.html#MSG_USERAUTH_SUCCESS @@ -863,6 +893,7 @@ paramiko.sftp_client.CMD_STAT paramiko.sftp_client-module.html#CMD_STAT paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_client-module.html#SFTP_BAD_MESSAGE paramiko.sftp_client.PY22 paramiko.sftp_client-module.html#PY22 paramiko.sftp_client.CMD_READLINK paramiko.sftp_client-module.html#CMD_READLINK +paramiko.sftp_client.__package__ paramiko.sftp_client-module.html#__package__ paramiko.sftp_client.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_client-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_client.MSG_NEWKEYS paramiko.sftp_client-module.html#MSG_NEWKEYS paramiko.sftp_client.MSG_USERAUTH_SUCCESS paramiko.sftp_client-module.html#MSG_USERAUTH_SUCCESS @@ -958,6 +989,7 @@ paramiko.sftp_file.CMD_STAT paramiko.sftp_file-module.html#CMD_STAT paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_file-module.html#SFTP_BAD_MESSAGE paramiko.sftp_file.PY22 paramiko.sftp_file-module.html#PY22 paramiko.sftp_file.CMD_READLINK paramiko.sftp_file-module.html#CMD_READLINK +paramiko.sftp_file.__package__ paramiko.sftp_file-module.html#__package__ paramiko.sftp_file.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_file-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_file.MSG_NEWKEYS paramiko.sftp_file-module.html#MSG_NEWKEYS paramiko.sftp_file.MSG_USERAUTH_SUCCESS paramiko.sftp_file-module.html#MSG_USERAUTH_SUCCESS @@ -1051,6 +1083,7 @@ paramiko.sftp_handle.MSG_CHANNEL_EOF paramiko.sftp_handle-module.html#MSG_CHANNE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_handle-module.html#SFTP_BAD_MESSAGE paramiko.sftp_handle.PY22 paramiko.sftp_handle-module.html#PY22 paramiko.sftp_handle.CMD_READLINK paramiko.sftp_handle-module.html#CMD_READLINK +paramiko.sftp_handle.__package__ paramiko.sftp_handle-module.html#__package__ paramiko.sftp_handle.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_handle-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_handle.MSG_NEWKEYS paramiko.sftp_handle-module.html#MSG_NEWKEYS paramiko.sftp_handle.MSG_USERAUTH_SUCCESS paramiko.sftp_handle-module.html#MSG_USERAUTH_SUCCESS @@ -1145,6 +1178,7 @@ paramiko.sftp_server.MSG_CHANNEL_EOF paramiko.sftp_server-module.html#MSG_CHANNE paramiko.sftp_server.SFTP_BAD_MESSAGE paramiko.sftp_server-module.html#SFTP_BAD_MESSAGE paramiko.sftp_server.PY22 paramiko.sftp_server-module.html#PY22 paramiko.sftp_server.CMD_READLINK paramiko.sftp_server-module.html#CMD_READLINK +paramiko.sftp_server.__package__ paramiko.sftp_server-module.html#__package__ paramiko.sftp_server.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_server-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_server.MSG_NEWKEYS paramiko.sftp_server-module.html#MSG_NEWKEYS paramiko.sftp_server.MSG_USERAUTH_SUCCESS paramiko.sftp_server-module.html#MSG_USERAUTH_SUCCESS @@ -1240,6 +1274,7 @@ paramiko.sftp_si.MSG_CHANNEL_EOF paramiko.sftp_si-module.html#MSG_CHANNEL_EOF paramiko.sftp_si.SFTP_BAD_MESSAGE paramiko.sftp_si-module.html#SFTP_BAD_MESSAGE paramiko.sftp_si.PY22 paramiko.sftp_si-module.html#PY22 paramiko.sftp_si.CMD_READLINK paramiko.sftp_si-module.html#CMD_READLINK +paramiko.sftp_si.__package__ paramiko.sftp_si-module.html#__package__ paramiko.sftp_si.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_si-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.sftp_si.MSG_NEWKEYS paramiko.sftp_si-module.html#MSG_NEWKEYS paramiko.sftp_si.MSG_USERAUTH_SUCCESS paramiko.sftp_si-module.html#MSG_USERAUTH_SUCCESS @@ -1314,6 +1349,7 @@ paramiko.sftp_si.CMD_REALPATH paramiko.sftp_si-module.html#CMD_REALPATH paramiko.sftp_si.MSG_CHANNEL_CLOSE paramiko.sftp_si-module.html#MSG_CHANNEL_CLOSE paramiko.sftp_si.MSG_CHANNEL_OPEN_SUCCESS paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.ssh_exception paramiko.ssh_exception-module.html +paramiko.ssh_exception.__package__ paramiko.ssh_exception-module.html#__package__ paramiko.transport paramiko.transport-module.html paramiko.transport.MSG_NAMES paramiko.transport-module.html#MSG_NAMES paramiko.transport.DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE paramiko.transport-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE @@ -1337,7 +1373,6 @@ paramiko.transport.MSG_USERAUTH_BANNER paramiko.transport-module.html#MSG_USERAU paramiko.transport.MSG_CHANNEL_EOF paramiko.transport-module.html#MSG_CHANNEL_EOF paramiko.transport.AUTH_FAILED paramiko.transport-module.html#AUTH_FAILED paramiko.transport.MSG_USERAUTH_PK_OK paramiko.transport-module.html#MSG_USERAUTH_PK_OK -paramiko.transport.MSG_REQUEST_SUCCESS paramiko.transport-module.html#MSG_REQUEST_SUCCESS paramiko.transport.AUTH_SUCCESSFUL paramiko.transport-module.html#AUTH_SUCCESSFUL paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST paramiko.transport-module.html#MSG_CHANNEL_WINDOW_ADJUST paramiko.transport.MSG_CHANNEL_REQUEST paramiko.transport-module.html#MSG_CHANNEL_REQUEST @@ -1357,14 +1392,16 @@ paramiko.transport.CONNECTION_FAILED_CODE paramiko.transport-module.html#CONNECT paramiko.transport.MSG_CHANNEL_OPEN paramiko.transport-module.html#MSG_CHANNEL_OPEN paramiko.transport.MSG_USERAUTH_INFO_RESPONSE paramiko.transport-module.html#MSG_USERAUTH_INFO_RESPONSE paramiko.transport.MSG_REQUEST_FAILURE paramiko.transport-module.html#MSG_REQUEST_FAILURE +paramiko.transport.__package__ paramiko.transport-module.html#__package__ paramiko.transport.AUTH_PARTIALLY_SUCCESSFUL paramiko.transport-module.html#AUTH_PARTIALLY_SUCCESSFUL paramiko.transport.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.transport-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.transport.MSG_CHANNEL_FAILURE paramiko.transport-module.html#MSG_CHANNEL_FAILURE -paramiko.transport.MSG_CHANNEL_CLOSE paramiko.transport-module.html#MSG_CHANNEL_CLOSE +paramiko.transport.MSG_REQUEST_SUCCESS paramiko.transport-module.html#MSG_REQUEST_SUCCESS paramiko.transport.OPEN_FAILED_CONNECT_FAILED paramiko.transport-module.html#OPEN_FAILED_CONNECT_FAILED paramiko.transport.MSG_USERAUTH_REQUEST paramiko.transport-module.html#MSG_USERAUTH_REQUEST paramiko.transport._join_lingering_threads paramiko.transport-module.html#_join_lingering_threads paramiko.transport.MSG_SERVICE_REQUEST paramiko.transport-module.html#MSG_SERVICE_REQUEST +paramiko.transport.MSG_CHANNEL_CLOSE paramiko.transport-module.html#MSG_CHANNEL_CLOSE paramiko.transport.MSG_CHANNEL_OPEN_SUCCESS paramiko.transport-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.util paramiko.util-module.html paramiko.util.AUTH_SUCCESSFUL paramiko.util-module.html#AUTH_SUCCESSFUL @@ -1373,7 +1410,7 @@ paramiko.util.MSG_KEXINIT paramiko.util-module.html#MSG_KEXINIT paramiko.util.MSG_CHANNEL_WINDOW_ADJUST paramiko.util-module.html#MSG_CHANNEL_WINDOW_ADJUST paramiko.util.MSG_CHANNEL_REQUEST paramiko.util-module.html#MSG_CHANNEL_REQUEST paramiko.util.MSG_NAMES paramiko.util-module.html#MSG_NAMES -paramiko.util.log_to_file paramiko.util-module.html#log_to_file +paramiko.util.get_thread_id paramiko.util-module.html#get_thread_id paramiko.util.lookup_ssh_host_config paramiko.util-module.html#lookup_ssh_host_config paramiko.util.MSG_CHANNEL_OPEN paramiko.util-module.html#MSG_CHANNEL_OPEN paramiko.util.tb_strings paramiko.util-module.html#tb_strings @@ -1382,7 +1419,6 @@ paramiko.util.MSG_REQUEST_SUCCESS paramiko.util-module.html#MSG_REQUEST_SUCCESS paramiko.util.MSG_DISCONNECT paramiko.util-module.html#MSG_DISCONNECT paramiko.util.DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE paramiko.util-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE paramiko.util.MSG_SERVICE_ACCEPT paramiko.util-module.html#MSG_SERVICE_ACCEPT -paramiko.util.get_thread_id paramiko.util-module.html#get_thread_id paramiko.util.MSG_IGNORE paramiko.util-module.html#MSG_IGNORE paramiko.util._g_thread_lock paramiko.util-module.html#_g_thread_lock paramiko.util.deflate_long paramiko.util-module.html#deflate_long @@ -1393,7 +1429,7 @@ paramiko.util.MSG_CHANNEL_SUCCESS paramiko.util-module.html#MSG_CHANNEL_SUCCESS paramiko.util.MSG_USERAUTH_FAILURE paramiko.util-module.html#MSG_USERAUTH_FAILURE paramiko.util.MSG_REQUEST_FAILURE paramiko.util-module.html#MSG_REQUEST_FAILURE paramiko.util.inflate_long paramiko.util-module.html#inflate_long -paramiko.util._g_thread_ids paramiko.util-module.html#_g_thread_ids +paramiko.util.__package__ paramiko.util-module.html#__package__ paramiko.util._g_thread_counter paramiko.util-module.html#_g_thread_counter paramiko.util.MSG_CHANNEL_DATA paramiko.util-module.html#MSG_CHANNEL_DATA paramiko.util.CRITICAL paramiko.util-module.html#CRITICAL @@ -1404,6 +1440,7 @@ paramiko.util.bit_length paramiko.util-module.html#bit_length paramiko.util.unhexify paramiko.util-module.html#unhexify paramiko.util.MSG_CHANNEL_OPEN_FAILURE paramiko.util-module.html#MSG_CHANNEL_OPEN_FAILURE paramiko.util.MSG_USERAUTH_INFO_REQUEST paramiko.util-module.html#MSG_USERAUTH_INFO_REQUEST +paramiko.util.log_to_file paramiko.util-module.html#log_to_file paramiko.util.MSG_DEBUG paramiko.util-module.html#MSG_DEBUG paramiko.util.MSG_CHANNEL_FAILURE paramiko.util-module.html#MSG_CHANNEL_FAILURE paramiko.util.OPEN_SUCCEEDED paramiko.util-module.html#OPEN_SUCCEEDED @@ -1436,15 +1473,17 @@ paramiko.util.DISCONNECT_AUTH_CANCELLED_BY_USER paramiko.util-module.html#DISCON paramiko.util.randpool paramiko.util-module.html#randpool paramiko.util.MSG_CHANNEL_OPEN_SUCCESS paramiko.util-module.html#MSG_CHANNEL_OPEN_SUCCESS paramiko.util.MSG_CHANNEL_EOF paramiko.util-module.html#MSG_CHANNEL_EOF +paramiko.util._g_thread_ids paramiko.util-module.html#_g_thread_ids paramiko.util.MSG_USERAUTH_SUCCESS paramiko.util-module.html#MSG_USERAUTH_SUCCESS paramiko.util.CONNECTION_FAILED_CODE paramiko.util-module.html#CONNECTION_FAILED_CODE paramiko.win_pageant paramiko.win_pageant-module.html paramiko.win_pageant.win32con_WM_COPYDATA paramiko.win_pageant-module.html#win32con_WM_COPYDATA paramiko.win_pageant._AGENT_MAX_MSGLEN paramiko.win_pageant-module.html#_AGENT_MAX_MSGLEN paramiko.win_pageant._query_pageant paramiko.win_pageant-module.html#_query_pageant -paramiko.win_pageant._has_win32all paramiko.win_pageant-module.html#_has_win32all +paramiko.win_pageant.__package__ paramiko.win_pageant-module.html#__package__ paramiko.win_pageant._AGENT_COPYDATA_ID paramiko.win_pageant-module.html#_AGENT_COPYDATA_ID paramiko.win_pageant._get_pageant_window_object paramiko.win_pageant-module.html#_get_pageant_window_object +paramiko.win_pageant._has_win32all paramiko.win_pageant-module.html#_has_win32all paramiko.win_pageant._has_ctypes paramiko.win_pageant-module.html#_has_ctypes paramiko.win_pageant.can_talk_to_agent paramiko.win_pageant-module.html#can_talk_to_agent paramiko.Agent paramiko.Agent-class.html @@ -1481,10 +1520,10 @@ paramiko.BadAuthenticationType.__str__ paramiko.BadAuthenticationType-class.html paramiko.BadAuthenticationType.allowed_types paramiko.BadAuthenticationType-class.html#allowed_types paramiko.BadAuthenticationType.__init__ paramiko.BadAuthenticationType-class.html#__init__ paramiko.BadHostKeyException paramiko.BadHostKeyException-class.html -paramiko.BadHostKeyException.hostname paramiko.BadHostKeyException-class.html#hostname paramiko.BadHostKeyException.expected_key paramiko.BadHostKeyException-class.html#expected_key -paramiko.BadHostKeyException.key paramiko.BadHostKeyException-class.html#key paramiko.BadHostKeyException.__init__ paramiko.BadHostKeyException-class.html#__init__ +paramiko.BadHostKeyException.hostname paramiko.BadHostKeyException-class.html#hostname +paramiko.BadHostKeyException.key paramiko.BadHostKeyException-class.html#key paramiko.BufferedFile paramiko.BufferedFile-class.html paramiko.BufferedFile.xreadlines paramiko.BufferedFile-class.html#xreadlines paramiko.BufferedFile.readlines paramiko.BufferedFile-class.html#readlines @@ -1533,6 +1572,7 @@ paramiko.Channel.recv_stderr paramiko.Channel-class.html#recv_stderr paramiko.Channel.__init__ paramiko.Channel-class.html#__init__ paramiko.Channel._set_closed paramiko.Channel-class.html#_set_closed paramiko.Channel.exit_status_ready paramiko.Channel-class.html#exit_status_ready +paramiko.Channel.request_x11 paramiko.Channel-class.html#request_x11 paramiko.Channel.recv_ready paramiko.Channel-class.html#recv_ready paramiko.Channel._feed_extended paramiko.Channel-class.html#_feed_extended paramiko.Channel.shutdown_write paramiko.Channel-class.html#shutdown_write @@ -1548,7 +1588,7 @@ paramiko.Channel.recv_stderr_ready paramiko.Channel-class.html#recv_stderr_ready paramiko.Channel._request_success paramiko.Channel-class.html#_request_success paramiko.Channel._send_eof paramiko.Channel-class.html#_send_eof paramiko.Channel._window_adjust paramiko.Channel-class.html#_window_adjust -paramiko.Channel.request_x11 paramiko.Channel-class.html#request_x11 +paramiko.Channel._event_pending paramiko.Channel-class.html#_event_pending paramiko.Channel.__del__ paramiko.Channel-class.html#__del__ paramiko.Channel._check_add_window paramiko.Channel-class.html#_check_add_window paramiko.Channel.invoke_subsystem paramiko.Channel-class.html#invoke_subsystem @@ -1736,12 +1776,12 @@ paramiko.SFTPAttributes.FLAG_EXTENDED paramiko.SFTPAttributes-class.html#FLAG_EX paramiko.SFTPAttributes.FLAG_PERMISSIONS paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS paramiko.SFTPAttributes._unpack paramiko.SFTPAttributes-class.html#_unpack paramiko.SFTPAttributes.from_stat paramiko.SFTPAttributes-class.html#from_stat -paramiko.SFTPAttributes._from_msg paramiko.SFTPAttributes-class.html#_from_msg -paramiko.SFTPAttributes._rwx paramiko.SFTPAttributes-class.html#_rwx paramiko.SFTPAttributes.FLAG_UIDGID paramiko.SFTPAttributes-class.html#FLAG_UIDGID +paramiko.SFTPAttributes._rwx paramiko.SFTPAttributes-class.html#_rwx paramiko.SFTPAttributes._debug_str paramiko.SFTPAttributes-class.html#_debug_str paramiko.SFTPAttributes.FLAG_SIZE paramiko.SFTPAttributes-class.html#FLAG_SIZE paramiko.SFTPAttributes.__repr__ paramiko.SFTPAttributes-class.html#__repr__ +paramiko.SFTPAttributes._from_msg paramiko.SFTPAttributes-class.html#_from_msg paramiko.SFTPClient paramiko.SFTPClient-class.html paramiko.SFTPClient.rename paramiko.SFTPClient-class.html#rename paramiko.SFTPClient._request paramiko.SFTPClient-class.html#_request @@ -1831,16 +1871,16 @@ paramiko.SFTPFile.prefetch paramiko.SFTPFile-class.html#prefetch paramiko.SFTPFile.settimeout paramiko.SFTPFile-class.html#settimeout paramiko.SFTPFile._prefetch_thread paramiko.SFTPFile-class.html#_prefetch_thread paramiko.SFTPHandle paramiko.SFTPHandle-class.html -paramiko.SFTPHandle._get_next_files paramiko.SFTPHandle-class.html#_get_next_files -paramiko.SFTPHandle.stat paramiko.SFTPHandle-class.html#stat -paramiko.SFTPHandle.read paramiko.SFTPHandle-class.html#read +paramiko.SFTPHandle._set_files paramiko.SFTPHandle-class.html#_set_files +paramiko.SFTPHandle.close paramiko.SFTPHandle-class.html#close +paramiko.SFTPHandle.__init__ paramiko.SFTPHandle-class.html#__init__ paramiko.SFTPHandle.write paramiko.SFTPHandle-class.html#write paramiko.SFTPHandle._get_name paramiko.SFTPHandle-class.html#_get_name paramiko.SFTPHandle.chattr paramiko.SFTPHandle-class.html#chattr -paramiko.SFTPHandle._set_files paramiko.SFTPHandle-class.html#_set_files paramiko.SFTPHandle._set_name paramiko.SFTPHandle-class.html#_set_name -paramiko.SFTPHandle.close paramiko.SFTPHandle-class.html#close -paramiko.SFTPHandle.__init__ paramiko.SFTPHandle-class.html#__init__ +paramiko.SFTPHandle.stat paramiko.SFTPHandle-class.html#stat +paramiko.SFTPHandle.read paramiko.SFTPHandle-class.html#read +paramiko.SFTPHandle._get_next_files paramiko.SFTPHandle-class.html#_get_next_files paramiko.SFTPServer paramiko.SFTPServer-class.html paramiko.SFTPServer.start_subsystem paramiko.SFTPServer-class.html#start_subsystem paramiko.SFTPServer._send_handle_response paramiko.SFTPServer-class.html#_send_handle_response @@ -2167,6 +2207,10 @@ paramiko.transport.ChannelMap.__init__ paramiko.transport.ChannelMap-class.html# paramiko.transport.ChannelMap.put paramiko.transport.ChannelMap-class.html#put paramiko.transport.ChannelMap.__len__ paramiko.transport.ChannelMap-class.html#__len__ paramiko.transport.ChannelMap.delete paramiko.transport.ChannelMap-class.html#delete +paramiko.util.Counter paramiko.util.Counter-class.html +paramiko.util.Counter.__call__ paramiko.util.Counter-class.html#__call__ +paramiko.util.Counter.new paramiko.util.Counter-class.html#new +paramiko.util.Counter.__init__ paramiko.util.Counter-class.html#__init__ paramiko.util.PFilter paramiko.util.PFilter-class.html paramiko.util.PFilter.filter paramiko.util.PFilter-class.html#filter paramiko.util.enumerate paramiko.util.enumerate-class.html diff --git a/docs/bug-index.html b/docs/bug-index.html index d66129c..6c245c1 100644 --- a/docs/bug-index.html +++ b/docs/bug-index.html @@ -85,7 +85,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/class-tree.html b/docs/class-tree.html index 1036434..ab52904 100644 --- a/docs/class-tree.html +++ b/docs/class-tree.html @@ -139,10 +139,10 @@ </li> </ul> </li> - <li> <strong class="uidlink"><a href="paramiko.rng_posix.error-class.html">paramiko.rng_posix.error</a></strong> - </li> <li> <strong class="uidlink"><a href="paramiko.rng_win32.error-class.html">paramiko.rng_win32.error</a></strong> </li> + <li> <strong class="uidlink"><a href="paramiko.rng_posix.error-class.html">paramiko.rng_posix.error</a></strong> + </li> </ul> </li> </ul> @@ -191,6 +191,9 @@ </li> <li> <strong class="uidlink"><a href="paramiko.transport.ChannelMap-class.html">paramiko.transport.ChannelMap</a></strong> </li> + <li> <strong class="uidlink"><a href="paramiko.util.Counter-class.html">paramiko.util.Counter</a></strong>: + <em class="summary">Stateful counter for CTR mode crypto</em> + </li> <li> <strong class="uidlink"><a href="paramiko.logging22.Formatter-class.html">paramiko.logging22.Formatter</a></strong> </li> <li> <strong class="uidlink"><a href="paramiko.kex_gex.KexGex-class.html">paramiko.kex_gex.KexGex</a></strong> @@ -346,7 +349,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/help.html b/docs/help.html index ec1c7dc..56d6d84 100644 --- a/docs/help.html +++ b/docs/help.html @@ -244,7 +244,7 @@ page was last updated. </p> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/identifier-index.html b/docs/identifier-index.html index 5976d1a..1eeab5f 100644 --- a/docs/identifier-index.html +++ b/docs/identifier-index.html @@ -991,183 +991,184 @@ <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_READLINK">CMD_READLINK</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.auth_handler-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.auth_handler-module.html" onclick="show_private();">paramiko.auth_handler</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util.Counter-class.html">Counter</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_READLINK">CMD_READLINK</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.channel-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.channel-module.html" onclick="show_private();">paramiko.channel</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.auth_handler-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.auth_handler-module.html" onclick="show_private();">paramiko.auth_handler</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.client-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.client-module.html" onclick="show_private();">paramiko.client</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.channel-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.channel-module.html" onclick="show_private();">paramiko.channel</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.common-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.common-module.html" onclick="show_private();">paramiko.common</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.client-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.client-module.html" onclick="show_private();">paramiko.client</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.dsskey-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.dsskey-module.html" onclick="show_private();">paramiko.dsskey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.common-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.common-module.html" onclick="show_private();">paramiko.common</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.hostkeys-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.hostkeys-module.html" onclick="show_private();">paramiko.hostkeys</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.dsskey-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.dsskey-module.html" onclick="show_private();">paramiko.dsskey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.hostkeys-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.hostkeys-module.html" onclick="show_private();">paramiko.hostkeys</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.packet-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.packet-module.html" onclick="show_private();">paramiko.packet</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.pkey-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.pkey-module.html" onclick="show_private();">paramiko.pkey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.packet-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.packet-module.html" onclick="show_private();">paramiko.packet</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.rsakey-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.rsakey-module.html" onclick="show_private();">paramiko.rsakey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.pkey-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.pkey-module.html" onclick="show_private();">paramiko.pkey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.server-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.server-module.html" onclick="show_private();">paramiko.server</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rsakey-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.rsakey-module.html" onclick="show_private();">paramiko.rsakey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.server-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.server-module.html" onclick="show_private();">paramiko.server</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.transport-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.transport-module.html" onclick="show_private();">paramiko.transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util-module.html#CRITICAL">CRITICAL</a><br /> -<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.transport-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.transport-module.html" onclick="show_private();">paramiko.transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#CMD_RENAME">CMD_RENAME</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"> </td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#CRITICAL">CRITICAL</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> @@ -3692,15 +3693,16 @@ <span class="index-where">(in <a href="paramiko.kex_gex.KexGex-class.html">KexGex</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.packet.NeedRekeyException-class.html">NeedRekeyException</a><br /> <span class="index-where">(in <a href="paramiko.packet-module.html" onclick="show_private();">paramiko.packet</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#normalize">normalize()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#next">next()</a><br /> +<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.kex_group1.KexGroup1-class.html#name">name</a><br /> <span class="index-where">(in <a href="paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#next">next()</a><br /> -<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> -<td width="33%" class="link-index"> </td> +<td width="33%" class="link-index"><a href="paramiko.util.Counter-class.html#new">new()</a><br /> +<span class="index-where">(in <a href="paramiko.util.Counter-class.html">Counter</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#normalize">normalize()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> </tr> </table> </td></tr> @@ -4674,15 +4676,15 @@ <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SSHClient-class.html">SSHClient</a><br /> -<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.client-module.html#SSH_PORT">SSH_PORT</a><br /> +<span class="index-where">(in <a href="paramiko.client-module.html" onclick="show_private();">paramiko.client</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SSHConfig-class.html">SSHConfig</a><br /> +<td width="33%" class="link-index"><a href="paramiko.SSHClient-class.html">SSHClient</a><br /> <span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> @@ -4690,7 +4692,7 @@ <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SSHException-class.html">SSHException</a><br /> +<td width="33%" class="link-index"><a href="paramiko.SSHConfig-class.html">SSHConfig</a><br /> <span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> @@ -4698,143 +4700,144 @@ <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#start_client">start_client()</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SSHException-class.html">SSHException</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex.KexGex-class.html#start_kex">start_kex()</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex.KexGex-class.html">KexGex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#start_client">start_client()</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_group1.KexGroup1-class.html#start_kex">start_kex()</a><br /> -<span class="index-where">(in <a href="paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex.KexGex-class.html#start_kex">start_kex()</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex.KexGex-class.html">KexGex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#start_server">start_server()</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_group1.KexGroup1-class.html#start_kex">start_kex()</a><br /> +<span class="index-where">(in <a href="paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html">sftp_client</a><br /> <span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPServer-class.html#start_subsystem">start_subsystem()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPServer-class.html">SFTPServer</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#start_server">start_server()</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SubsystemHandler-class.html#start_subsystem">start_subsystem()</a><br /> -<span class="index-where">(in <a href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPServer-class.html#start_subsystem">start_subsystem()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPServer-class.html">SFTPServer</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#stat">stat()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SubsystemHandler-class.html#start_subsystem">start_subsystem()</a><br /> +<span class="index-where">(in <a href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPFile-class.html#stat">stat()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPFile-class.html">SFTPFile</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#stat">stat()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html">sftp_handle</a><br /> <span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPHandle-class.html#stat">stat()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPHandle-class.html">SFTPHandle</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPFile-class.html#stat">stat()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPFile-class.html">SFTPFile</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPServerInterface-class.html#stat">stat()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPHandle-class.html#stat">stat()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPHandle-class.html">SFTPHandle</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html#stir">stir()</a><br /> -<span class="index-where">(in <a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPServerInterface-class.html#stat">stat()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#stop_thread">stop_thread()</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html#stir">stir()</a><br /> +<span class="index-where">(in <a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22.StreamHandler-class.html">StreamHandler</a><br /> -<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#stop_thread">stop_thread()</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a><br /> -<span class="index-where">(in <a href="paramiko.rng-module.html" onclick="show_private();">paramiko.rng</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.logging22.StreamHandler-class.html">StreamHandler</a><br /> +<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br /> -<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a><br /> +<span class="index-where">(in <a href="paramiko.rng-module.html" onclick="show_private();">paramiko.rng</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> <span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#symlink">symlink()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> <span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPServerInterface-class.html#symlink">symlink()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#symlink">symlink()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#SFTP_DESC">SFTP_DESC</a><br /> <span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> <span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> -<td width="33%" class="link-index"> </td> +<td width="33%" class="link-index"><a href="paramiko.SFTPServerInterface-class.html#symlink">symlink()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#SFTP_DESC">SFTP_DESC</a><br /> @@ -5044,331 +5047,441 @@ <tr> <td width="33%" class="link-index"><a href="paramiko-module.html#__author__">__author__</a><br /> <span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22.Formatter-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.logging22.Formatter-class.html">Formatter</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_CLIENT_ID">_CLIENT_ID</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#__iter__">__iter__()</a><br /> +<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.PKey-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.compress.ZlibCompressor-class.html#__call__">__call__()</a><br /> <span class="index-where">(in <a href="paramiko.compress.ZlibCompressor-class.html">ZlibCompressor</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22.StreamHandler-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.logging22.StreamHandler-class.html">StreamHandler</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_compression_info">_compression_info</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util.enumerate-class.html#__iter__">__iter__()</a><br /> +<span class="index-where">(in <a href="paramiko.util.enumerate-class.html">enumerate</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.RSAKey-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.RSAKey-class.html">RSAKey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.compress.ZlibDecompressor-class.html#__call__">__call__()</a><br /> <span class="index-where">(in <a href="paramiko.compress.ZlibDecompressor-class.html">ZlibDecompressor</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22.logger-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.logging22.logger-class.html">logger</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE">_DEFAULT_BUFSIZE</a><br /> -<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.buffered_pipe.BufferedPipe-class.html#__len__">__len__()</a><br /> +<span class="index-where">(in <a href="paramiko.buffered_pipe.BufferedPipe-class.html">BufferedPipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPAttributes-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.util.Counter-class.html#__call__">__call__()</a><br /> +<span class="index-where">(in <a href="paramiko.util.Counter-class.html">Counter</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.transport.ChannelMap-class.html#__len__">__len__()</a><br /> +<span class="index-where">(in <a href="paramiko.transport.ChannelMap-class.html">ChannelMap</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.ber.BER-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.ber.BER-class.html">BER</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.PKey-class.html#__cmp__">__cmp__()</a><br /> <span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.pipe.OrPipe-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.pipe.OrPipe-class.html">OrPipe</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br /> -<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko-module.html#__license__">__license__</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko-module.html#__version__">__version__</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#__del__">__del__()</a><br /> <span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.pipe.PosixPipe-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.pipe.PosixPipe-class.html">PosixPipe</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br /> -<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko-module.html#__version_info__">__version_info__</a><br /> +<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.Channel-class.html#__del__">__del__()</a><br /> <span class="index-where">(in <a href="paramiko.Channel-class.html">Channel</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.pipe.WindowsPipe-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.pipe.WindowsPipe-class.html">WindowsPipe</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br /> -<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.agent-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.agent-module.html" onclick="show_private();">paramiko.agent</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.transport-module.html#_active_threads">_active_threads</a><br /> +<span class="index-where">(in <a href="paramiko.transport-module.html" onclick="show_private();">paramiko.transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPFile-class.html#__del__">__del__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPFile-class.html">SFTPFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.primes.ModulusPack-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.primes.ModulusPack-class.html">ModulusPack</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_ciphers">_get_ciphers()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.auth_handler-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.auth_handler-module.html" onclick="show_private();">paramiko.auth_handler</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_AGENT_COPYDATA_ID">_AGENT_COPYDATA_ID</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.HostKeys-class.html#__getitem__">__getitem__()</a><br /> <span class="index-where">(in <a href="paramiko.HostKeys-class.html">HostKeys</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_compression">_get_compression()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.ber-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.ber-module.html" onclick="show_private();">paramiko.ber</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_AGENT_MAX_MSGLEN">_AGENT_MAX_MSGLEN</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.DSSKey-class.html#__hash__">__hash__()</a><br /> <span class="index-where">(in <a href="paramiko.DSSKey-class.html">DSSKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.ssh_exception.PartialAuthentication-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.ssh_exception.PartialAuthentication-class.html">PartialAuthentication</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_digests">_get_digests()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.buffered_pipe-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.buffered_pipe-module.html" onclick="show_private();">paramiko.buffered_pipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_channel_handler_table">_channel_handler_table</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.RSAKey-class.html#__hash__">__hash__()</a><br /> <span class="index-where">(in <a href="paramiko.RSAKey-class.html">RSAKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.transport.ChannelMap-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.transport.ChannelMap-class.html">ChannelMap</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_kex">_get_kex()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.channel-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.channel-module.html" onclick="show_private();">paramiko.channel</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_cipher_info">_cipher_info</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.Agent-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.Agent-class.html">Agent</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util.enumerate-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.util.enumerate-class.html">enumerate</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_key_types">_get_key_types()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.client-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.client-module.html" onclick="show_private();">paramiko.client</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.PKey-class.html#_CIPHER_TABLE">_CIPHER_TABLE</a><br /> +<span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.AgentKey-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.AgentKey-class.html">AgentKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.win_pageant.PageantConnection-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="paramiko.win_pageant.PageantConnection-class.html">PageantConnection</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_handler_table">_handler_table</a><br /> +<td width="33%" class="link-index"><a href="paramiko.common-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.common-module.html" onclick="show_private();">paramiko.common</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_CLIENT_ID">_CLIENT_ID</a><br /> <span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.BadAuthenticationType-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#__iter__">__iter__()</a><br /> -<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_has_ctypes">_has_ctypes</a><br /> -<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.compress-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.compress-module.html" onclick="show_private();">paramiko.compress</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_compression_info">_compression_info</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.BadHostKeyException-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.BadHostKeyException-class.html">BadHostKeyException</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util.enumerate-class.html#__iter__">__iter__()</a><br /> -<span class="index-where">(in <a href="paramiko.util.enumerate-class.html">enumerate</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_has_win32all">_has_win32all</a><br /> -<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.config-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.config-module.html" onclick="show_private();">paramiko.config</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE">_DEFAULT_BUFSIZE</a><br /> +<span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.BufferedFile-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.BufferedFile-class.html">BufferedFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.buffered_pipe.BufferedPipe-class.html#__len__">__len__()</a><br /> -<span class="index-where">(in <a href="paramiko.buffered_pipe.BufferedPipe-class.html">BufferedPipe</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br /> -<span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.dsskey-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.dsskey-module.html" onclick="show_private();">paramiko.dsskey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.Channel-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.Channel-class.html">Channel</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.transport.ChannelMap-class.html#__len__">__len__()</a><br /> -<span class="index-where">(in <a href="paramiko.transport.ChannelMap-class.html">ChannelMap</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_kex_info">_kex_info</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.file-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.file-module.html" onclick="show_private();">paramiko.file</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.ChannelException-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.ChannelException-class.html">ChannelException</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko-module.html#__license__">__license__</a><br /> -<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_key_info">_key_info</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.hostkeys-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.hostkeys-module.html" onclick="show_private();">paramiko.hostkeys</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.DSSKey-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.DSSKey-class.html">DSSKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Channel-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.Channel-class.html">Channel</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.logging22-module.html#_logger">_logger</a><br /> -<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_ciphers">_get_ciphers()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.HostKeys-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.HostKeys-class.html">HostKeys</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Message-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.Message-class.html">Message</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_mac_info">_mac_info</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_compression">_get_compression()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.Message-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.Message-class.html">Message</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPAttributes-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_modulus_pack">_modulus_pack</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.logging22-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_digests">_get_digests()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.PKey-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#__repr__">__repr__()</a><br /> +<td width="33%" class="link-index"><a href="paramiko.message-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.message-module.html" onclick="show_private();">paramiko.message</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_kex">_get_kex()</a><br /> <span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.RSAKey-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.RSAKey-class.html">RSAKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.packet-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.packet-module.html" onclick="show_private();">paramiko.packet</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_get_key_types">_get_key_types()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPAttributes-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.ber.BER-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.ber.BER-class.html">BER</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.pipe-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.pipe-module.html" onclick="show_private();">paramiko.pipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_handler_table">_handler_table</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPClient-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPClient-class.html">SFTPClient</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.hostkeys.HostKeyEntry-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="paramiko.hostkeys.HostKeyEntry-class.html">HostKeyEntry</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.pkey-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.pkey-module.html" onclick="show_private();">paramiko.pkey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_has_ctypes">_has_ctypes</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPFile-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPFile-class.html">SFTPFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.HostKeys-class.html#__setitem__">__setitem__()</a><br /> -<span class="index-where">(in <a href="paramiko.HostKeys-class.html">HostKeys</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST_OLD">_MSG_KEXDH_GEX_REQUEST_OLD</a><br /> -<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.primes-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.primes-module.html" onclick="show_private();">paramiko.primes</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_has_win32all">_has_win32all</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPHandle-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPHandle-class.html">SFTPHandle</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.AgentKey-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.AgentKey-class.html">AgentKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br /> -<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.resource-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.resource-module.html" onclick="show_private();">paramiko.resource</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPServer-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPServer-class.html">SFTPServer</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.BadAuthenticationType-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br /> -<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rng-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.rng-module.html" onclick="show_private();">paramiko.rng</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_kex_info">_kex_info</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SFTPServerInterface-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.DSSKey-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.DSSKey-class.html">DSSKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.util-module.html#_pfilter">_pfilter</a><br /> -<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rng_posix-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.rng_posix-module.html" onclick="show_private();">paramiko.rng_posix</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_key_info">_key_info</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SSHClient-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SSHClient-class.html">SSHClient</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Message-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.Message-class.html">Message</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_ciphers">_preferred_ciphers</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.rng_win32-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.rng_win32-module.html">paramiko.rng_win32</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.logging22-module.html#_logger">_logger</a><br /> +<span class="index-where">(in <a href="paramiko.logging22-module.html">paramiko.logging22</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SSHConfig-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SSHConfig-class.html">SSHConfig</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.PKey-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_compression">_preferred_compression</a><br /> +<td width="33%" class="link-index"><a href="paramiko.rsakey-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.rsakey-module.html" onclick="show_private();">paramiko.rsakey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_mac_info">_mac_info</a><br /> <span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.RSAKey-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.RSAKey-class.html">RSAKey</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_kex">_preferred_kex</a><br /> +<td width="33%" class="link-index"><a href="paramiko.server-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.server-module.html" onclick="show_private();">paramiko.server</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_modulus_pack">_modulus_pack</a><br /> <span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.SubsystemHandler-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SFTPAttributes-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_keys">_preferred_keys</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.Transport-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.ber.BER-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="paramiko.ber.BER-class.html">BER</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_macs">_preferred_macs</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_attr-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_attr-module.html" onclick="show_private();">paramiko.sftp_attr</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.ber.BER-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.ber.BER-class.html">BER</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko-module.html#__version__">__version__</a><br /> -<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_PROTO_ID">_PROTO_ID</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_client-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_client-module.html" onclick="show_private();">paramiko.sftp_client</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.buffered_pipe.BufferedPipe-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.buffered_pipe.BufferedPipe-class.html">BufferedPipe</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko-module.html#__version_info__">__version_info__</a><br /> -<span class="index-where">(in <a href="paramiko-module.html">paramiko</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_ciphers">_set_ciphers()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_file-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_file-module.html" onclick="show_private();">paramiko.sftp_file</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.channel.ChannelStderrFile-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.channel.ChannelStderrFile-class.html">ChannelStderrFile</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.transport-module.html#_active_threads">_active_threads</a><br /> -<span class="index-where">(in <a href="paramiko.transport-module.html" onclick="show_private();">paramiko.transport</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_compression">_set_compression()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_handle-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_handle-module.html" onclick="show_private();">paramiko.sftp_handle</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST_OLD">_MSG_KEXDH_GEX_REQUEST_OLD</a><br /> +<span class="index-where">(in <a href="paramiko.kex_gex-module.html" onclick="show_private();">paramiko.kex_gex</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.compress.ZlibCompressor-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.compress.ZlibCompressor-class.html">ZlibCompressor</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_AGENT_COPYDATA_ID">_AGENT_COPYDATA_ID</a><br /> -<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_digests">_set_digests()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_server-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_server-module.html" onclick="show_private();">paramiko.sftp_server</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br /> +<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.compress.ZlibDecompressor-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.compress.ZlibDecompressor-class.html">ZlibDecompressor</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#_AGENT_MAX_MSGLEN">_AGENT_MAX_MSGLEN</a><br /> -<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_kex">_set_kex()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp_si-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.sftp_si-module.html" onclick="show_private();">paramiko.sftp_si</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br /> +<span class="index-where">(in <a href="paramiko.kex_group1-module.html" onclick="show_private();">paramiko.kex_group1</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.hostkeys.HostKeyEntry-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.hostkeys.HostKeyEntry-class.html">HostKeyEntry</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_channel_handler_table">_channel_handler_table</a><br /> -<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_key_types">_set_key_types()</a><br /> -<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.ssh_exception-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.ssh_exception-module.html" onclick="show_private();">paramiko.ssh_exception</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#_pfilter">_pfilter</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.kex_gex.KexGex-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.kex_gex.KexGex-class.html">KexGex</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_cipher_info">_cipher_info</a><br /> +<td width="33%" class="link-index"><a href="paramiko.transport-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.transport-module.html" onclick="show_private();">paramiko.transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_ciphers">_preferred_ciphers</a><br /> <span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.sftp-module.html#_VERSION">_VERSION</a><br /> -<span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> </tr> <tr> <td width="33%" class="link-index"><a href="paramiko.kex_group1.KexGroup1-class.html#__init__">__init__()</a><br /> <span class="index-where">(in <a href="paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a>)</span></td> -<td width="33%" class="link-index"><a href="paramiko.PKey-class.html#_CIPHER_TABLE">_CIPHER_TABLE</a><br /> -<span class="index-where">(in <a href="paramiko.PKey-class.html">PKey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.util-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.util-module.html">paramiko.util</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_compression">_preferred_compression</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.logging22.Formatter-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.logging22.Formatter-class.html">Formatter</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.win_pageant-module.html#__package__">__package__</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant-module.html">paramiko.win_pageant</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_kex">_preferred_kex</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.logging22.StreamHandler-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.logging22.StreamHandler-class.html">StreamHandler</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Channel-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.Channel-class.html">Channel</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_keys">_preferred_keys</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.logging22.logger-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.logging22.logger-class.html">logger</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Message-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.Message-class.html">Message</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_preferred_macs">_preferred_macs</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.pipe.OrPipe-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.pipe.OrPipe-class.html">OrPipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SFTPAttributes-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#_PROTO_ID">_PROTO_ID</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.pipe.PosixPipe-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.pipe.PosixPipe-class.html">PosixPipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_ciphers">_set_ciphers()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.pipe.WindowsPipe-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.pipe.WindowsPipe-class.html">WindowsPipe</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Transport-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.Transport-class.html">Transport</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_compression">_set_compression()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.primes.ModulusPack-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.primes.ModulusPack-class.html">ModulusPack</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.ber.BER-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.ber.BER-class.html">BER</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_digests">_set_digests()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.rng.StrongLockingRandomPool-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.rng.StrongLockingRandomPool-class.html">StrongLockingRandomPool</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.hostkeys.HostKeyEntry-class.html#__repr__">__repr__()</a><br /> +<span class="index-where">(in <a href="paramiko.hostkeys.HostKeyEntry-class.html">HostKeyEntry</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_kex">_set_kex()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.ssh_exception.PartialAuthentication-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.ssh_exception.PartialAuthentication-class.html">PartialAuthentication</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.HostKeys-class.html#__setitem__">__setitem__()</a><br /> +<span class="index-where">(in <a href="paramiko.HostKeys-class.html">HostKeys</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.SecurityOptions-class.html#_set_key_types">_set_key_types()</a><br /> +<span class="index-where">(in <a href="paramiko.SecurityOptions-class.html">SecurityOptions</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.transport.ChannelMap-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.transport.ChannelMap-class.html">ChannelMap</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.AgentKey-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.AgentKey-class.html">AgentKey</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.sftp-module.html#_VERSION">_VERSION</a><br /> +<span class="index-where">(in <a href="paramiko.sftp-module.html" onclick="show_private();">paramiko.sftp</a>)</span></td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.util.Counter-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.util.Counter-class.html">Counter</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.BadAuthenticationType-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a>)</span></td> <td width="33%" class="link-index"><a href="paramiko.rng_win32-module.html#_winrandom">_winrandom</a><br /> <span class="index-where">(in <a href="paramiko.rng_win32-module.html">paramiko.rng_win32</a>)</span></td> </tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.util.enumerate-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.util.enumerate-class.html">enumerate</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.DSSKey-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.DSSKey-class.html">DSSKey</a>)</span></td> +<td width="33%" class="link-index"> </td> +</tr> +<tr> +<td width="33%" class="link-index"><a href="paramiko.win_pageant.PageantConnection-class.html#__init__">__init__()</a><br /> +<span class="index-where">(in <a href="paramiko.win_pageant.PageantConnection-class.html">PageantConnection</a>)</span></td> +<td width="33%" class="link-index"><a href="paramiko.Message-class.html#__str__">__str__()</a><br /> +<span class="index-where">(in <a href="paramiko.Message-class.html">Message</a>)</span></td> +<td width="33%" class="link-index"> </td> +</tr> </table> </td></tr> </table> @@ -5398,7 +5511,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/module-tree.html b/docs/module-tree.html index 10ad60b..250ddeb 100644 --- a/docs/module-tree.html +++ b/docs/module-tree.html @@ -136,7 +136,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko-module.html b/docs/paramiko-module.html index 4c88f2e..f7eefd6 100644 --- a/docs/paramiko-module.html +++ b/docs/paramiko-module.html @@ -90,19 +90,19 @@ <hr /> <div class="fields"> <p><strong>Version:</strong> - 1.7.4 (Desmond) + 1.7.6 (Fanny) </p> <p><strong>Author:</strong> Robey Pointer </p> <p><strong>Contact:</strong> - robey@lag.net + robeypointer@gmail.com </p> <p><strong>License:</strong> GNU Lesser General Public License (LGPL) </p> <p><strong>Date:</strong> - 06 Jul 2008 + 1 Nov 2009 </p> </div><!-- ==================== SUBMODULES ==================== --> <a name="section-Submodules"></a> @@ -494,7 +494,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko-pysrc.html b/docs/paramiko-pysrc.html index a81648d..fe7d304 100644 --- a/docs/paramiko-pysrc.html +++ b/docs/paramiko-pysrc.html @@ -53,24 +53,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko-module.html">Package paramiko</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2008 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">I{Paramiko} (a combination of the esperanto words for "paranoid" and "friend")</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">is a module for python 2.3 or greater that implements the SSH2 protocol for</tt> </tt> @@ -102,9 +102,9 @@ <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring">Website: U{http://www.lag.net/paramiko/}</tt> </tt> <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring">@version: 1.7.4 (Desmond)</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring">@version: 1.7.6 (Fanny)</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring">@author: Robey Pointer</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring">@contact: robey@lag.net</tt> </tt> +<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring">@contact: robeypointer@gmail.com</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring">@license: GNU Lesser General Public License (LGPL)</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt> @@ -114,10 +114,10 @@ <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">'You need python 2.2 for this module.'</tt><tt class="py-op">)</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable paramiko.__author__=paramiko-module.html#__author__"><a title="paramiko.__author__" class="py-name" href="#" onclick="return doclink('link-0', '__author__', 'link-0');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Robey Pointer <robey@lag.net>"</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-name">__date__</tt> <tt class="py-op">=</tt> <tt class="py-string">"06 Jul 2008"</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable paramiko.__version__=paramiko-module.html#__version__"><a title="paramiko.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"1.7.4 (Desmond)"</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable paramiko.__version_info__=paramiko-module.html#__version_info__"><a title="paramiko.__version_info__" class="py-name" href="#" onclick="return doclink('link-2', '__version_info__', 'link-2');">__version_info__</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">7</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable paramiko.__author__=paramiko-module.html#__author__"><a title="paramiko.__author__" class="py-name" href="#" onclick="return doclink('link-0', '__author__', 'link-0');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Robey Pointer <robeypointer@gmail.com>"</tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-name">__date__</tt> <tt class="py-op">=</tt> <tt class="py-string">"1 Nov 2009"</tt> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable paramiko.__version__=paramiko-module.html#__version__"><a title="paramiko.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"1.7.6 (Fanny)"</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable paramiko.__version_info__=paramiko-module.html#__version_info__"><a title="paramiko.__version_info__" class="py-name" href="#" onclick="return doclink('link-2', '__version_info__', 'link-2');">__version_info__</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">7</tt><tt class="py-op">,</tt> <tt class="py-number">6</tt><tt class="py-op">)</tt> </tt> <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable paramiko.__license__=paramiko-module.html#__license__"><a title="paramiko.__license__" class="py-name" href="#" onclick="return doclink('link-3', '__license__', 'link-3');">__license__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"GNU Lesser General Public License (LGPL)"</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt> @@ -168,11 +168,11 @@ paramiko.file" class="py-name" href="#" onclick="return doclink('link-49', 'file <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-58" class="py-name" targets="Module paramiko.config=paramiko.config-module.html"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-58', 'config', 'link-58');">config</a></tt> <tt class="py-keyword">import</tt> <tt id="link-59" class="py-name" targets="Class paramiko.SSHConfig=paramiko.SSHConfig-class.html"><a title="paramiko.SSHConfig" class="py-name" href="#" onclick="return doclink('link-59', 'SSHConfig', 'link-59');">SSHConfig</a></tt> </tt> <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-comment"># fix module names for epydoc</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-60', 'values', 'link-60');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'classobj'</tt><tt class="py-op">:</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-comment"># classobj for exceptions :/</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> <tt class="py-op">=</tt> <tt class="py-name">__name__</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> <tt class="py-op">=</tt> <tt class="py-name">__name__</tt> </tt> <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">c</tt> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-61" class="py-name" targets="Module paramiko.common=paramiko.common-module.html"><a title="paramiko.common" class="py-name" href="#" onclick="return doclink('link-61', 'common', 'link-61');">common</a></tt> <tt class="py-keyword">import</tt> <tt id="link-62" class="py-name" targets="Variable paramiko.auth_handler.AUTH_SUCCESSFUL=paramiko.auth_handler-module.html#AUTH_SUCCESSFUL,Variable paramiko.channel.AUTH_SUCCESSFUL=paramiko.channel-module.html#AUTH_SUCCESSFUL,Variable paramiko.client.AUTH_SUCCESSFUL=paramiko.client-module.html#AUTH_SUCCESSFUL,Variable paramiko.common.AUTH_SUCCESSFUL=paramiko.common-module.html#AUTH_SUCCESSFUL,Variable paramiko.dsskey.AUTH_SUCCESSFUL=paramiko.dsskey-module.html#AUTH_SUCCESSFUL,Variable paramiko.hostkeys.AUTH_SUCCESSFUL=paramiko.hostkeys-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_gex.AUTH_SUCCESSFUL=paramiko.kex_gex-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_group1.AUTH_SUCCESSFUL=paramiko.kex_group1-module.html#AUTH_SUCCESSFUL,Variable paramiko.packet.AUTH_SUCCESSFUL=paramiko.packet-module.html#AUTH_SUCCESSFUL,Variable paramiko.pkey.AUTH_SUCCESSFUL=paramiko.pkey-module.html#AUTH_SUCCESSFUL,Variable paramiko.rsakey.AUTH_SUCCESSFUL=paramiko.rsakey-module.html#AUTH_SUCCESSFUL,Variable paramiko.server.AUTH_SUCCESSFUL=paramiko.server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp.AUTH_SUCCESSFUL=paramiko.sftp-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_attr.AUTH_SUCCESSFUL=paramiko.sftp_attr-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_client.AUTH_SUCCESSFUL=paramiko.sftp_client-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_file.AUTH_SUCCESSFUL=paramiko.sftp_file-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_handle.AUTH_SUCCESSFUL=paramiko.sftp_handle-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_server.AUTH_SUCCESSFUL=paramiko.sftp_server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_si.AUTH_SUCCESSFUL=paramiko.sftp_si-module.html#AUTH_SUCCESSFUL,Variable paramiko.transport.AUTH_SUCCESSFUL=paramiko.transport-module.html#AUTH_SUCCESSFUL,Variable paramiko.util.AUTH_SUCCESSFUL=paramiko.util-module.html#AUTH_SUCCESSFUL"><a title="paramiko.auth_handler.AUTH_SUCCESSFUL @@ -463,7 +463,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:33 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.Agent-class.html b/docs/paramiko.Agent-class.html index 18e1f3a..ffa2ee1 100644 --- a/docs/paramiko.Agent-class.html +++ b/docs/paramiko.Agent-class.html @@ -211,7 +211,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.AgentKey-class.html b/docs/paramiko.AgentKey-class.html index 7b09946..dbdac26 100644 --- a/docs/paramiko.AgentKey-class.html +++ b/docs/paramiko.AgentKey-class.html @@ -164,13 +164,16 @@ object --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -374,7 +377,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.AuthenticationException-class.html b/docs/paramiko.AuthenticationException-class.html index 9056815..b60762b 100644 --- a/docs/paramiko.AuthenticationException-class.html +++ b/docs/paramiko.AuthenticationException-class.html @@ -99,15 +99,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -158,7 +163,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.AutoAddPolicy-class.html b/docs/paramiko.AutoAddPolicy-class.html index 36cecb0..259159e 100644 --- a/docs/paramiko.AutoAddPolicy-class.html +++ b/docs/paramiko.AutoAddPolicy-class.html @@ -103,6 +103,7 @@ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -111,7 +112,9 @@ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -199,7 +202,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.BadAuthenticationType-class.html b/docs/paramiko.BadAuthenticationType-class.html index bf7ba8a..34a88cf 100644 --- a/docs/paramiko.BadAuthenticationType-class.html +++ b/docs/paramiko.BadAuthenticationType-class.html @@ -130,14 +130,19 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__setstate__</code> + <code>__setstate__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -269,7 +274,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.BadHostKeyException-class.html b/docs/paramiko.BadHostKeyException-class.html index 20d2814..77648d4 100644 --- a/docs/paramiko.BadHostKeyException-class.html +++ b/docs/paramiko.BadHostKeyException-class.html @@ -111,15 +111,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -241,7 +246,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.BufferedFile-class.html b/docs/paramiko.BufferedFile-class.html index f3fe0f5..32a971c 100644 --- a/docs/paramiko.BufferedFile-class.html +++ b/docs/paramiko.BufferedFile-class.html @@ -331,6 +331,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -338,7 +339,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -831,7 +834,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.Channel-class.html b/docs/paramiko.Channel-class.html index 41ff545..da49f26 100644 --- a/docs/paramiko.Channel-class.html +++ b/docs/paramiko.Channel-class.html @@ -756,13 +756,16 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -1973,7 +1976,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ChannelException-class.html b/docs/paramiko.ChannelException-class.html index 8a02d64..ea1f235 100644 --- a/docs/paramiko.ChannelException-class.html +++ b/docs/paramiko.ChannelException-class.html @@ -110,15 +110,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -223,7 +228,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.DSSKey-class.html b/docs/paramiko.DSSKey-class.html index 29c5115..ff05930 100644 --- a/docs/paramiko.DSSKey-class.html +++ b/docs/paramiko.DSSKey-class.html @@ -272,12 +272,15 @@ object --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -725,7 +728,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.HostKeys-class.html b/docs/paramiko.HostKeys-class.html index e4db6c8..f15f929 100644 --- a/docs/paramiko.HostKeys-class.html +++ b/docs/paramiko.HostKeys-class.html @@ -621,7 +621,7 @@ UserDict.DictMixin --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.Message-class.html b/docs/paramiko.Message-class.html index 7edfd13..6b05a7a 100644 --- a/docs/paramiko.Message-class.html +++ b/docs/paramiko.Message-class.html @@ -487,12 +487,15 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -1076,7 +1079,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.MissingHostKeyPolicy-class.html b/docs/paramiko.MissingHostKeyPolicy-class.html index 29eaf1a..07c46f6 100644 --- a/docs/paramiko.MissingHostKeyPolicy-class.html +++ b/docs/paramiko.MissingHostKeyPolicy-class.html @@ -115,6 +115,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -123,7 +124,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -207,7 +210,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.PKey-class.html b/docs/paramiko.PKey-class.html index 0e9bd2a..a111e17 100644 --- a/docs/paramiko.PKey-class.html +++ b/docs/paramiko.PKey-class.html @@ -301,13 +301,16 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -832,7 +835,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.PasswordRequiredException-class.html b/docs/paramiko.PasswordRequiredException-class.html index 4de6bcb..de64784 100644 --- a/docs/paramiko.PasswordRequiredException-class.html +++ b/docs/paramiko.PasswordRequiredException-class.html @@ -90,15 +90,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -149,7 +154,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.RSAKey-class.html b/docs/paramiko.RSAKey-class.html index a611e3f..4c6ad82 100644 --- a/docs/paramiko.RSAKey-class.html +++ b/docs/paramiko.RSAKey-class.html @@ -272,12 +272,15 @@ object --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -725,7 +728,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.RejectPolicy-class.html b/docs/paramiko.RejectPolicy-class.html index 8d38bec..3489d77 100644 --- a/docs/paramiko.RejectPolicy-class.html +++ b/docs/paramiko.RejectPolicy-class.html @@ -102,6 +102,7 @@ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -110,7 +111,9 @@ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -198,7 +201,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTP-class.html b/docs/paramiko.SFTP-class.html index 3a7f52d..bda368e 100644 --- a/docs/paramiko.SFTP-class.html +++ b/docs/paramiko.SFTP-class.html @@ -107,6 +107,7 @@ object --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -114,7 +115,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -177,7 +180,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPAttributes-class.html b/docs/paramiko.SFTPAttributes-class.html index 568b910..b09624f 100644 --- a/docs/paramiko.SFTPAttributes-class.html +++ b/docs/paramiko.SFTPAttributes-class.html @@ -153,12 +153,15 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -393,7 +396,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPClient-class.html b/docs/paramiko.SFTPClient-class.html index 41043ac..9e49cc3 100644 --- a/docs/paramiko.SFTPClient-class.html +++ b/docs/paramiko.SFTPClient-class.html @@ -563,6 +563,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -570,7 +571,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -687,7 +690,8 @@ object --+ SFTP doesn't really have the concept of a current working directory, this is emulated by paramiko. Once you use this method to set a working directory, all operations on this SFTPClient object will be relative to - that path.</p> + that path. You can pass in <code>None</code> to stop using a current + working directory.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> @@ -1506,7 +1510,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPError-class.html b/docs/paramiko.SFTPError-class.html index 0c1d9f1..304ae63 100644 --- a/docs/paramiko.SFTPError-class.html +++ b/docs/paramiko.SFTPError-class.html @@ -83,15 +83,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -142,7 +147,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPFile-class.html b/docs/paramiko.SFTPFile-class.html index d15b74d..23e4ee9 100644 --- a/docs/paramiko.SFTPFile-class.html +++ b/docs/paramiko.SFTPFile-class.html @@ -386,6 +386,7 @@ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -393,7 +394,9 @@ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -986,7 +989,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:16 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPHandle-class.html b/docs/paramiko.SFTPHandle-class.html index 63a4491..1f76f9d 100644 --- a/docs/paramiko.SFTPHandle-class.html +++ b/docs/paramiko.SFTPHandle-class.html @@ -195,6 +195,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -202,7 +203,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -451,7 +454,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPServer-class.html b/docs/paramiko.SFTPServer-class.html index 514d31e..995c698 100644 --- a/docs/paramiko.SFTPServer-class.html +++ b/docs/paramiko.SFTPServer-class.html @@ -159,6 +159,7 @@ threading._Verbose --+ | <code>getName</code>, <code>isAlive</code>, <code>isDaemon</code>, + <code>is_alive</code>, <code>join</code>, <code>run</code>, <code>setDaemon</code>, @@ -167,13 +168,16 @@ threading._Verbose --+ | </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -233,6 +237,11 @@ threading._Verbose --+ | </tr> <tr> <td colspan="2" class="summary"> + <p class="indent-wrapped-lines"><b>Inherited from <code>threading.Thread</code></b>: + <code>daemon</code>, + <code>ident</code>, + <code>name</code> + </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</code> </p> @@ -446,7 +455,7 @@ threading._Verbose --+ | <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SFTPServerInterface-class.html b/docs/paramiko.SFTPServerInterface-class.html index df785ad..bb5db44 100644 --- a/docs/paramiko.SFTPServerInterface-class.html +++ b/docs/paramiko.SFTPServerInterface-class.html @@ -372,6 +372,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -379,7 +380,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -954,7 +957,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SSHClient-class.html b/docs/paramiko.SSHClient-class.html index 4e3ec8e..5bc2cec 100644 --- a/docs/paramiko.SSHClient-class.html +++ b/docs/paramiko.SSHClient-class.html @@ -339,6 +339,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -346,7 +347,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -817,7 +820,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SSHConfig-class.html b/docs/paramiko.SSHConfig-class.html index b568e27..549bb7a 100644 --- a/docs/paramiko.SSHConfig-class.html +++ b/docs/paramiko.SSHConfig-class.html @@ -62,9 +62,9 @@ object --+ <hr /> <p>Representation of config information as stored in the format used by - OpenSSH. Queries can be made via <a - href="paramiko.SSHConfig-class.html#lookup" class="link">lookup</a>. The - format is described in OpenSSH's <code>ssh_config</code> man page. This + OpenSSH. Queries can be made via <a + href="paramiko.SSHConfig-class.html#lookup" class="link">lookup</a>. The + format is described in OpenSSH's <code>ssh_config</code> man page. This class is provided primarily as a convenience to posix users (since the OpenSSH format is a de-facto standard on posix) but should work fine on Windows too.</p> @@ -138,6 +138,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -145,7 +146,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -217,13 +220,13 @@ object --+ <p>The host-matching rules of OpenSSH's <code>ssh_config</code> man page are used, which means that all configuration options from matching host specifications are merged, with more specific hostmasks taking - precedence. In other words, if <code>"Port"</code> is set - under <code>"Host *"</code> and also <code>"Host + precedence. In other words, if <code>"Port"</code> is set under + <code>"Host *"</code> and also <code>"Host *.example.com"</code>, and the lookup is for <code>"ssh.example.com"</code>, then the port entry for <code>"Host *.example.com"</code> will win out.</p> <p>The keys in the returned dict are all normalized to lowercase (look - for <code>"port"</code>, not <code>"Port"</code>. No + for <code>"port"</code>, not <code>"Port"</code>. No other processing is done to the keys or values.</p> <dl class="fields"> <dt>Parameters:</dt> @@ -284,7 +287,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SSHException-class.html b/docs/paramiko.SSHException-class.html index 75c6138..3e965d4 100644 --- a/docs/paramiko.SSHException-class.html +++ b/docs/paramiko.SSHException-class.html @@ -92,15 +92,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -151,7 +156,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SecurityOptions-class.html b/docs/paramiko.SecurityOptions-class.html index adfff52..e87cc17 100644 --- a/docs/paramiko.SecurityOptions-class.html +++ b/docs/paramiko.SecurityOptions-class.html @@ -119,13 +119,16 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -372,7 +375,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:29 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ServerInterface-class.html b/docs/paramiko.ServerInterface-class.html index 06d75de..caa13f9 100644 --- a/docs/paramiko.ServerInterface-class.html +++ b/docs/paramiko.ServerInterface-class.html @@ -419,6 +419,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -427,7 +428,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -1222,7 +1225,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.SubsystemHandler-class.html b/docs/paramiko.SubsystemHandler-class.html index 407b7f4..fe1ec23 100644 --- a/docs/paramiko.SubsystemHandler-class.html +++ b/docs/paramiko.SubsystemHandler-class.html @@ -181,6 +181,7 @@ threading._Verbose --+ <code>getName</code>, <code>isAlive</code>, <code>isDaemon</code>, + <code>is_alive</code>, <code>join</code>, <code>run</code>, <code>setDaemon</code>, @@ -189,13 +190,16 @@ threading._Verbose --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -210,6 +214,11 @@ threading._Verbose --+ </tr> <tr> <td colspan="2" class="summary"> + <p class="indent-wrapped-lines"><b>Inherited from <code>threading.Thread</code></b>: + <code>daemon</code>, + <code>ident</code>, + <code>name</code> + </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</code> </p> @@ -362,7 +371,7 @@ threading._Verbose --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.Transport-class.html b/docs/paramiko.Transport-class.html index 98758da..fe043c2 100644 --- a/docs/paramiko.Transport-class.html +++ b/docs/paramiko.Transport-class.html @@ -820,6 +820,7 @@ threading._Verbose --+ <code>getName</code>, <code>isAlive</code>, <code>isDaemon</code>, + <code>is_alive</code>, <code>join</code>, <code>setDaemon</code>, <code>setName</code>, @@ -827,13 +828,16 @@ threading._Verbose --+ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -875,6 +879,11 @@ threading._Verbose --+ </tr> <tr> <td colspan="2" class="summary"> + <p class="indent-wrapped-lines"><b>Inherited from <code>threading.Thread</code></b>: + <code>daemon</code>, + <code>ident</code>, + <code>name</code> + </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</code> </p> @@ -2321,7 +2330,7 @@ threading._Verbose --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.WarningPolicy-class.html b/docs/paramiko.WarningPolicy-class.html index e752ca5..bbdeb3c 100644 --- a/docs/paramiko.WarningPolicy-class.html +++ b/docs/paramiko.WarningPolicy-class.html @@ -102,6 +102,7 @@ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -110,7 +111,9 @@ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -198,7 +201,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.agent-module.html b/docs/paramiko.agent-module.html index 91611cd..fb4fb5b 100644 --- a/docs/paramiko.agent-module.html +++ b/docs/paramiko.agent-module.html @@ -92,6 +92,13 @@ <a name="SSH2_AGENT_SIGN_RESPONSE"></a><span class="summary-name">SSH2_AGENT_SIGN_RESPONSE</span> = <code title="14">14</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> </table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" @@ -119,7 +126,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.agent-pysrc.html b/docs/paramiko.agent-pysrc.html index 1c6bc72..f9412ec 100644 --- a/docs/paramiko.agent-pysrc.html +++ b/docs/paramiko.agent-pysrc.html @@ -55,23 +55,23 @@ <h1 class="epydoc">Source Code for <a href="paramiko.agent-module.html" onclick="show_private();">Module paramiko.agent</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 John Rochester <john@jrochester.org></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">SSH Agent interface for Unix clients.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -119,7 +119,7 @@ paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-14', 'connect', 'link-14');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'SSH_AUTH_SOCK'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-comment"># probably a dangling env var: the ssh agent is gone</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">conn</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Module paramiko.win_pageant=paramiko.win_pageant-module.html"><a title="paramiko.win_pageant" class="py-name" href="#" onclick="return doclink('link-15', 'win_pageant', 'link-15');">win_pageant</a></tt> </tt> @@ -129,7 +129,7 @@ paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('li <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-comment"># no agent support</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt> <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">ptype</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="paramiko.agent.SSH2_AGENTC_REQUEST_IDENTITIES" class="py-name" href="#" onclick="return doclink('link-20', 'SSH2_AGENTC_REQUEST_IDENTITIES', 'link-9');">SSH2_AGENTC_REQUEST_IDENTITIES</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-op">!=</tt> <tt id="link-21" class="py-name"><a title="paramiko.agent.SSH2_AGENT_IDENTITIES_ANSWER" class="py-name" href="#" onclick="return doclink('link-21', 'SSH2_AGENT_IDENTITIES_ANSWER', 'link-10');">SSH2_AGENT_IDENTITIES_ANSWER</a></tt><tt class="py-op">:</tt> </tt> @@ -255,7 +255,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:33 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.auth_handler-module.html b/docs/paramiko.auth_handler-module.html index 11c62df..527d16e 100644 --- a/docs/paramiko.auth_handler-module.html +++ b/docs/paramiko.auth_handler-module.html @@ -415,6 +415,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -502,7 +509,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.auth_handler-pysrc.html b/docs/paramiko.auth_handler-pysrc.html index 9373338..6805b9b 100644 --- a/docs/paramiko.auth_handler-pysrc.html +++ b/docs/paramiko.auth_handler-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.auth_handler-module.html" onclick="show_private();">Module paramiko.auth_handler</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{AuthHandler}</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -80,7 +80,7 @@ <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">weakref</tt> </tt> <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt> <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-comment"># this helps freezing utils</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">encodings</tt><tt class="py-op">.</tt><tt class="py-name">utf_8</tt> </tt> +<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">encodings</tt><tt class="py-op">.</tt><tt class="py-name">utf_8</tt> </tt> <a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt> <a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-0', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module paramiko.common=paramiko.common-module.html"><a title="paramiko.common" class="py-name" href="#" onclick="return doclink('link-1', 'common', 'link-1');">common</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-2', 'paramiko', 'link-0');">paramiko</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module paramiko.util=paramiko.util-module.html"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> </tt> @@ -106,7 +106,7 @@ <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">interactive_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">submethods</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-comment"># for server mode:</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_username</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_username</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_fail_count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> </div><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt> <a name="AuthHandler.is_authenticated"></a><div id="AuthHandler.is_authenticated-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="AuthHandler.is_authenticated-toggle" onclick="return toggle('AuthHandler.is_authenticated');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#is_authenticated">is_authenticated</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -173,7 +173,7 @@ paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink( </div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> <a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt> <a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt> <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt> <a name="AuthHandler._request_auth"></a><div id="AuthHandler._request_auth-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="AuthHandler._request_auth-toggle" onclick="return toggle('AuthHandler._request_auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_request_auth">_request_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._request_auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._request_auth-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-27', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -372,8 +372,8 @@ paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="paramiko.AuthenticationException" class="py-name" href="#" onclick="return doclink('link-72', 'AuthenticationException', 'link-10');">AuthenticationException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Authentication failed.'</tt><tt class="py-op">)</tt> </tt> <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-comment"># this is horrible. python Exception isn't yet descended from</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># object, so type(e) won't work. :(</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="paramiko.ssh_exception.PartialAuthentication" class="py-name" href="#" onclick="return doclink('link-73', 'PartialAuthentication', 'link-12');">PartialAuthentication</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-comment"># object, so type(e) won't work. :(</tt> </tt> +<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="paramiko.ssh_exception.PartialAuthentication" class="py-name" href="#" onclick="return doclink('link-73', 'PartialAuthentication', 'link-12');">PartialAuthentication</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Variable paramiko.BadAuthenticationType.allowed_types=paramiko.BadAuthenticationType-class.html#allowed_types,Variable paramiko.ssh_exception.PartialAuthentication.allowed_types=paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><a title="paramiko.BadAuthenticationType.allowed_types paramiko.ssh_exception.PartialAuthentication.allowed_types" class="py-name" href="#" onclick="return doclink('link-74', 'allowed_types', 'link-74');">allowed_types</a></tt> </tt> <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> @@ -383,7 +383,7 @@ paramiko.ssh_exception.PartialAuthentication.allowed_types" class="py-name" href </div><div id="AuthHandler._parse_service_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._parse_service_request-expanded"><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-75', 'get_string', 'link-75');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-76', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">service</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssh-userauth'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-comment"># accepted</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-77', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-77', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-78', 'add_byte', 'link-28');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-79" class="py-name" targets="Variable paramiko.auth_handler.MSG_SERVICE_ACCEPT=paramiko.auth_handler-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.channel.MSG_SERVICE_ACCEPT=paramiko.channel-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.client.MSG_SERVICE_ACCEPT=paramiko.client-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.common.MSG_SERVICE_ACCEPT=paramiko.common-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.dsskey.MSG_SERVICE_ACCEPT=paramiko.dsskey-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.hostkeys.MSG_SERVICE_ACCEPT=paramiko.hostkeys-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.kex_gex.MSG_SERVICE_ACCEPT=paramiko.kex_gex-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.kex_group1.MSG_SERVICE_ACCEPT=paramiko.kex_group1-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.packet.MSG_SERVICE_ACCEPT=paramiko.packet-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.pkey.MSG_SERVICE_ACCEPT=paramiko.pkey-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.rsakey.MSG_SERVICE_ACCEPT=paramiko.rsakey-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.server.MSG_SERVICE_ACCEPT=paramiko.server-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp.MSG_SERVICE_ACCEPT=paramiko.sftp-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_attr.MSG_SERVICE_ACCEPT=paramiko.sftp_attr-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_client.MSG_SERVICE_ACCEPT=paramiko.sftp_client-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_file.MSG_SERVICE_ACCEPT=paramiko.sftp_file-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_handle.MSG_SERVICE_ACCEPT=paramiko.sftp_handle-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_server.MSG_SERVICE_ACCEPT=paramiko.sftp_server-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.sftp_si.MSG_SERVICE_ACCEPT=paramiko.sftp_si-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.transport.MSG_SERVICE_ACCEPT=paramiko.transport-module.html#MSG_SERVICE_ACCEPT,Variable paramiko.util.MSG_SERVICE_ACCEPT=paramiko.util-module.html#MSG_SERVICE_ACCEPT"><a title="paramiko.auth_handler.MSG_SERVICE_ACCEPT paramiko.channel.MSG_SERVICE_ACCEPT paramiko.client.MSG_SERVICE_ACCEPT @@ -409,7 +409,7 @@ paramiko.util.MSG_SERVICE_ACCEPT" class="py-name" href="#" onclick="return docli <a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-81', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-comment"># dunno this one</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_disconnect_service_not_available</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_disconnect_service_not_available</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt> <a name="AuthHandler._parse_service_accept"></a><div id="AuthHandler._parse_service_accept-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="AuthHandler._parse_service_accept-toggle" onclick="return toggle('AuthHandler._parse_service_accept');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_parse_service_accept">_parse_service_accept</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._parse_service_accept-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._parse_service_accept-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-82', 'get_string', 'link-75');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -535,7 +535,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-107' </div><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt> <a name="AuthHandler._send_auth_result"></a><div id="AuthHandler._send_auth_result-def"><a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="AuthHandler._send_auth_result-toggle" onclick="return toggle('AuthHandler._send_auth_result');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_send_auth_result">_send_auth_result</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">,</tt> <tt class="py-param">result</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._send_auth_result-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._send_auth_result-expanded"><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-comment"># okay, send result</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-108', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-108', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result</tt> <tt class="py-op">==</tt> <tt id="link-109" class="py-name" targets="Variable paramiko.auth_handler.AUTH_SUCCESSFUL=paramiko.auth_handler-module.html#AUTH_SUCCESSFUL,Variable paramiko.channel.AUTH_SUCCESSFUL=paramiko.channel-module.html#AUTH_SUCCESSFUL,Variable paramiko.client.AUTH_SUCCESSFUL=paramiko.client-module.html#AUTH_SUCCESSFUL,Variable paramiko.common.AUTH_SUCCESSFUL=paramiko.common-module.html#AUTH_SUCCESSFUL,Variable paramiko.dsskey.AUTH_SUCCESSFUL=paramiko.dsskey-module.html#AUTH_SUCCESSFUL,Variable paramiko.hostkeys.AUTH_SUCCESSFUL=paramiko.hostkeys-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_gex.AUTH_SUCCESSFUL=paramiko.kex_gex-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_group1.AUTH_SUCCESSFUL=paramiko.kex_group1-module.html#AUTH_SUCCESSFUL,Variable paramiko.packet.AUTH_SUCCESSFUL=paramiko.packet-module.html#AUTH_SUCCESSFUL,Variable paramiko.pkey.AUTH_SUCCESSFUL=paramiko.pkey-module.html#AUTH_SUCCESSFUL,Variable paramiko.rsakey.AUTH_SUCCESSFUL=paramiko.rsakey-module.html#AUTH_SUCCESSFUL,Variable paramiko.server.AUTH_SUCCESSFUL=paramiko.server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp.AUTH_SUCCESSFUL=paramiko.sftp-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_attr.AUTH_SUCCESSFUL=paramiko.sftp_attr-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_client.AUTH_SUCCESSFUL=paramiko.sftp_client-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_file.AUTH_SUCCESSFUL=paramiko.sftp_file-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_handle.AUTH_SUCCESSFUL=paramiko.sftp_handle-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_server.AUTH_SUCCESSFUL=paramiko.sftp_server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_si.AUTH_SUCCESSFUL=paramiko.sftp_si-module.html#AUTH_SUCCESSFUL,Variable paramiko.transport.AUTH_SUCCESSFUL=paramiko.transport-module.html#AUTH_SUCCESSFUL,Variable paramiko.util.AUTH_SUCCESSFUL=paramiko.util-module.html#AUTH_SUCCESSFUL"><a title="paramiko.auth_handler.AUTH_SUCCESSFUL paramiko.channel.AUTH_SUCCESSFUL paramiko.client.AUTH_SUCCESSFUL @@ -699,7 +699,7 @@ paramiko.util.AUTH_SUCCESSFUL" class="py-name" href="#" onclick="return doclink( </div><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt> <a name="AuthHandler._interactive_query"></a><div id="AuthHandler._interactive_query-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="AuthHandler._interactive_query-toggle" onclick="return toggle('AuthHandler._interactive_query');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_interactive_query">_interactive_query</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">q</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._interactive_query-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._interactive_query-expanded"><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-comment"># make interactive query instead of response</tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-127', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-127', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-128', 'add_byte', 'link-28');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-129" class="py-name" targets="Variable paramiko.auth_handler.MSG_USERAUTH_INFO_REQUEST=paramiko.auth_handler-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.channel.MSG_USERAUTH_INFO_REQUEST=paramiko.channel-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.client.MSG_USERAUTH_INFO_REQUEST=paramiko.client-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.common.MSG_USERAUTH_INFO_REQUEST=paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.dsskey.MSG_USERAUTH_INFO_REQUEST=paramiko.dsskey-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.hostkeys.MSG_USERAUTH_INFO_REQUEST=paramiko.hostkeys-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.kex_gex.MSG_USERAUTH_INFO_REQUEST=paramiko.kex_gex-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.kex_group1.MSG_USERAUTH_INFO_REQUEST=paramiko.kex_group1-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.packet.MSG_USERAUTH_INFO_REQUEST=paramiko.packet-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.pkey.MSG_USERAUTH_INFO_REQUEST=paramiko.pkey-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.rsakey.MSG_USERAUTH_INFO_REQUEST=paramiko.rsakey-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.server.MSG_USERAUTH_INFO_REQUEST=paramiko.server-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_attr.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_attr-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_client.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_client-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_file.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_file-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_handle.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_handle-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_server.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_server-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.sftp_si.MSG_USERAUTH_INFO_REQUEST=paramiko.sftp_si-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.transport.MSG_USERAUTH_INFO_REQUEST=paramiko.transport-module.html#MSG_USERAUTH_INFO_REQUEST,Variable paramiko.util.MSG_USERAUTH_INFO_REQUEST=paramiko.util-module.html#MSG_USERAUTH_INFO_REQUEST"><a title="paramiko.auth_handler.MSG_USERAUTH_INFO_REQUEST paramiko.channel.MSG_USERAUTH_INFO_REQUEST paramiko.client.MSG_USERAUTH_INFO_REQUEST @@ -734,7 +734,7 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc <a name="AuthHandler._parse_userauth_request"></a><div id="AuthHandler._parse_userauth_request-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="AuthHandler._parse_userauth_request-toggle" onclick="return toggle('AuthHandler._parse_userauth_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_parse_userauth_request">_parse_userauth_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._parse_userauth_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._parse_userauth_request-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-138', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> <a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-comment"># er, uh... what?</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-139', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-139', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-140', 'add_byte', 'link-28');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-141" class="py-name"><a title="paramiko.auth_handler.MSG_USERAUTH_FAILURE paramiko.channel.MSG_USERAUTH_FAILURE paramiko.client.MSG_USERAUTH_FAILURE @@ -762,7 +762,7 @@ paramiko.util.MSG_USERAUTH_FAILURE" class="py-name" href="#" onclick="return doc <a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt><tt class="py-op">:</tt> </tt> <a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-comment"># ignore</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> </tt> +<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">username</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-145', 'get_string', 'link-75');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-146', 'get_string', 'link-75');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-147', 'get_string', 'link-75');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -827,12 +827,12 @@ paramiko.util.WARNING" class="py-name" href="#" onclick="return doclink('link-15 <a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">password</tt> <tt class="py-op">=</tt> <tt class="py-name">password</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-156', 'decode', 'link-156');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt> </tt> <a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt> <a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-comment"># some clients/servers expect non-utf-8 passwords!</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># in this case, just return the raw byte string.</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-comment"># in this case, just return the raw byte string.</tt> </tt> +<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">changereq</tt><tt class="py-op">:</tt> </tt> <a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-comment"># always treated as failure, since we don't support changing passwords, but collect</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># the list of valid auth types from the callback anyway</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-157', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-158" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-comment"># the list of valid auth types from the callback anyway</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-157', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-158" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -940,7 +940,7 @@ paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-174', <a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_disconnect_no_more_auth</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-comment"># first check if this key is okay... if not, we can skip the verify</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-175', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method paramiko.ServerInterface.check_auth_publickey()=paramiko.ServerInterface-class.html#check_auth_publickey"><a title="paramiko.ServerInterface.check_auth_publickey" class="py-name" href="#" onclick="return doclink('link-176', 'check_auth_publickey', 'link-176');">check_auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-175', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method paramiko.ServerInterface.check_auth_publickey()=paramiko.ServerInterface-class.html#check_auth_publickey"><a title="paramiko.ServerInterface.check_auth_publickey" class="py-name" href="#" onclick="return doclink('link-176', 'check_auth_publickey', 'link-176');">check_auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> <a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">result</tt> <tt class="py-op">!=</tt> <tt id="link-177" class="py-name"><a title="paramiko.auth_handler.AUTH_FAILED paramiko.channel.AUTH_FAILED paramiko.client.AUTH_FAILED @@ -963,10 +963,10 @@ paramiko.sftp_si.AUTH_FAILED paramiko.transport.AUTH_FAILED paramiko.util.AUTH_FAILED" class="py-name" href="#" onclick="return doclink('link-177', 'AUTH_FAILED', 'link-161');">AUTH_FAILED</a></tt><tt class="py-op">:</tt> </tt> <a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-comment"># key is okay, verify it</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sig_attached</tt><tt class="py-op">:</tt> </tt> +<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sig_attached</tt><tt class="py-op">:</tt> </tt> <a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-comment"># client wants to know if this key is acceptable, before it</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># signs anything... send special "ok" message</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-178', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-comment"># signs anything... send special "ok" message</tt> </tt> +<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-178', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-179', 'add_byte', 'link-28');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name" targets="Variable paramiko.auth_handler.MSG_USERAUTH_PK_OK=paramiko.auth_handler-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.channel.MSG_USERAUTH_PK_OK=paramiko.channel-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.client.MSG_USERAUTH_PK_OK=paramiko.client-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.common.MSG_USERAUTH_PK_OK=paramiko.common-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.dsskey.MSG_USERAUTH_PK_OK=paramiko.dsskey-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.hostkeys.MSG_USERAUTH_PK_OK=paramiko.hostkeys-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.kex_gex.MSG_USERAUTH_PK_OK=paramiko.kex_gex-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.kex_group1.MSG_USERAUTH_PK_OK=paramiko.kex_group1-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.packet.MSG_USERAUTH_PK_OK=paramiko.packet-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.pkey.MSG_USERAUTH_PK_OK=paramiko.pkey-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.rsakey.MSG_USERAUTH_PK_OK=paramiko.rsakey-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.server.MSG_USERAUTH_PK_OK=paramiko.server-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp.MSG_USERAUTH_PK_OK=paramiko.sftp-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_attr.MSG_USERAUTH_PK_OK=paramiko.sftp_attr-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_client.MSG_USERAUTH_PK_OK=paramiko.sftp_client-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_file.MSG_USERAUTH_PK_OK=paramiko.sftp_file-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_handle.MSG_USERAUTH_PK_OK=paramiko.sftp_handle-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_server.MSG_USERAUTH_PK_OK=paramiko.sftp_server-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.sftp_si.MSG_USERAUTH_PK_OK=paramiko.sftp_si-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.transport.MSG_USERAUTH_PK_OK=paramiko.transport-module.html#MSG_USERAUTH_PK_OK,Variable paramiko.util.MSG_USERAUTH_PK_OK=paramiko.util-module.html#MSG_USERAUTH_PK_OK"><a title="paramiko.auth_handler.MSG_USERAUTH_PK_OK paramiko.channel.MSG_USERAUTH_PK_OK paramiko.client.MSG_USERAUTH_PK_OK @@ -1046,12 +1046,12 @@ paramiko.util.AUTH_FAILED" class="py-name" href="#" onclick="return doclink('lin <a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-192', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Method paramiko.ServerInterface.check_auth_interactive()=paramiko.ServerInterface-class.html#check_auth_interactive"><a title="paramiko.ServerInterface.check_auth_interactive" class="py-name" href="#" onclick="return doclink('link-193', 'check_auth_interactive', 'link-193');">check_auth_interactive</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">submethods</tt><tt class="py-op">)</tt> </tt> <a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">InteractiveQuery</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-comment"># make interactive query instead of response</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_interactive_query</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> +<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_interactive_query</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> <a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-194', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="paramiko.ServerInterface.check_auth_none" class="py-name" href="#" onclick="return doclink('link-195', 'check_auth_none', 'link-153');">check_auth_none</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">)</tt> </tt> <a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-comment"># okay, send result</tt> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_auth_result</tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> +<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_auth_result</tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> </div><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt> <a name="AuthHandler._parse_userauth_success"></a><div id="AuthHandler._parse_userauth_success-def"><a name="L351"></a><tt class="py-lineno">351</tt> <a class="py-toggle" href="#" id="AuthHandler._parse_userauth_success-toggle" onclick="return toggle('AuthHandler._parse_userauth_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_parse_userauth_success">_parse_userauth_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._parse_userauth_success-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._parse_userauth_success-expanded"><a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-196', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="paramiko.auth_handler.INFO @@ -1133,28 +1133,28 @@ paramiko.transport.DEBUG paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-205', 'DEBUG', 'link-84');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Methods: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">authlist</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-206', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="paramiko.ssh_exception.PartialAuthentication" class="py-name" href="#" onclick="return doclink('link-207', 'PartialAuthentication', 'link-12');">PartialAuthentication</a></tt><tt class="py-op">(</tt><tt class="py-name">authlist</tt><tt class="py-op">)</tt> </tt> <a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_method</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">authlist</tt><tt class="py-op">:</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-208', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-209" class="py-name"><a title="paramiko.auth_handler.INFO -paramiko.channel.INFO -paramiko.client.INFO -paramiko.common.INFO -paramiko.dsskey.INFO -paramiko.hostkeys.INFO -paramiko.kex_gex.INFO -paramiko.kex_group1.INFO -paramiko.logging22.INFO -paramiko.packet.INFO -paramiko.pkey.INFO -paramiko.rsakey.INFO -paramiko.server.INFO -paramiko.sftp.INFO -paramiko.sftp_attr.INFO -paramiko.sftp_client.INFO -paramiko.sftp_file.INFO -paramiko.sftp_handle.INFO -paramiko.sftp_server.INFO -paramiko.sftp_si.INFO -paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-209', 'INFO', 'link-111');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Authentication type (%s) not permitted.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_method</tt><tt class="py-op">)</tt> </tt> +<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-208', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-209" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.channel.DEBUG +paramiko.client.DEBUG +paramiko.common.DEBUG +paramiko.dsskey.DEBUG +paramiko.hostkeys.DEBUG +paramiko.kex_gex.DEBUG +paramiko.kex_group1.DEBUG +paramiko.logging22.DEBUG +paramiko.packet.DEBUG +paramiko.pkey.DEBUG +paramiko.rsakey.DEBUG +paramiko.server.DEBUG +paramiko.sftp.DEBUG +paramiko.sftp_attr.DEBUG +paramiko.sftp_client.DEBUG +paramiko.sftp_file.DEBUG +paramiko.sftp_handle.DEBUG +paramiko.sftp_server.DEBUG +paramiko.sftp_si.DEBUG +paramiko.transport.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-209', 'DEBUG', 'link-84');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Authentication type (%s) not permitted.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_method</tt><tt class="py-op">)</tt> </tt> <a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-210', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG @@ -1234,7 +1234,7 @@ paramiko.sftp_si.INFO paramiko.transport.INFO paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-220', 'INFO', 'link-111');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Auth banner: '</tt> <tt class="py-op">+</tt> <tt class="py-name">banner</tt><tt class="py-op">)</tt> </tt> </div><a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-comment"># who cares.</tt> </tt> -<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> </tt> <a name="AuthHandler._parse_userauth_info_request"></a><div id="AuthHandler._parse_userauth_info_request-def"><a name="L382"></a><tt class="py-lineno">382</tt> <a class="py-toggle" href="#" id="AuthHandler._parse_userauth_info_request-toggle" onclick="return toggle('AuthHandler._parse_userauth_info_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.auth_handler.AuthHandler-class.html#_parse_userauth_info_request">_parse_userauth_info_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="AuthHandler._parse_userauth_info_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AuthHandler._parse_userauth_info_request-expanded"><a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_method</tt> <tt class="py-op">!=</tt> <tt class="py-string">'keyboard-interactive'</tt><tt class="py-op">:</tt> </tt> <a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-221" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-221', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Illegal info request from server'</tt><tt class="py-op">)</tt> </tt> @@ -1284,7 +1284,7 @@ paramiko.util.MSG_USERAUTH_INFO_RESPONSE" class="py-name" href="#" onclick="retu <a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-238', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Method paramiko.ServerInterface.check_auth_interactive_response()=paramiko.ServerInterface-class.html#check_auth_interactive_response"><a title="paramiko.ServerInterface.check_auth_interactive_response" class="py-name" href="#" onclick="return doclink('link-239', 'check_auth_interactive_response', 'link-239');">check_auth_interactive_response</a></tt><tt class="py-op">(</tt><tt class="py-name">responses</tt><tt class="py-op">)</tt> </tt> <a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">InteractiveQuery</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-comment"># make interactive query instead of response</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_interactive_query</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> +<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_interactive_query</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> <a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_auth_result</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_username</tt><tt class="py-op">,</tt> <tt class="py-string">'keyboard-interactive'</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> </div><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt> @@ -1492,7 +1492,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ber-module.html b/docs/paramiko.ber-module.html index 08a43d4..e5cab0a 100644 --- a/docs/paramiko.ber-module.html +++ b/docs/paramiko.ber-module.html @@ -78,6 +78,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -104,7 +120,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ber-pysrc.html b/docs/paramiko.ber-pysrc.html index d6d4e84..2eb9d7c 100644 --- a/docs/paramiko.ber-pysrc.html +++ b/docs/paramiko.ber-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.ber-module.html" onclick="show_private();">Module paramiko.ber</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module paramiko.util=paramiko.util-module.html"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-0', 'util', 'link-0');">util</a></tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> </tt> @@ -105,7 +105,7 @@ <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">ident</tt> <tt class="py-op">&</tt> <tt class="py-number">31</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">31</tt><tt class="py-op">:</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-comment"># identifier > 30</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">ident</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">ident</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> @@ -115,31 +115,31 @@ <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-comment"># now fetch length</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">&</tt> <tt class="py-number">0x80</tt><tt class="py-op">:</tt> </tt> <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-comment"># more complimicated...</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># FIXME: theoretically should handle indefinite-length (0x80)</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">size</tt> <tt class="py-op">&</tt> <tt class="py-number">0x7f</tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: theoretically should handle indefinite-length (0x80)</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">size</tt> <tt class="py-op">&</tt> <tt class="py-number">0x7f</tt> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+</tt> <tt class="py-name">t</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-2', 'util', 'link-0');">util</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-3', 'inflate_long', 'link-3');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+</tt> <tt class="py-name">t</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+=</tt> <tt class="py-name">t</tt> </tt> <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+</tt> <tt class="py-name">size</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-comment"># can't fit</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+</tt> <tt class="py-name">size</tt><tt class="py-op">]</tt> </tt> <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idx</tt> <tt class="py-op">+=</tt> <tt class="py-name">size</tt> </tt> <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-comment"># now switch on id</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-op">==</tt> <tt class="py-number">0x30</tt><tt class="py-op">:</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ident</tt> <tt class="py-op">==</tt> <tt class="py-number">0x30</tt><tt class="py-op">:</tt> </tt> <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># sequence</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Static Method paramiko.ber.BER.decode_sequence()=paramiko.ber.BER-class.html#decode_sequence"><a title="paramiko.ber.BER.decode_sequence" class="py-name" href="#" onclick="return doclink('link-4', 'decode_sequence', 'link-4');">decode_sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Static Method paramiko.ber.BER.decode_sequence()=paramiko.ber.BER-class.html#decode_sequence"><a title="paramiko.ber.BER.decode_sequence" class="py-name" href="#" onclick="return doclink('link-4', 'decode_sequence', 'link-4');">decode_sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ident</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-comment"># int</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-5" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-0');">util</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-6', 'inflate_long', 'link-3');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-5" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-0');">util</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-6', 'inflate_long', 'link-3');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-comment"># 1: boolean (00 false, otherwise true)</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt id="link-7" class="py-name" targets="Class paramiko.ber.BERException=paramiko.ber.BERException-class.html"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-7', 'BERException', 'link-7');">BERException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown ber encoding type %d (robey is lazy)'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt> +<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-7" class="py-name" targets="Class paramiko.ber.BERException=paramiko.ber.BERException-class.html"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-7', 'BERException', 'link-7');">BERException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown ber encoding type %d (robey is lazy)'</tt> <tt class="py-op">%</tt> <tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt> </div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> <a name="BER.decode_sequence"></a><div id="BER.decode_sequence-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="BER.decode_sequence-toggle" onclick="return toggle('BER.decode_sequence');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.ber.BER-class.html#decode_sequence">decode_sequence</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BER.decode_sequence-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BER.decode_sequence-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> @@ -154,7 +154,7 @@ <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt> <a name="BER.encode_tlv"></a><div id="BER.encode_tlv-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="BER.encode_tlv-toggle" onclick="return toggle('BER.encode_tlv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.ber.BER-class.html#encode_tlv">encode_tlv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ident</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BER.encode_tlv-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BER.encode_tlv-expanded"><a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># no need to support ident > 31 here</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">+=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">+=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">ident</tt><tt class="py-op">)</tt> </tt> <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0x7f</tt><tt class="py-op">:</tt> </tt> <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">lenstr</tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-12', 'util', 'link-0');">util</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-13', 'deflate_long', 'link-13');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">+=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-number">0x80</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lenstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">lenstr</tt> </tt> @@ -216,7 +216,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ber.BER-class.html b/docs/paramiko.ber.BER-class.html index e376084..b14296b 100644 --- a/docs/paramiko.ber.BER-class.html +++ b/docs/paramiko.ber.BER-class.html @@ -195,12 +195,15 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, - <code>__setattr__</code> + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -372,7 +375,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ber.BERException-class.html b/docs/paramiko.ber.BERException-class.html index d1815d3..a84ea0b 100644 --- a/docs/paramiko.ber.BERException-class.html +++ b/docs/paramiko.ber.BERException-class.html @@ -84,15 +84,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -143,7 +148,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.buffered_pipe-module.html b/docs/paramiko.buffered_pipe-module.html index b427eaa..7e1fdf1 100644 --- a/docs/paramiko.buffered_pipe-module.html +++ b/docs/paramiko.buffered_pipe-module.html @@ -88,6 +88,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -114,7 +130,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.buffered_pipe-pysrc.html b/docs/paramiko.buffered_pipe-pysrc.html index 4fed6e8..f19abc7 100644 --- a/docs/paramiko.buffered_pipe-pysrc.html +++ b/docs/paramiko.buffered_pipe-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.buffered_pipe-module.html" onclick="show_private();">Module paramiko.buffered_pipe</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Attempt to generalize the "feeder" part of a Channel: an object which can be</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">read from and closed, but is reading from a buffer fed by another thread. The</tt> </tt> @@ -191,11 +191,11 @@ paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink( <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> <a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-comment"># should we block?</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-3" class="py-name" targets="Class paramiko.buffered_pipe.PipeTimeout=paramiko.buffered_pipe.PipeTimeout-class.html"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-3', 'PipeTimeout', 'link-3');">PipeTimeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-comment"># loop here in case we get woken up but a different thread has</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># grabbed everything in the buffer.</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-comment"># grabbed everything in the buffer.</tt> </tt> +<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">then</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cv</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> @@ -204,7 +204,7 @@ paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink( <a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-4" class="py-name"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-4', 'PipeTimeout', 'link-3');">PipeTimeout</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> </tt> <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># something's in the buffer and we have the lock!</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-name">nbytes</tt><tt class="py-op">:</tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-name">nbytes</tt><tt class="py-op">:</tt> </tt> <a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buffer</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> @@ -301,7 +301,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.buffered_pipe.BufferedPipe-class.html b/docs/paramiko.buffered_pipe.BufferedPipe-class.html index 97b4486..9b2e64e 100644 --- a/docs/paramiko.buffered_pipe.BufferedPipe-class.html +++ b/docs/paramiko.buffered_pipe.BufferedPipe-class.html @@ -219,6 +219,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -226,7 +227,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -491,7 +494,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.buffered_pipe.PipeTimeout-class.html b/docs/paramiko.buffered_pipe.PipeTimeout-class.html index 60ec323..3795660 100644 --- a/docs/paramiko.buffered_pipe.PipeTimeout-class.html +++ b/docs/paramiko.buffered_pipe.PipeTimeout-class.html @@ -98,13 +98,18 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__setstate__</code> + <code>__setstate__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -122,11 +127,11 @@ exceptions.BaseException --+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.EnvironmentError</code></b>: <code>errno</code>, <code>filename</code>, - <code>message</code>, <code>strerror</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code> + <code>args</code>, + <code>message</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</code> @@ -160,7 +165,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.channel-module.html b/docs/paramiko.channel-module.html index f8c74ce..df1a287 100644 --- a/docs/paramiko.channel-module.html +++ b/docs/paramiko.channel-module.html @@ -438,6 +438,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -525,7 +532,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.channel-pysrc.html b/docs/paramiko.channel-pysrc.html index 614cab3..6f38ce6 100644 --- a/docs/paramiko.channel-pysrc.html +++ b/docs/paramiko.channel-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.channel-module.html" onclick="show_private();">Module paramiko.channel</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Abstraction for an SSH2 channel.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -94,7 +94,7 @@ paramiko.file" class="py-name" href="#" onclick="return doclink('link-11', 'file <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt> <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-comment"># lower bound on the max packet size we'll accept from the remote host</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-19" class="py-name" targets="Variable paramiko.channel.MIN_PACKET_SIZE=paramiko.channel-module.html#MIN_PACKET_SIZE"><a title="paramiko.channel.MIN_PACKET_SIZE" class="py-name" href="#" onclick="return doclink('link-19', 'MIN_PACKET_SIZE', 'link-19');">MIN_PACKET_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt> +<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable paramiko.channel.MIN_PACKET_SIZE=paramiko.channel-module.html#MIN_PACKET_SIZE"><a title="paramiko.channel.MIN_PACKET_SIZE" class="py-name" href="#" onclick="return doclink('link-19', 'MIN_PACKET_SIZE', 'link-19');">MIN_PACKET_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt> <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt> <a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt> <a name="Channel"></a><div id="Channel-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="Channel-toggle" onclick="return toggle('Channel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html">Channel</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -147,13 +147,14 @@ paramiko.file" class="py-name" href="#" onclick="return doclink('link-11', 'file <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Class paramiko.logging22.logger=paramiko.logging22.logger-class.html"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-23', 'logger', 'link-23');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-24', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Function paramiko.util.get_logger()=paramiko.util-module.html#get_logger"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-25', 'get_logger', 'link-25');">get_logger</a></tt><tt class="py-op">(</tt><tt class="py-string">'paramiko.transport'</tt><tt class="py-op">)</tt> </tt> <a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> -<a name="Channel.__del__"></a><div id="Channel.__del__-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="Channel.__del__-toggle" onclick="return toggle('Channel.__del__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.__del__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.__del__-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt> +<a name="Channel.__del__"></a><div id="Channel.__del__-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="Channel.__del__-toggle" onclick="return toggle('Channel.__del__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.__del__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.__del__-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -165,52 +166,52 @@ paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-26', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> -<a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"> </tt> -<a name="Channel.__repr__"></a><div id="Channel.__repr__-def"><a name="L103"></a><tt class="py-lineno"> 103</tt> <a class="py-toggle" href="#" id="Channel.__repr__-toggle" onclick="return toggle('Channel.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.__repr__-expanded"><a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"><tt class="py-docstring"> Return a string representation of this object, for debugging.</tt> </tt> -<a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">'<paramiko.Channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt> </tt> -<a name="L110"></a><tt class="py-lineno"> 110</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (closed)'</tt> </tt> -<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt><tt class="py-op">:</tt> </tt> -<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (EOF received)'</tt> </tt> -<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (EOF sent)'</tt> </tt> -<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (open) window=%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt><tt class="py-op">)</tt> </tt> -<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' in-buffer=%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> -<a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' -> '</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-27', 'transport', 'link-20');">transport</a></tt><tt class="py-op">)</tt> </tt> -<a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'>'</tt> </tt> -<a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"> </tt> -<a name="Channel.get_pty"></a><div id="Channel.get_pty-def"><a name="L124"></a><tt class="py-lineno"> 124</tt> <a class="py-toggle" href="#" id="Channel.get_pty-toggle" onclick="return toggle('Channel.get_pty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_pty">get_pty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">term</tt><tt class="py-op">=</tt><tt class="py-string">'vt100'</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.get_pty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_pty-expanded"><a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"><tt class="py-docstring"> Request a pseudo-terminal from the server. This is usually used right</tt> </tt> -<a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt class="py-docstring"> after creating a client channel, to ask the server to provide some</tt> </tt> -<a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt class="py-docstring"> basic terminal semantics for a shell invoked with L{invoke_shell}.</tt> </tt> -<a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"><tt class="py-docstring"> It isn't necessary (or desirable) to call this method if you're going</tt> </tt> -<a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"><tt class="py-docstring"> to exectue a single command with L{exec_command}.</tt> </tt> -<a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"><tt class="py-docstring"> @param term: the terminal type to emulate (for example, C{'vt100'})</tt> </tt> -<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"><tt class="py-docstring"> @type term: str</tt> </tt> -<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"><tt class="py-docstring"> @param width: width (in characters) of the terminal screen</tt> </tt> -<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> -<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"><tt class="py-docstring"> @param height: height (in characters) of the terminal screen</tt> </tt> -<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> -<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> -<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> -<a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-28" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-28', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-29', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-30', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_REQUEST=paramiko.auth_handler-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.channel.MSG_CHANNEL_REQUEST=paramiko.channel-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.client.MSG_CHANNEL_REQUEST=paramiko.client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.common.MSG_CHANNEL_REQUEST=paramiko.common-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.dsskey.MSG_CHANNEL_REQUEST=paramiko.dsskey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.hostkeys.MSG_CHANNEL_REQUEST=paramiko.hostkeys-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_gex.MSG_CHANNEL_REQUEST=paramiko.kex_gex-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_group1.MSG_CHANNEL_REQUEST=paramiko.kex_group1-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.packet.MSG_CHANNEL_REQUEST=paramiko.packet-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.pkey.MSG_CHANNEL_REQUEST=paramiko.pkey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.rsakey.MSG_CHANNEL_REQUEST=paramiko.rsakey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.server.MSG_CHANNEL_REQUEST=paramiko.server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp.MSG_CHANNEL_REQUEST=paramiko.sftp-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_attr.MSG_CHANNEL_REQUEST=paramiko.sftp_attr-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_client.MSG_CHANNEL_REQUEST=paramiko.sftp_client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_file.MSG_CHANNEL_REQUEST=paramiko.sftp_file-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_handle.MSG_CHANNEL_REQUEST=paramiko.sftp_handle-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_server.MSG_CHANNEL_REQUEST=paramiko.sftp_server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_si.MSG_CHANNEL_REQUEST=paramiko.sftp_si-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.transport.MSG_CHANNEL_REQUEST=paramiko.transport-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.util.MSG_CHANNEL_REQUEST=paramiko.util-module.html#MSG_CHANNEL_REQUEST"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +<a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> +<a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +</div><a name="L103"></a><tt class="py-lineno"> 103</tt> <tt class="py-line"> </tt> +<a name="Channel.__repr__"></a><div id="Channel.__repr__-def"><a name="L104"></a><tt class="py-lineno"> 104</tt> <a class="py-toggle" href="#" id="Channel.__repr__-toggle" onclick="return toggle('Channel.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.__repr__-expanded"><a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"><tt class="py-docstring"> Return a string representation of this object, for debugging.</tt> </tt> +<a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L110"></a><tt class="py-lineno"> 110</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">'<paramiko.Channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt> </tt> +<a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (closed)'</tt> </tt> +<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt><tt class="py-op">:</tt> </tt> +<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (EOF received)'</tt> </tt> +<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (EOF sent)'</tt> </tt> +<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (open) window=%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt><tt class="py-op">)</tt> </tt> +<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' in-buffer=%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> +<a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' -> '</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-27', 'transport', 'link-20');">transport</a></tt><tt class="py-op">)</tt> </tt> +<a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'>'</tt> </tt> +<a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"> </tt> +<a name="Channel.get_pty"></a><div id="Channel.get_pty-def"><a name="L125"></a><tt class="py-lineno"> 125</tt> <a class="py-toggle" href="#" id="Channel.get_pty-toggle" onclick="return toggle('Channel.get_pty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_pty">get_pty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">term</tt><tt class="py-op">=</tt><tt class="py-string">'vt100'</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.get_pty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_pty-expanded"><a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt class="py-docstring"> Request a pseudo-terminal from the server. This is usually used right</tt> </tt> +<a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt class="py-docstring"> after creating a client channel, to ask the server to provide some</tt> </tt> +<a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"><tt class="py-docstring"> basic terminal semantics for a shell invoked with L{invoke_shell}.</tt> </tt> +<a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"><tt class="py-docstring"> It isn't necessary (or desirable) to call this method if you're going</tt> </tt> +<a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"><tt class="py-docstring"> to exectue a single command with L{exec_command}.</tt> </tt> +<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"><tt class="py-docstring"> @param term: the terminal type to emulate (for example, C{'vt100'})</tt> </tt> +<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"><tt class="py-docstring"> @type term: str</tt> </tt> +<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"><tt class="py-docstring"> @param width: width (in characters) of the terminal screen</tt> </tt> +<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> +<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"><tt class="py-docstring"> @param height: height (in characters) of the terminal screen</tt> </tt> +<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> +<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> +<a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> +<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-28" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-28', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-29', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-30', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_REQUEST=paramiko.auth_handler-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.channel.MSG_CHANNEL_REQUEST=paramiko.channel-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.client.MSG_CHANNEL_REQUEST=paramiko.client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.common.MSG_CHANNEL_REQUEST=paramiko.common-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.dsskey.MSG_CHANNEL_REQUEST=paramiko.dsskey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.hostkeys.MSG_CHANNEL_REQUEST=paramiko.hostkeys-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_gex.MSG_CHANNEL_REQUEST=paramiko.kex_gex-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_group1.MSG_CHANNEL_REQUEST=paramiko.kex_group1-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.packet.MSG_CHANNEL_REQUEST=paramiko.packet-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.pkey.MSG_CHANNEL_REQUEST=paramiko.pkey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.rsakey.MSG_CHANNEL_REQUEST=paramiko.rsakey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.server.MSG_CHANNEL_REQUEST=paramiko.server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp.MSG_CHANNEL_REQUEST=paramiko.sftp-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_attr.MSG_CHANNEL_REQUEST=paramiko.sftp_attr-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_client.MSG_CHANNEL_REQUEST=paramiko.sftp_client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_file.MSG_CHANNEL_REQUEST=paramiko.sftp_file-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_handle.MSG_CHANNEL_REQUEST=paramiko.sftp_handle-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_server.MSG_CHANNEL_REQUEST=paramiko.sftp_server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_si.MSG_CHANNEL_REQUEST=paramiko.sftp_si-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.transport.MSG_CHANNEL_REQUEST=paramiko.transport-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.util.MSG_CHANNEL_REQUEST=paramiko.util-module.html#MSG_CHANNEL_REQUEST"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -231,42 +232,39 @@ paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-31', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-32', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-33', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'pty-req'</tt><tt class="py-op">)</tt> </tt> -<a name="L148"></a><tt class="py-lineno"> 148</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.Message.add_boolean()=paramiko.Message-class.html#add_boolean"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-34', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-35', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">)</tt> </tt> -<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-36', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt> -<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-37', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> -<a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> <tt class="py-comment"># pixel height, width (usually useless)</tt> </tt> -<a name="L153"></a><tt class="py-lineno"> 153</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-38', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-39', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-40', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -<a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method paramiko.HostKeys.clear()=paramiko.HostKeys-class.html#clear,Method paramiko.pipe.OrPipe.clear()=paramiko.pipe.OrPipe-class.html#clear,Method paramiko.pipe.PosixPipe.clear()=paramiko.pipe.PosixPipe-class.html#clear,Method paramiko.pipe.WindowsPipe.clear()=paramiko.pipe.WindowsPipe-class.html#clear"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-41', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-42', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"> </tt> -<a name="Channel.invoke_shell"></a><div id="Channel.invoke_shell-def"><a name="L159"></a><tt class="py-lineno"> 159</tt> <a class="py-toggle" href="#" id="Channel.invoke_shell-toggle" onclick="return toggle('Channel.invoke_shell');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#invoke_shell">invoke_shell</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.invoke_shell-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.invoke_shell-expanded"><a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"><tt class="py-docstring"> Request an interactive shell session on this channel. If the server</tt> </tt> -<a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"><tt class="py-docstring"> allows it, the channel will then be directly connected to the stdin,</tt> </tt> -<a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"><tt class="py-docstring"> stdout, and stderr of the shell.</tt> </tt> -<a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"><tt class="py-docstring"> Normally you would call L{get_pty} before this, in which case the</tt> </tt> -<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"><tt class="py-docstring"> shell will operate through the pty, and the channel will be connected</tt> </tt> -<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"><tt class="py-docstring"> to the stdin and stdout of the pty.</tt> </tt> -<a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"><tt class="py-docstring"> When the shell exits, the channel will be closed and can't be reused.</tt> </tt> -<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"><tt class="py-docstring"> You must open a new channel if you wish to open another shell.</tt> </tt> -<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> -<a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> -<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-43" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-43', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-44', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-45', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-46" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +<a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-32', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L148"></a><tt class="py-lineno"> 148</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-33', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'pty-req'</tt><tt class="py-op">)</tt> </tt> +<a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.Message.add_boolean()=paramiko.Message-class.html#add_boolean"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-34', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-35', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">)</tt> </tt> +<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-36', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt> +<a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-37', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> +<a name="L153"></a><tt class="py-lineno"> 153</tt> <tt class="py-line"> <tt class="py-comment"># pixel height, width (usually useless)</tt> </tt> +<a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-38', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-39', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-40', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> +<a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-41', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"> </tt> +<a name="Channel.invoke_shell"></a><div id="Channel.invoke_shell-def"><a name="L160"></a><tt class="py-lineno"> 160</tt> <a class="py-toggle" href="#" id="Channel.invoke_shell-toggle" onclick="return toggle('Channel.invoke_shell');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#invoke_shell">invoke_shell</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.invoke_shell-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.invoke_shell-expanded"><a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"><tt class="py-docstring"> Request an interactive shell session on this channel. If the server</tt> </tt> +<a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"><tt class="py-docstring"> allows it, the channel will then be directly connected to the stdin,</tt> </tt> +<a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"><tt class="py-docstring"> stdout, and stderr of the shell.</tt> </tt> +<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"><tt class="py-docstring"> Normally you would call L{get_pty} before this, in which case the</tt> </tt> +<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"><tt class="py-docstring"> shell will operate through the pty, and the channel will be connected</tt> </tt> +<a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"><tt class="py-docstring"> to the stdin and stdout of the pty.</tt> </tt> +<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"><tt class="py-docstring"> When the shell exits, the channel will be closed and can't be reused.</tt> </tt> +<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"><tt class="py-docstring"> You must open a new channel if you wish to open another shell.</tt> </tt> +<a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> +<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> +<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-42" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-42', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-43', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-44', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-45" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -286,37 +284,34 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-46', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-47', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-48', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'shell'</tt><tt class="py-op">)</tt> </tt> -<a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-49', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-50', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-51', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"> </tt> -<a name="Channel.exec_command"></a><div id="Channel.exec_command-def"><a name="L186"></a><tt class="py-lineno"> 186</tt> <a class="py-toggle" href="#" id="Channel.exec_command-toggle" onclick="return toggle('Channel.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.exec_command-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.exec_command-expanded"><a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"><tt class="py-docstring"> Execute a command on the server. If the server allows it, the channel</tt> </tt> -<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-docstring"> will then be directly connected to the stdin, stdout, and stderr of</tt> </tt> -<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"> the command being executed.</tt> </tt> -<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-docstring"> When the command finishes executing, the channel will be closed and</tt> </tt> -<a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"><tt class="py-docstring"> can't be reused. You must open a new channel if you wish to execute</tt> </tt> -<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-docstring"> another command.</tt> </tt> -<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"><tt class="py-docstring"> @param command: a shell command to execute.</tt> </tt> -<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"><tt class="py-docstring"> @type command: str</tt> </tt> -<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> -<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> -<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-52" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-52', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-53', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-54', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-45', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-46', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-47', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'shell'</tt><tt class="py-op">)</tt> </tt> +<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-48', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-49', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"> </tt> +<a name="Channel.exec_command"></a><div id="Channel.exec_command-def"><a name="L187"></a><tt class="py-lineno"> 187</tt> <a class="py-toggle" href="#" id="Channel.exec_command-toggle" onclick="return toggle('Channel.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.exec_command-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.exec_command-expanded"><a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-docstring"> Execute a command on the server. If the server allows it, the channel</tt> </tt> +<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"> will then be directly connected to the stdin, stdout, and stderr of</tt> </tt> +<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> the command being executed.</tt> </tt> +<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"><tt class="py-docstring"> When the command finishes executing, the channel will be closed and</tt> </tt> +<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-docstring"> can't be reused. You must open a new channel if you wish to execute</tt> </tt> +<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"><tt class="py-docstring"> another command.</tt> </tt> +<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"><tt class="py-docstring"> @param command: a shell command to execute.</tt> </tt> +<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"><tt class="py-docstring"> @type command: str</tt> </tt> +<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> +<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> +<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-50" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-50', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-51', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-52', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -336,37 +331,34 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-55', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-56', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-57', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'exec'</tt><tt class="py-op">)</tt> </tt> -<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-58', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-59', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt> </tt> -<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-60', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-61', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> </tt> -<a name="Channel.invoke_subsystem"></a><div id="Channel.invoke_subsystem-def"><a name="L214"></a><tt class="py-lineno"> 214</tt> <a class="py-toggle" href="#" id="Channel.invoke_subsystem-toggle" onclick="return toggle('Channel.invoke_subsystem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#invoke_subsystem">invoke_subsystem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">subsystem</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.invoke_subsystem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.invoke_subsystem-expanded"><a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"><tt class="py-docstring"> Request a subsystem on the server (for example, C{sftp}). If the</tt> </tt> -<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"><tt class="py-docstring"> server allows it, the channel will then be directly connected to the</tt> </tt> -<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"><tt class="py-docstring"> requested subsystem.</tt> </tt> -<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"><tt class="py-docstring"> When the subsystem finishes, the channel will be closed and can't be</tt> </tt> -<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"><tt class="py-docstring"> reused.</tt> </tt> -<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"><tt class="py-docstring"> @param subsystem: name of the subsystem being requested.</tt> </tt> -<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"><tt class="py-docstring"> @type subsystem: str</tt> </tt> -<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> -<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> -<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-62" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-62', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-63', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-64', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-53', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-54', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-55', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'exec'</tt><tt class="py-op">)</tt> </tt> +<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-56', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-57', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt> </tt> +<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-58', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"> </tt> +<a name="Channel.invoke_subsystem"></a><div id="Channel.invoke_subsystem-def"><a name="L215"></a><tt class="py-lineno"> 215</tt> <a class="py-toggle" href="#" id="Channel.invoke_subsystem-toggle" onclick="return toggle('Channel.invoke_subsystem');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#invoke_subsystem">invoke_subsystem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">subsystem</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.invoke_subsystem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.invoke_subsystem-expanded"><a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"><tt class="py-docstring"> Request a subsystem on the server (for example, C{sftp}). If the</tt> </tt> +<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"><tt class="py-docstring"> server allows it, the channel will then be directly connected to the</tt> </tt> +<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"><tt class="py-docstring"> requested subsystem.</tt> </tt> +<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"><tt class="py-docstring"> When the subsystem finishes, the channel will be closed and can't be</tt> </tt> +<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"><tt class="py-docstring"> reused.</tt> </tt> +<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"><tt class="py-docstring"> @param subsystem: name of the subsystem being requested.</tt> </tt> +<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"><tt class="py-docstring"> @type subsystem: str</tt> </tt> +<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> +<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> +<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-59" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-59', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-60', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-61', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-62" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -386,35 +378,32 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-65', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-66', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-67', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'subsystem'</tt><tt class="py-op">)</tt> </tt> -<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-68', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-69', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">subsystem</tt><tt class="py-op">)</tt> </tt> -<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-70', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-71', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> </tt> -<a name="Channel.resize_pty"></a><div id="Channel.resize_pty-def"><a name="L241"></a><tt class="py-lineno"> 241</tt> <a class="py-toggle" href="#" id="Channel.resize_pty-toggle" onclick="return toggle('Channel.resize_pty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#resize_pty">resize_pty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.resize_pty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.resize_pty-expanded"><a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"><tt class="py-docstring"> Resize the pseudo-terminal. This can be used to change the width and</tt> </tt> -<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-docstring"> height of the terminal emulation created in a previous L{get_pty} call.</tt> </tt> -<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width (in characters) of the terminal screen</tt> </tt> -<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> -<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height (in characters) of the terminal screen</tt> </tt> -<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> -<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> -<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> -<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-72" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-72', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-73', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-74', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-62', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-63', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-64', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'subsystem'</tt><tt class="py-op">)</tt> </tt> +<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-65', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-66', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">subsystem</tt><tt class="py-op">)</tt> </tt> +<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-67', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"> </tt> +<a name="Channel.resize_pty"></a><div id="Channel.resize_pty-def"><a name="L242"></a><tt class="py-lineno"> 242</tt> <a class="py-toggle" href="#" id="Channel.resize_pty-toggle" onclick="return toggle('Channel.resize_pty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#resize_pty">resize_pty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.resize_pty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.resize_pty-expanded"><a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-docstring"> Resize the pseudo-terminal. This can be used to change the width and</tt> </tt> +<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-docstring"> height of the terminal emulation created in a previous L{get_pty} call.</tt> </tt> +<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width (in characters) of the terminal screen</tt> </tt> +<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> +<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height (in characters) of the terminal screen</tt> </tt> +<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> +<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request was rejected or the channel was</tt> </tt> +<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"><tt class="py-docstring"> closed</tt> </tt> +<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-68" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-68', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-69', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-70', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -434,68 +423,63 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-75', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-76', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-77', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'window-change'</tt><tt class="py-op">)</tt> </tt> -<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-78', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-79', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt> -<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-80', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> -<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-81', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-82', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-83', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-84', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"> </tt> -<a name="Channel.exit_status_ready"></a><div id="Channel.exit_status_ready-def"><a name="L268"></a><tt class="py-lineno"> 268</tt> <a class="py-toggle" href="#" id="Channel.exit_status_ready-toggle" onclick="return toggle('Channel.exit_status_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#exit_status_ready">exit_status_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.exit_status_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.exit_status_ready-expanded"><a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-docstring"> Return true if the remote process has exited and returned an exit</tt> </tt> -<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> status. You may use this to poll the process status if you don't</tt> </tt> -<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-docstring"> want to block in L{recv_exit_status}. Note that the server may not</tt> </tt> -<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-docstring"> return an exit status in some cases (like bad servers).</tt> </tt> -<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if L{recv_exit_status} will return immediately</tt> </tt> -<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.7.3</tt> </tt> -<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"> </tt> -<a name="Channel.recv_exit_status"></a><div id="Channel.recv_exit_status-def"><a name="L281"></a><tt class="py-lineno"> 281</tt> <a class="py-toggle" href="#" id="Channel.recv_exit_status-toggle" onclick="return toggle('Channel.recv_exit_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_exit_status">recv_exit_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.recv_exit_status-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_exit_status-expanded"><a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"><tt class="py-docstring"> Return the exit status from the process on the server. This is</tt> </tt> -<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-docstring"> mostly useful for retrieving the reults of an L{exec_command}.</tt> </tt> -<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-docstring"> If the command hasn't finished yet, this method will wait until</tt> </tt> -<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-docstring"> it does, or until the channel is closed. If no exit status is</tt> </tt> -<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"><tt class="py-docstring"> provided by the server, -1 is returned.</tt> </tt> -<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-docstring"> @return: the exit code of the process on the server.</tt> </tt> -<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> </tt> -</div><a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> </tt> -<a name="Channel.send_exit_status"></a><div id="Channel.send_exit_status-def"><a name="L300"></a><tt class="py-lineno"> 300</tt> <a class="py-toggle" href="#" id="Channel.send_exit_status-toggle" onclick="return toggle('Channel.send_exit_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_exit_status">send_exit_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">status</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.send_exit_status-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_exit_status-expanded"><a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"><tt class="py-docstring"> Send the exit status of an executed command to the client. (This</tt> </tt> -<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"><tt class="py-docstring"> really only makes sense in server mode.) Many clients expect to</tt> </tt> -<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"><tt class="py-docstring"> get some sort of status code back from an executed command after</tt> </tt> -<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"><tt class="py-docstring"> it completes.</tt> </tt> -<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"><tt class="py-docstring"> @param status: the exit code of the process</tt> </tt> -<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"><tt class="py-docstring"> @type status: int</tt> </tt> -<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-comment"># in many cases, the channel will not still be open here.</tt> </tt> -<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># that's fine.</tt> </tt> -<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-85', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-86', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-71', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-72', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-73', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'window-change'</tt><tt class="py-op">)</tt> </tt> +<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-74', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-75', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt> +<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-76', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> +<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-77', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-78', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-79', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"> </tt> +<a name="Channel.exit_status_ready"></a><div id="Channel.exit_status_ready-def"><a name="L269"></a><tt class="py-lineno"> 269</tt> <a class="py-toggle" href="#" id="Channel.exit_status_ready-toggle" onclick="return toggle('Channel.exit_status_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#exit_status_ready">exit_status_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.exit_status_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.exit_status_ready-expanded"><a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> Return true if the remote process has exited and returned an exit</tt> </tt> +<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-docstring"> status. You may use this to poll the process status if you don't</tt> </tt> +<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-docstring"> want to block in L{recv_exit_status}. Note that the server may not</tt> </tt> +<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-docstring"> return an exit status in some cases (like bad servers).</tt> </tt> +<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if L{recv_exit_status} will return immediately</tt> </tt> +<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.7.3</tt> </tt> +<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> </tt> +<a name="Channel.recv_exit_status"></a><div id="Channel.recv_exit_status-def"><a name="L282"></a><tt class="py-lineno"> 282</tt> <a class="py-toggle" href="#" id="Channel.recv_exit_status-toggle" onclick="return toggle('Channel.recv_exit_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_exit_status">recv_exit_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.recv_exit_status-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_exit_status-expanded"><a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-docstring"> Return the exit status from the process on the server. This is</tt> </tt> +<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-docstring"> mostly useful for retrieving the reults of an L{exec_command}.</tt> </tt> +<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-docstring"> If the command hasn't finished yet, this method will wait until</tt> </tt> +<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"><tt class="py-docstring"> it does, or until the channel is closed. If no exit status is</tt> </tt> +<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-docstring"> provided by the server, -1 is returned.</tt> </tt> +<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"><tt class="py-docstring"> @return: the exit code of the process on the server.</tt> </tt> +<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> </tt> +</div><a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> </tt> +<a name="Channel.send_exit_status"></a><div id="Channel.send_exit_status-def"><a name="L299"></a><tt class="py-lineno"> 299</tt> <a class="py-toggle" href="#" id="Channel.send_exit_status-toggle" onclick="return toggle('Channel.send_exit_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_exit_status">send_exit_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">status</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.send_exit_status-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_exit_status-expanded"><a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"><tt class="py-docstring"> Send the exit status of an executed command to the client. (This</tt> </tt> +<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"><tt class="py-docstring"> really only makes sense in server mode.) Many clients expect to</tt> </tt> +<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"><tt class="py-docstring"> get some sort of status code back from an executed command after</tt> </tt> +<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"><tt class="py-docstring"> it completes.</tt> </tt> +<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"><tt class="py-docstring"> @param status: the exit code of the process</tt> </tt> +<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"><tt class="py-docstring"> @type status: int</tt> </tt> +<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"> <tt class="py-comment"># in many cases, the channel will not still be open here.</tt> </tt> +<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-comment"># that's fine.</tt> </tt> +<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-80', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-81', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -515,60 +499,60 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-87', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-88', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-89', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'exit-status'</tt><tt class="py-op">)</tt> </tt> -<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-90', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> -<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-91', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt> -<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-92', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -</div><a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"> </tt> -<a name="Channel.request_x11"></a><div id="Channel.request_x11-def"><a name="L322"></a><tt class="py-lineno"> 322</tt> <a class="py-toggle" href="#" id="Channel.request_x11-toggle" onclick="return toggle('Channel.request_x11');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#request_x11">request_x11</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">screen_number</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">auth_protocol</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">auth_cookie</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-param">single_connection</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.request_x11-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.request_x11-expanded"><a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"><tt class="py-docstring"> Request an x11 session on this channel. If the server allows it,</tt> </tt> -<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"><tt class="py-docstring"> further x11 requests can be made from the server to the client,</tt> </tt> -<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"><tt class="py-docstring"> when an x11 application is run in a shell session.</tt> </tt> -<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"><tt class="py-docstring"> From RFC4254::</tt> </tt> -<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"><tt class="py-docstring"> It is RECOMMENDED that the 'x11 authentication cookie' that is</tt> </tt> -<a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"><tt class="py-docstring"> sent be a fake, random cookie, and that the cookie be checked and</tt> </tt> -<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"><tt class="py-docstring"> replaced by the real cookie when a connection request is received.</tt> </tt> -<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-docstring"> If you omit the auth_cookie, a new secure random 128-bit value will be</tt> </tt> -<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-docstring"> generated, used, and returned. You will need to use this value to</tt> </tt> -<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-docstring"> verify incoming x11 requests and replace them with the actual local</tt> </tt> -<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-docstring"> x11 cookie (which requires some knoweldge of the x11 protocol).</tt> </tt> -<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-docstring"> If a handler is passed in, the handler is called from another thread</tt> </tt> -<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"><tt class="py-docstring"> whenever a new x11 connection arrives. The default handler queues up</tt> </tt> -<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"><tt class="py-docstring"> incoming x11 connections, which may be retrieved using</tt> </tt> -<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport.accept}. The handler's calling signature is::</tt> </tt> -<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"><tt class="py-docstring"> handler(channel: Channel, (address: str, port: int))</tt> </tt> -<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-docstring"> @param screen_number: the x11 screen number (0, 10, etc)</tt> </tt> -<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"><tt class="py-docstring"> @type screen_number: int</tt> </tt> -<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"><tt class="py-docstring"> @param auth_protocol: the name of the X11 authentication method used;</tt> </tt> -<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"><tt class="py-docstring"> if none is given, C{"MIT-MAGIC-COOKIE-1"} is used</tt> </tt> -<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"><tt class="py-docstring"> @type auth_protocol: str</tt> </tt> -<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"><tt class="py-docstring"> @param auth_cookie: hexadecimal string containing the x11 auth cookie;</tt> </tt> -<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"><tt class="py-docstring"> if none is given, a secure random 128-bit value is generated</tt> </tt> -<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"><tt class="py-docstring"> @type auth_cookie: str</tt> </tt> -<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"><tt class="py-docstring"> @param single_connection: if True, only a single x11 connection will be</tt> </tt> -<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"><tt class="py-docstring"> forwarded (by default, any number of x11 connections can arrive</tt> </tt> -<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"><tt class="py-docstring"> over this session)</tt> </tt> -<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-docstring"> @type single_connection: bool</tt> </tt> -<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: an optional handler to use for incoming X11 connections</tt> </tt> -<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: function</tt> </tt> -<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"><tt class="py-docstring"> @return: the auth_cookie used</tt> </tt> -<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-93" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-93', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> -<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">auth_protocol</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> <tt class="py-name">auth_protocol</tt> <tt class="py-op">=</tt> <tt class="py-string">'MIT-MAGIC-COOKIE-1'</tt> </tt> -<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">auth_cookie</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> <tt class="py-name">auth_cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">binascii</tt><tt class="py-op">.</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-94', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-82', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-83', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-84', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'exit-status'</tt><tt class="py-op">)</tt> </tt> +<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-85', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> +<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-86', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt> +<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-87', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +</div><a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> </tt> +<a name="Channel.request_x11"></a><div id="Channel.request_x11-def"><a name="L321"></a><tt class="py-lineno"> 321</tt> <a class="py-toggle" href="#" id="Channel.request_x11-toggle" onclick="return toggle('Channel.request_x11');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#request_x11">request_x11</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">screen_number</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">auth_protocol</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">auth_cookie</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"> <tt class="py-param">single_connection</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.request_x11-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.request_x11-expanded"><a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"><tt class="py-docstring"> Request an x11 session on this channel. If the server allows it,</tt> </tt> +<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"><tt class="py-docstring"> further x11 requests can be made from the server to the client,</tt> </tt> +<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"><tt class="py-docstring"> when an x11 application is run in a shell session.</tt> </tt> +<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"><tt class="py-docstring"> From RFC4254::</tt> </tt> +<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"><tt class="py-docstring"> It is RECOMMENDED that the 'x11 authentication cookie' that is</tt> </tt> +<a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"><tt class="py-docstring"> sent be a fake, random cookie, and that the cookie be checked and</tt> </tt> +<a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"><tt class="py-docstring"> replaced by the real cookie when a connection request is received.</tt> </tt> +<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"><tt class="py-docstring"> If you omit the auth_cookie, a new secure random 128-bit value will be</tt> </tt> +<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-docstring"> generated, used, and returned. You will need to use this value to</tt> </tt> +<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-docstring"> verify incoming x11 requests and replace them with the actual local</tt> </tt> +<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-docstring"> x11 cookie (which requires some knoweldge of the x11 protocol).</tt> </tt> +<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"><tt class="py-docstring"> If a handler is passed in, the handler is called from another thread</tt> </tt> +<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-docstring"> whenever a new x11 connection arrives. The default handler queues up</tt> </tt> +<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"><tt class="py-docstring"> incoming x11 connections, which may be retrieved using</tt> </tt> +<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport.accept}. The handler's calling signature is::</tt> </tt> +<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"><tt class="py-docstring"> handler(channel: Channel, (address: str, port: int))</tt> </tt> +<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"><tt class="py-docstring"> @param screen_number: the x11 screen number (0, 10, etc)</tt> </tt> +<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-docstring"> @type screen_number: int</tt> </tt> +<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"><tt class="py-docstring"> @param auth_protocol: the name of the X11 authentication method used;</tt> </tt> +<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"><tt class="py-docstring"> if none is given, C{"MIT-MAGIC-COOKIE-1"} is used</tt> </tt> +<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"><tt class="py-docstring"> @type auth_protocol: str</tt> </tt> +<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"><tt class="py-docstring"> @param auth_cookie: hexadecimal string containing the x11 auth cookie;</tt> </tt> +<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"><tt class="py-docstring"> if none is given, a secure random 128-bit value is generated</tt> </tt> +<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"><tt class="py-docstring"> @type auth_cookie: str</tt> </tt> +<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"><tt class="py-docstring"> @param single_connection: if True, only a single x11 connection will be</tt> </tt> +<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"><tt class="py-docstring"> forwarded (by default, any number of x11 connections can arrive</tt> </tt> +<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"><tt class="py-docstring"> over this session)</tt> </tt> +<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"><tt class="py-docstring"> @type single_connection: bool</tt> </tt> +<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: an optional handler to use for incoming X11 connections</tt> </tt> +<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: function</tt> </tt> +<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"><tt class="py-docstring"> @return: the auth_cookie used</tt> </tt> +<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-88" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-88', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel is not open'</tt><tt class="py-op">)</tt> </tt> +<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">auth_protocol</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-name">auth_protocol</tt> <tt class="py-op">=</tt> <tt class="py-string">'MIT-MAGIC-COOKIE-1'</tt> </tt> +<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">auth_cookie</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"> <tt class="py-name">auth_cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">binascii</tt><tt class="py-op">.</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-89', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -588,11 +572,11 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-95', 'randpool', 'link-95');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-96', 'get_bytes', 'link-96');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"> </tt> -<a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-97', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-98', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-90', 'randpool', 'link-90');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-91', 'get_bytes', 'link-91');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> </tt> +<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-92', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-93', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-94" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -612,188 +596,185 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-99', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-100', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-101', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'x11-req'</tt><tt class="py-op">)</tt> </tt> -<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-102', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-103', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">single_connection</tt><tt class="py-op">)</tt> </tt> -<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-104', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">auth_protocol</tt><tt class="py-op">)</tt> </tt> -<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-105', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">auth_cookie</tt><tt class="py-op">)</tt> </tt> -<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-106', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">screen_number</tt><tt class="py-op">)</tt> </tt> -<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="paramiko.HostKeys.clear -paramiko.pipe.OrPipe.clear -paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-107', 'clear', 'link-41');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-108', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-109', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_x11_handler</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt> -<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">auth_cookie</tt> </tt> -</div><a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"> </tt> -<a name="Channel.get_transport"></a><div id="Channel.get_transport-def"><a name="L385"></a><tt class="py-lineno"> 385</tt> <a class="py-toggle" href="#" id="Channel.get_transport-toggle" onclick="return toggle('Channel.get_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_transport">get_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.get_transport-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_transport-expanded"><a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-docstring"> Return the L{Transport} associated with this channel.</tt> </tt> -<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> @return: the L{Transport} that was used to create this channel.</tt> </tt> -<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Transport}</tt> </tt> -<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-110', 'transport', 'link-20');">transport</a></tt> </tt> -</div><a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> </tt> -<a name="Channel.set_name"></a><div id="Channel.set_name-def"><a name="L394"></a><tt class="py-lineno"> 394</tt> <a class="py-toggle" href="#" id="Channel.set_name-toggle" onclick="return toggle('Channel.set_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#set_name">set_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.set_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.set_name-expanded"><a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> Set a name for this channel. Currently it's only used to set the name</tt> </tt> -<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> of the channel in logfile entries. The name can be fetched with the</tt> </tt> -<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"> L{get_name} method.</tt> </tt> -<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name</tt> </tt> -<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> -<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-111', 'name', 'link-111');">name</a></tt> </tt> -</div><a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"> </tt> -<a name="Channel.get_name"></a><div id="Channel.get_name-def"><a name="L405"></a><tt class="py-lineno"> 405</tt> <a class="py-toggle" href="#" id="Channel.get_name-toggle" onclick="return toggle('Channel.get_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_name">get_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.get_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_name-expanded"><a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"> Get the name of this channel that was previously set by L{set_name}.</tt> </tt> -<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> @return: the name of this channel.</tt> </tt> -<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> </tt> -</div><a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"> </tt> -<a name="Channel.get_id"></a><div id="Channel.get_id-def"><a name="L414"></a><tt class="py-lineno"> 414</tt> <a class="py-toggle" href="#" id="Channel.get_id-toggle" onclick="return toggle('Channel.get_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_id">get_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.get_id-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_id-expanded"><a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> Return the ID # for this channel. The channel ID is unique across</tt> </tt> -<a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"> a L{Transport} and usually a small number. It's also the number</tt> </tt> -<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-docstring"> passed to L{ServerInterface.check_channel_request} when determining</tt> </tt> -<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-docstring"> whether to accept a channel request in server mode.</tt> </tt> -<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"><tt class="py-docstring"> @return: the ID of this channel.</tt> </tt> -<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt> </tt> -</div><a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"> </tt> -<a name="Channel.set_combine_stderr"></a><div id="Channel.set_combine_stderr-def"><a name="L426"></a><tt class="py-lineno"> 426</tt> <a class="py-toggle" href="#" id="Channel.set_combine_stderr-toggle" onclick="return toggle('Channel.set_combine_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#set_combine_stderr">set_combine_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">combine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.set_combine_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.set_combine_stderr-expanded"><a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-docstring"> Set whether stderr should be combined into stdout on this channel.</tt> </tt> -<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-docstring"> The default is C{False}, but in some cases it may be convenient to</tt> </tt> -<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> have both streams combined.</tt> </tt> -<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"><tt class="py-docstring"> If this is C{False}, and L{exec_command} is called (or C{invoke_shell}</tt> </tt> -<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-docstring"> with no pty), output to stderr will not show up through the L{recv}</tt> </tt> -<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"><tt class="py-docstring"> and L{recv_ready} calls. You will have to use L{recv_stderr} and</tt> </tt> -<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"><tt class="py-docstring"> L{recv_stderr_ready} to get stderr output.</tt> </tt> -<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"><tt class="py-docstring"> If this is C{True}, data will never show up via L{recv_stderr} or</tt> </tt> -<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"><tt class="py-docstring"> L{recv_stderr_ready}.</tt> </tt> -<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"><tt class="py-docstring"> @param combine: C{True} if stderr output should be combined into</tt> </tt> -<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"><tt class="py-docstring"> stdout on this channel.</tt> </tt> -<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"><tt class="py-docstring"> @type combine: bool</tt> </tt> -<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"><tt class="py-docstring"> @return: previous setting.</tt> </tt> -<a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> </tt> -<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">combine</tt> </tt> -<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">combine</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt> -<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-comment"># copy old stderr buffer into primary buffer</tt> </tt> -<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.empty()=paramiko.buffered_pipe.BufferedPipe-class.html#empty"><a title="paramiko.buffered_pipe.BufferedPipe.empty" class="py-name" href="#" onclick="return doclink('link-112', 'empty', 'link-112');">empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_feed</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">old</tt> </tt> -</div><a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> </tt> -<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"> </tt> -<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"> <tt class="py-comment">### socket API</tt> </tt> -<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"> </tt> -<a name="Channel.settimeout"></a><div id="Channel.settimeout-def"><a name="L466"></a><tt class="py-lineno"> 466</tt> <a class="py-toggle" href="#" id="Channel.settimeout-toggle" onclick="return toggle('Channel.settimeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#settimeout">settimeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.settimeout-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.settimeout-expanded"><a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"><tt class="py-docstring"> Set a timeout on blocking read/write operations. The C{timeout}</tt> </tt> -<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"><tt class="py-docstring"> argument can be a nonnegative float expressing seconds, or C{None}. If</tt> </tt> -<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"><tt class="py-docstring"> a float is given, subsequent channel read/write operations will raise</tt> </tt> -<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"><tt class="py-docstring"> a timeout exception if the timeout period value has elapsed before the</tt> </tt> -<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-docstring"> operation has completed. Setting a timeout of C{None} disables</tt> </tt> -<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-docstring"> timeouts on socket operations.</tt> </tt> -<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.settimeout(0.0)} is equivalent to C{chan.setblocking(0)};</tt> </tt> -<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.settimeout(None)} is equivalent to C{chan.setblocking(1)}.</tt> </tt> -<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: seconds to wait for a pending read/write operation</tt> </tt> -<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"> before raising C{socket.timeout}, or C{None} for no timeout.</tt> </tt> -<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: float</tt> </tt> -<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">timeout</tt> </tt> -</div><a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"> </tt> -<a name="Channel.gettimeout"></a><div id="Channel.gettimeout-def"><a name="L484"></a><tt class="py-lineno"> 484</tt> <a class="py-toggle" href="#" id="Channel.gettimeout-toggle" onclick="return toggle('Channel.gettimeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#gettimeout">gettimeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.gettimeout-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.gettimeout-expanded"><a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"><tt class="py-docstring"> Returns the timeout in seconds (as a float) associated with socket</tt> </tt> -<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"><tt class="py-docstring"> operations, or C{None} if no timeout is set. This reflects the last</tt> </tt> -<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-docstring"> call to L{setblocking} or L{settimeout}.</tt> </tt> -<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"><tt class="py-docstring"> @return: timeout in seconds, or C{None}.</tt> </tt> -<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: float</tt> </tt> -<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> </tt> -</div><a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> </tt> -<a name="Channel.setblocking"></a><div id="Channel.setblocking-def"><a name="L495"></a><tt class="py-lineno"> 495</tt> <a class="py-toggle" href="#" id="Channel.setblocking-toggle" onclick="return toggle('Channel.setblocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#setblocking">setblocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">blocking</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.setblocking-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.setblocking-expanded"><a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> Set blocking or non-blocking mode of the channel: if C{blocking} is 0,</tt> </tt> -<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> the channel is set to non-blocking mode; otherwise it's set to blocking</tt> </tt> -<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"><tt class="py-docstring"> mode. Initially all channels are in blocking mode.</tt> </tt> -<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"><tt class="py-docstring"> In non-blocking mode, if a L{recv} call doesn't find any data, or if a</tt> </tt> -<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"><tt class="py-docstring"> L{send} call can't immediately dispose of the data, an error exception</tt> </tt> -<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"><tt class="py-docstring"> is raised. In blocking mode, the calls block until they can proceed. An</tt> </tt> -<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"><tt class="py-docstring"> EOF condition is considered "immediate data" for L{recv}, so if the</tt> </tt> -<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"><tt class="py-docstring"> channel is closed in the read direction, it will never block.</tt> </tt> -<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.setblocking(0)} is equivalent to C{chan.settimeout(0)};</tt> </tt> -<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.setblocking(1)} is equivalent to C{chan.settimeout(None)}.</tt> </tt> -<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"><tt class="py-docstring"> @param blocking: 0 to set non-blocking mode; non-0 to set blocking</tt> </tt> -<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-docstring"> mode.</tt> </tt> -<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-docstring"> @type blocking: int</tt> </tt> -<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">blocking</tt><tt class="py-op">:</tt> </tt> -<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout -paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-113', 'settimeout', 'link-113');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="paramiko.Channel.settimeout -paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-114', 'settimeout', 'link-113');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt> -</div><a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> </tt> -<a name="Channel.getpeername"></a><div id="Channel.getpeername-def"><a name="L519"></a><tt class="py-lineno"> 519</tt> <a class="py-toggle" href="#" id="Channel.getpeername-toggle" onclick="return toggle('Channel.getpeername');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#getpeername">getpeername</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.getpeername-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.getpeername-expanded"><a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"><tt class="py-docstring"> Return the address of the remote side of this Channel, if possible.</tt> </tt> -<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"><tt class="py-docstring"> This is just a wrapper around C{'getpeername'} on the Transport, used</tt> </tt> -<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"><tt class="py-docstring"> to provide enough of a socket-like interface to allow asyncore to work.</tt> </tt> -<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-docstring"> (asyncore likes to call C{'getpeername'}.)</tt> </tt> -<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-docstring"> @return: the address if the remote host, if known</tt> </tt> -<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(str, int)</tt> </tt> -<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-115', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method paramiko.Channel.getpeername()=paramiko.Channel-class.html#getpeername,Method paramiko.Transport.getpeername()=paramiko.Transport-class.html#getpeername"><a title="paramiko.Channel.getpeername -paramiko.Transport.getpeername" class="py-name" href="#" onclick="return doclink('link-116', 'getpeername', 'link-116');">getpeername</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"> </tt> -<a name="Channel.close"></a><div id="Channel.close-def"><a name="L531"></a><tt class="py-lineno"> 531</tt> <a class="py-toggle" href="#" id="Channel.close-toggle" onclick="return toggle('Channel.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.close-expanded"><a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-docstring"> Close the channel. All future read/write operations on the channel</tt> </tt> -<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"><tt class="py-docstring"> will fail. The remote end will receive no more data (after queued data</tt> </tt> -<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"><tt class="py-docstring"> is flushed). Channels are automatically closed when their L{Transport}</tt> </tt> -<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"><tt class="py-docstring"> is closed or when they are garbage collected.</tt> </tt> -<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-comment"># only close the pipe when the user explicitly closes the channel.</tt> </tt> -<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># otherwise they will get unpleasant surprises. (and do it before</tt> </tt> -<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># checking self.closed, since the remote host may have already</tt> </tt> -<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># closed the connection.)</tt> </tt> -<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="paramiko.Agent.close +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-94', 'MSG_CHANNEL_REQUEST', 'link-31');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-95', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-96', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'x11-req'</tt><tt class="py-op">)</tt> </tt> +<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-97', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-98', 'add_boolean', 'link-34');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">single_connection</tt><tt class="py-op">)</tt> </tt> +<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-99', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">auth_protocol</tt><tt class="py-op">)</tt> </tt> +<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-100', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">auth_cookie</tt><tt class="py-op">)</tt> </tt> +<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-101', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">screen_number</tt><tt class="py-op">)</tt> </tt> +<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_event_pending</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-102', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-103', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_x11_handler</tt><tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt> +<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">auth_cookie</tt> </tt> +</div><a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> </tt> +<a name="Channel.get_transport"></a><div id="Channel.get_transport-def"><a name="L384"></a><tt class="py-lineno"> 384</tt> <a class="py-toggle" href="#" id="Channel.get_transport-toggle" onclick="return toggle('Channel.get_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_transport">get_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.get_transport-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_transport-expanded"><a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-docstring"> Return the L{Transport} associated with this channel.</tt> </tt> +<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"><tt class="py-docstring"> @return: the L{Transport} that was used to create this channel.</tt> </tt> +<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Transport}</tt> </tt> +<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-104', 'transport', 'link-20');">transport</a></tt> </tt> +</div><a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> </tt> +<a name="Channel.set_name"></a><div id="Channel.set_name-def"><a name="L393"></a><tt class="py-lineno"> 393</tt> <a class="py-toggle" href="#" id="Channel.set_name-toggle" onclick="return toggle('Channel.set_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#set_name">set_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.set_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.set_name-expanded"><a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-docstring"> Set a name for this channel. Currently it's only used to set the name</tt> </tt> +<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> of the channel in logfile entries. The name can be fetched with the</tt> </tt> +<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> L{get_name} method.</tt> </tt> +<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name</tt> </tt> +<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> +<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-105', 'name', 'link-105');">name</a></tt> </tt> +</div><a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"> </tt> +<a name="Channel.get_name"></a><div id="Channel.get_name-def"><a name="L404"></a><tt class="py-lineno"> 404</tt> <a class="py-toggle" href="#" id="Channel.get_name-toggle" onclick="return toggle('Channel.get_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_name">get_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.get_name-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_name-expanded"><a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-docstring"> Get the name of this channel that was previously set by L{set_name}.</tt> </tt> +<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"> @return: the name of this channel.</tt> </tt> +<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> </tt> +</div><a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"> </tt> +<a name="Channel.get_id"></a><div id="Channel.get_id-def"><a name="L413"></a><tt class="py-lineno"> 413</tt> <a class="py-toggle" href="#" id="Channel.get_id-toggle" onclick="return toggle('Channel.get_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#get_id">get_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.get_id-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.get_id-expanded"><a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-docstring"> Return the ID # for this channel. The channel ID is unique across</tt> </tt> +<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> a L{Transport} and usually a small number. It's also the number</tt> </tt> +<a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"> passed to L{ServerInterface.check_channel_request} when determining</tt> </tt> +<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-docstring"> whether to accept a channel request in server mode.</tt> </tt> +<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-docstring"> @return: the ID of this channel.</tt> </tt> +<a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt> </tt> +</div><a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> </tt> +<a name="Channel.set_combine_stderr"></a><div id="Channel.set_combine_stderr-def"><a name="L425"></a><tt class="py-lineno"> 425</tt> <a class="py-toggle" href="#" id="Channel.set_combine_stderr-toggle" onclick="return toggle('Channel.set_combine_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#set_combine_stderr">set_combine_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">combine</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.set_combine_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.set_combine_stderr-expanded"><a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"><tt class="py-docstring"> Set whether stderr should be combined into stdout on this channel.</tt> </tt> +<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-docstring"> The default is C{False}, but in some cases it may be convenient to</tt> </tt> +<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-docstring"> have both streams combined.</tt> </tt> +<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"> If this is C{False}, and L{exec_command} is called (or C{invoke_shell}</tt> </tt> +<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"><tt class="py-docstring"> with no pty), output to stderr will not show up through the L{recv}</tt> </tt> +<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-docstring"> and L{recv_ready} calls. You will have to use L{recv_stderr} and</tt> </tt> +<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"><tt class="py-docstring"> L{recv_stderr_ready} to get stderr output.</tt> </tt> +<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"><tt class="py-docstring"> If this is C{True}, data will never show up via L{recv_stderr} or</tt> </tt> +<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"><tt class="py-docstring"> L{recv_stderr_ready}.</tt> </tt> +<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"><tt class="py-docstring"> @param combine: C{True} if stderr output should be combined into</tt> </tt> +<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"><tt class="py-docstring"> stdout on this channel.</tt> </tt> +<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"><tt class="py-docstring"> @type combine: bool</tt> </tt> +<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"><tt class="py-docstring"> @return: previous setting.</tt> </tt> +<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> <tt class="py-name">old</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> </tt> +<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">combine</tt> </tt> +<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">combine</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">old</tt><tt class="py-op">:</tt> </tt> +<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-comment"># copy old stderr buffer into primary buffer</tt> </tt> +<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.empty()=paramiko.buffered_pipe.BufferedPipe-class.html#empty"><a title="paramiko.buffered_pipe.BufferedPipe.empty" class="py-name" href="#" onclick="return doclink('link-106', 'empty', 'link-106');">empty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_feed</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">old</tt> </tt> +</div><a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> </tt> +<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> </tt> +<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"> <tt class="py-comment">### socket API</tt> </tt> +<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"> </tt> +<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"> </tt> +<a name="Channel.settimeout"></a><div id="Channel.settimeout-def"><a name="L465"></a><tt class="py-lineno"> 465</tt> <a class="py-toggle" href="#" id="Channel.settimeout-toggle" onclick="return toggle('Channel.settimeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#settimeout">settimeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.settimeout-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.settimeout-expanded"><a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"><tt class="py-docstring"> Set a timeout on blocking read/write operations. The C{timeout}</tt> </tt> +<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"><tt class="py-docstring"> argument can be a nonnegative float expressing seconds, or C{None}. If</tt> </tt> +<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"><tt class="py-docstring"> a float is given, subsequent channel read/write operations will raise</tt> </tt> +<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"><tt class="py-docstring"> a timeout exception if the timeout period value has elapsed before the</tt> </tt> +<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"><tt class="py-docstring"> operation has completed. Setting a timeout of C{None} disables</tt> </tt> +<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-docstring"> timeouts on socket operations.</tt> </tt> +<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.settimeout(0.0)} is equivalent to C{chan.setblocking(0)};</tt> </tt> +<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.settimeout(None)} is equivalent to C{chan.setblocking(1)}.</tt> </tt> +<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: seconds to wait for a pending read/write operation</tt> </tt> +<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> before raising C{socket.timeout}, or C{None} for no timeout.</tt> </tt> +<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: float</tt> </tt> +<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">timeout</tt> </tt> +</div><a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> </tt> +<a name="Channel.gettimeout"></a><div id="Channel.gettimeout-def"><a name="L483"></a><tt class="py-lineno"> 483</tt> <a class="py-toggle" href="#" id="Channel.gettimeout-toggle" onclick="return toggle('Channel.gettimeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#gettimeout">gettimeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.gettimeout-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.gettimeout-expanded"><a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"><tt class="py-docstring"> Returns the timeout in seconds (as a float) associated with socket</tt> </tt> +<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"><tt class="py-docstring"> operations, or C{None} if no timeout is set. This reflects the last</tt> </tt> +<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"><tt class="py-docstring"> call to L{setblocking} or L{settimeout}.</tt> </tt> +<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"><tt class="py-docstring"> @return: timeout in seconds, or C{None}.</tt> </tt> +<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: float</tt> </tt> +<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> </tt> +</div><a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> </tt> +<a name="Channel.setblocking"></a><div id="Channel.setblocking-def"><a name="L494"></a><tt class="py-lineno"> 494</tt> <a class="py-toggle" href="#" id="Channel.setblocking-toggle" onclick="return toggle('Channel.setblocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#setblocking">setblocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">blocking</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.setblocking-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.setblocking-expanded"><a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-docstring"> Set blocking or non-blocking mode of the channel: if C{blocking} is 0,</tt> </tt> +<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> the channel is set to non-blocking mode; otherwise it's set to blocking</tt> </tt> +<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> mode. Initially all channels are in blocking mode.</tt> </tt> +<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"> In non-blocking mode, if a L{recv} call doesn't find any data, or if a</tt> </tt> +<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"><tt class="py-docstring"> L{send} call can't immediately dispose of the data, an error exception</tt> </tt> +<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"><tt class="py-docstring"> is raised. In blocking mode, the calls block until they can proceed. An</tt> </tt> +<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"><tt class="py-docstring"> EOF condition is considered "immediate data" for L{recv}, so if the</tt> </tt> +<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"><tt class="py-docstring"> channel is closed in the read direction, it will never block.</tt> </tt> +<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.setblocking(0)} is equivalent to C{chan.settimeout(0)};</tt> </tt> +<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"><tt class="py-docstring"> C{chan.setblocking(1)} is equivalent to C{chan.settimeout(None)}.</tt> </tt> +<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"><tt class="py-docstring"> @param blocking: 0 to set non-blocking mode; non-0 to set blocking</tt> </tt> +<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"><tt class="py-docstring"> mode.</tt> </tt> +<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-docstring"> @type blocking: int</tt> </tt> +<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">blocking</tt><tt class="py-op">:</tt> </tt> +<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout +paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-107', 'settimeout', 'link-107');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.Channel.settimeout +paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-108', 'settimeout', 'link-107');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt> +</div><a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> </tt> +<a name="Channel.getpeername"></a><div id="Channel.getpeername-def"><a name="L518"></a><tt class="py-lineno"> 518</tt> <a class="py-toggle" href="#" id="Channel.getpeername-toggle" onclick="return toggle('Channel.getpeername');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#getpeername">getpeername</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.getpeername-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.getpeername-expanded"><a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"><tt class="py-docstring"> Return the address of the remote side of this Channel, if possible.</tt> </tt> +<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"><tt class="py-docstring"> This is just a wrapper around C{'getpeername'} on the Transport, used</tt> </tt> +<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"><tt class="py-docstring"> to provide enough of a socket-like interface to allow asyncore to work.</tt> </tt> +<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"><tt class="py-docstring"> (asyncore likes to call C{'getpeername'}.)</tt> </tt> +<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"><tt class="py-docstring"> @return: the address if the remote host, if known</tt> </tt> +<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(str, int)</tt> </tt> +<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-109', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method paramiko.Channel.getpeername()=paramiko.Channel-class.html#getpeername,Method paramiko.Transport.getpeername()=paramiko.Transport-class.html#getpeername"><a title="paramiko.Channel.getpeername +paramiko.Transport.getpeername" class="py-name" href="#" onclick="return doclink('link-110', 'getpeername', 'link-110');">getpeername</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"> </tt> +<a name="Channel.close"></a><div id="Channel.close-def"><a name="L530"></a><tt class="py-lineno"> 530</tt> <a class="py-toggle" href="#" id="Channel.close-toggle" onclick="return toggle('Channel.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.close-expanded"><a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-docstring"> Close the channel. All future read/write operations on the channel</tt> </tt> +<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-docstring"> will fail. The remote end will receive no more data (after queued data</tt> </tt> +<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"><tt class="py-docstring"> is flushed). Channels are automatically closed when their L{Transport}</tt> </tt> +<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"><tt class="py-docstring"> is closed or when they are garbage collected.</tt> </tt> +<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-comment"># only close the pipe when the user explicitly closes the channel.</tt> </tt> +<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-comment"># otherwise they will get unpleasant surprises. (and do it before</tt> </tt> +<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-comment"># checking self.closed, since the remote host may have already</tt> </tt> +<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt class="py-comment"># closed the connection.)</tt> </tt> +<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -804,57 +785,57 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-117', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"> </tt> -<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-name">msgs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_close_internal</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msgs</tt><tt class="py-op">:</tt> </tt> -<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-118', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -</div><a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> </tt> -<a name="Channel.recv_ready"></a><div id="Channel.recv_ready-def"><a name="L557"></a><tt class="py-lineno"> 557</tt> <a class="py-toggle" href="#" id="Channel.recv_ready-toggle" onclick="return toggle('Channel.recv_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_ready">recv_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.recv_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_ready-expanded"><a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data is buffered and ready to be read from this</tt> </tt> -<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"><tt class="py-docstring"> channel. A C{False} result does not mean that the channel has closed;</tt> </tt> -<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"><tt class="py-docstring"> it means you may need to wait before more data arrives.</tt> </tt> -<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{recv} call on this channel would immediately</tt> </tt> -<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-docstring"> return at least one byte; C{False} otherwise.</tt> </tt> -<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> -<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.read_ready()=paramiko.buffered_pipe.BufferedPipe-class.html#read_ready"><a title="paramiko.buffered_pipe.BufferedPipe.read_ready" class="py-name" href="#" onclick="return doclink('link-119', 'read_ready', 'link-119');">read_ready</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> </tt> -<a name="Channel.recv"></a><div id="Channel.recv-def"><a name="L569"></a><tt class="py-lineno"> 569</tt> <a class="py-toggle" href="#" id="Channel.recv-toggle" onclick="return toggle('Channel.recv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv">recv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.recv-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv-expanded"><a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"><tt class="py-docstring"> Receive data from the channel. The return value is a string</tt> </tt> -<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"><tt class="py-docstring"> representing the data received. The maximum amount of data to be</tt> </tt> -<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"> received at once is specified by C{nbytes}. If a string of length zero</tt> </tt> -<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"> is returned, the channel stream has closed.</tt> </tt> -<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: maximum number of bytes to read.</tt> </tt> -<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> -<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"><tt class="py-docstring"> @return: data.</tt> </tt> -<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data is ready before the timeout set by</tt> </tt> -<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"> L{settimeout}.</tt> </tt> -<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-111', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> </tt> +<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-name">msgs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_close_internal</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msgs</tt><tt class="py-op">:</tt> </tt> +<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-112', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +</div><a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> </tt> +<a name="Channel.recv_ready"></a><div id="Channel.recv_ready-def"><a name="L556"></a><tt class="py-lineno"> 556</tt> <a class="py-toggle" href="#" id="Channel.recv_ready-toggle" onclick="return toggle('Channel.recv_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_ready">recv_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.recv_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_ready-expanded"><a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data is buffered and ready to be read from this</tt> </tt> +<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"><tt class="py-docstring"> channel. A C{False} result does not mean that the channel has closed;</tt> </tt> +<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"><tt class="py-docstring"> it means you may need to wait before more data arrives.</tt> </tt> +<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{recv} call on this channel would immediately</tt> </tt> +<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"><tt class="py-docstring"> return at least one byte; C{False} otherwise.</tt> </tt> +<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> +<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.read_ready()=paramiko.buffered_pipe.BufferedPipe-class.html#read_ready"><a title="paramiko.buffered_pipe.BufferedPipe.read_ready" class="py-name" href="#" onclick="return doclink('link-113', 'read_ready', 'link-113');">read_ready</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> </tt> +<a name="Channel.recv"></a><div id="Channel.recv-def"><a name="L568"></a><tt class="py-lineno"> 568</tt> <a class="py-toggle" href="#" id="Channel.recv-toggle" onclick="return toggle('Channel.recv');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv">recv</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.recv-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv-expanded"><a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"><tt class="py-docstring"> Receive data from the channel. The return value is a string</tt> </tt> +<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"><tt class="py-docstring"> representing the data received. The maximum amount of data to be</tt> </tt> +<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"><tt class="py-docstring"> received at once is specified by C{nbytes}. If a string of length zero</tt> </tt> +<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"> is returned, the channel stream has closed.</tt> </tt> +<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: maximum number of bytes to read.</tt> </tt> +<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> +<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"><tt class="py-docstring"> @return: data.</tt> </tt> +<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data is ready before the timeout set by</tt> </tt> +<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-docstring"> L{settimeout}.</tt> </tt> +<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-120', 'read', 'link-120');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-121" class="py-name"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-121', 'PipeTimeout', 'link-16');">PipeTimeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> </tt> -<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_add_window</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-comment"># no need to hold the channel lock when sending this</tt> </tt> -<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-122', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-123', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-124" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST=paramiko.auth_handler-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST=paramiko.channel-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.common.MSG_CHANNEL_WINDOW_ADJUST=paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.dsskey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.dsskey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.hostkeys.MSG_CHANNEL_WINDOW_ADJUST=paramiko.hostkeys-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_gex.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_gex-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_group1.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_group1-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.packet.MSG_CHANNEL_WINDOW_ADJUST=paramiko.packet-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.pkey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.pkey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.rsakey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.rsakey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_attr.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_attr-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_file.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_file-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_handle-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_si-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST=paramiko.transport-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.util.MSG_CHANNEL_WINDOW_ADJUST=paramiko.util-module.html#MSG_CHANNEL_WINDOW_ADJUST"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-114', 'read', 'link-114');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-115" class="py-name"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-115', 'PipeTimeout', 'link-16');">PipeTimeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> </tt> +<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_add_window</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-comment"># no need to hold the channel lock when sending this</tt> </tt> +<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-116', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-117', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-118" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST=paramiko.auth_handler-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST=paramiko.channel-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.common.MSG_CHANNEL_WINDOW_ADJUST=paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.dsskey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.dsskey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.hostkeys.MSG_CHANNEL_WINDOW_ADJUST=paramiko.hostkeys-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_gex.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_gex-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_group1.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_group1-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.packet.MSG_CHANNEL_WINDOW_ADJUST=paramiko.packet-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.pkey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.pkey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.rsakey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.rsakey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_attr.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_attr-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_file.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_file-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_handle-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_si-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST=paramiko.transport-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.util.MSG_CHANNEL_WINDOW_ADJUST=paramiko.util-module.html#MSG_CHANNEL_WINDOW_ADJUST"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST paramiko.client.MSG_CHANNEL_WINDOW_ADJUST paramiko.common.MSG_CHANNEL_WINDOW_ADJUST @@ -874,59 +855,59 @@ paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST -paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-124', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-124');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-125', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-126', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt> </tt> -<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-127', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"> </tt> -<a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"> </tt> -<a name="Channel.recv_stderr_ready"></a><div id="Channel.recv_stderr_ready-def"><a name="L600"></a><tt class="py-lineno"> 600</tt> <a class="py-toggle" href="#" id="Channel.recv_stderr_ready-toggle" onclick="return toggle('Channel.recv_stderr_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_stderr_ready">recv_stderr_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.recv_stderr_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_stderr_ready-expanded"><a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data is buffered and ready to be read from this</tt> </tt> -<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"><tt class="py-docstring"> channel's stderr stream. Only channels using L{exec_command} or</tt> </tt> -<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"><tt class="py-docstring"> L{invoke_shell} without a pty will ever have data on the stderr</tt> </tt> -<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-docstring"> stream.</tt> </tt> -<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{recv_stderr} call on this channel would</tt> </tt> -<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"><tt class="py-docstring"> immediately return at least one byte; C{False} otherwise.</tt> </tt> -<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> -<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.read_ready" class="py-name" href="#" onclick="return doclink('link-128', 'read_ready', 'link-119');">read_ready</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> </tt> -<a name="Channel.recv_stderr"></a><div id="Channel.recv_stderr-def"><a name="L615"></a><tt class="py-lineno"> 615</tt> <a class="py-toggle" href="#" id="Channel.recv_stderr-toggle" onclick="return toggle('Channel.recv_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_stderr">recv_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.recv_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_stderr-expanded"><a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"><tt class="py-docstring"> Receive data from the channel's stderr stream. Only channels using</tt> </tt> -<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"><tt class="py-docstring"> L{exec_command} or L{invoke_shell} without a pty will ever have data</tt> </tt> -<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"><tt class="py-docstring"> on the stderr stream. The return value is a string representing the</tt> </tt> -<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"><tt class="py-docstring"> data received. The maximum amount of data to be received at once is</tt> </tt> -<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-docstring"> specified by C{nbytes}. If a string of length zero is returned, the</tt> </tt> -<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"> channel stream has closed.</tt> </tt> -<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: maximum number of bytes to read.</tt> </tt> -<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> -<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"><tt class="py-docstring"> @return: data.</tt> </tt> -<a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data is ready before the timeout set by</tt> </tt> -<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"><tt class="py-docstring"> L{settimeout}.</tt> </tt> -<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="paramiko.BufferedFile.read +paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-118', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-118');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-119', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-120', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt> </tt> +<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-121', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> </tt> +<a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> </tt> +<a name="Channel.recv_stderr_ready"></a><div id="Channel.recv_stderr_ready-def"><a name="L599"></a><tt class="py-lineno"> 599</tt> <a class="py-toggle" href="#" id="Channel.recv_stderr_ready-toggle" onclick="return toggle('Channel.recv_stderr_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_stderr_ready">recv_stderr_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.recv_stderr_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_stderr_ready-expanded"><a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data is buffered and ready to be read from this</tt> </tt> +<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"><tt class="py-docstring"> channel's stderr stream. Only channels using L{exec_command} or</tt> </tt> +<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"><tt class="py-docstring"> L{invoke_shell} without a pty will ever have data on the stderr</tt> </tt> +<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"><tt class="py-docstring"> stream.</tt> </tt> +<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{recv_stderr} call on this channel would</tt> </tt> +<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"><tt class="py-docstring"> immediately return at least one byte; C{False} otherwise.</tt> </tt> +<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> +<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.read_ready" class="py-name" href="#" onclick="return doclink('link-122', 'read_ready', 'link-113');">read_ready</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> </tt> +<a name="Channel.recv_stderr"></a><div id="Channel.recv_stderr-def"><a name="L614"></a><tt class="py-lineno"> 614</tt> <a class="py-toggle" href="#" id="Channel.recv_stderr-toggle" onclick="return toggle('Channel.recv_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#recv_stderr">recv_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.recv_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.recv_stderr-expanded"><a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"><tt class="py-docstring"> Receive data from the channel's stderr stream. Only channels using</tt> </tt> +<a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"><tt class="py-docstring"> L{exec_command} or L{invoke_shell} without a pty will ever have data</tt> </tt> +<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"><tt class="py-docstring"> on the stderr stream. The return value is a string representing the</tt> </tt> +<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"><tt class="py-docstring"> data received. The maximum amount of data to be received at once is</tt> </tt> +<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"><tt class="py-docstring"> specified by C{nbytes}. If a string of length zero is returned, the</tt> </tt> +<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-docstring"> channel stream has closed.</tt> </tt> +<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: maximum number of bytes to read.</tt> </tt> +<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> +<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-docstring"> @return: data.</tt> </tt> +<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data is ready before the timeout set by</tt> </tt> +<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> L{settimeout}.</tt> </tt> +<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-129', 'read', 'link-120');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-130" class="py-name"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-130', 'PipeTimeout', 'link-16');">PipeTimeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> </tt> -<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_add_window</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> <tt class="py-comment"># no need to hold the channel lock when sending this</tt> </tt> -<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-131', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-132', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-133" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-123', 'read', 'link-114');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-124" class="py-name"><a title="paramiko.buffered_pipe.PipeTimeout" class="py-name" href="#" onclick="return doclink('link-124', 'PipeTimeout', 'link-16');">PipeTimeout</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> </tt> +<a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> <tt class="py-name">ack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_add_window</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"> <tt class="py-comment"># no need to hold the channel lock when sending this</tt> </tt> +<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ack</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-125', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-126', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-127" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST paramiko.client.MSG_CHANNEL_WINDOW_ADJUST paramiko.common.MSG_CHANNEL_WINDOW_ADJUST @@ -946,59 +927,59 @@ paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST -paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-133', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-124');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-134', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-135', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt> </tt> -<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-136', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"> </tt> -<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"> </tt> -<a name="Channel.send_ready"></a><div id="Channel.send_ready-def"><a name="L650"></a><tt class="py-lineno"> 650</tt> <a class="py-toggle" href="#" id="Channel.send_ready-toggle" onclick="return toggle('Channel.send_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_ready">send_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.send_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_ready-expanded"><a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data can be written to this channel without blocking.</tt> </tt> -<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"><tt class="py-docstring"> This means the channel is either closed (so any write attempt would</tt> </tt> -<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"><tt class="py-docstring"> return immediately) or there is at least one byte of space in the </tt> </tt> -<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"><tt class="py-docstring"> outbound buffer. If there is at least one byte of space in the</tt> </tt> -<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"><tt class="py-docstring"> outbound buffer, a L{send} call will succeed immediately and return</tt> </tt> -<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"><tt class="py-docstring"> the number of bytes actually written.</tt> </tt> -<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{send} call on this channel would immediately</tt> </tt> -<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"><tt class="py-docstring"> succeed or fail</tt> </tt> -<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> -<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> </tt> -<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"> </tt> -<a name="Channel.send"></a><div id="Channel.send-def"><a name="L671"></a><tt class="py-lineno"> 671</tt> <a class="py-toggle" href="#" id="Channel.send-toggle" onclick="return toggle('Channel.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.send-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send-expanded"><a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel. Returns the number of bytes sent, or 0 if</tt> </tt> -<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"> the channel stream is closed. Applications are responsible for</tt> </tt> -<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> checking that all data has been sent: if only some of the data was</tt> </tt> -<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> transmitted, the application needs to attempt delivery of the remaining</tt> </tt> -<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"> data.</tt> </tt> -<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send</tt> </tt> -<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> -<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-docstring"> @return: number of bytes actually sent</tt> </tt> -<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data could be sent before the timeout set</tt> </tt> -<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"><tt class="py-docstring"> by L{settimeout}.</tt> </tt> -<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_send_window</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> -<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-comment"># eof or similar</tt> </tt> -<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-137', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-138', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-139" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_DATA,Variable paramiko.channel.MSG_CHANNEL_DATA=paramiko.channel-module.html#MSG_CHANNEL_DATA,Variable paramiko.client.MSG_CHANNEL_DATA=paramiko.client-module.html#MSG_CHANNEL_DATA,Variable paramiko.common.MSG_CHANNEL_DATA=paramiko.common-module.html#MSG_CHANNEL_DATA,Variable paramiko.dsskey.MSG_CHANNEL_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_DATA,Variable paramiko.packet.MSG_CHANNEL_DATA=paramiko.packet-module.html#MSG_CHANNEL_DATA,Variable paramiko.pkey.MSG_CHANNEL_DATA=paramiko.pkey-module.html#MSG_CHANNEL_DATA,Variable paramiko.rsakey.MSG_CHANNEL_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_DATA,Variable paramiko.server.MSG_CHANNEL_DATA=paramiko.server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp.MSG_CHANNEL_DATA=paramiko.sftp-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_DATA,Variable paramiko.transport.MSG_CHANNEL_DATA=paramiko.transport-module.html#MSG_CHANNEL_DATA,Variable paramiko.util.MSG_CHANNEL_DATA=paramiko.util-module.html#MSG_CHANNEL_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_DATA +paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-127', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-118');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-128', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-129', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">ack</tt><tt class="py-op">)</tt> </tt> +<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-130', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"> </tt> +<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"> </tt> +<a name="Channel.send_ready"></a><div id="Channel.send_ready-def"><a name="L649"></a><tt class="py-lineno"> 649</tt> <a class="py-toggle" href="#" id="Channel.send_ready-toggle" onclick="return toggle('Channel.send_ready');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_ready">send_ready</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.send_ready-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_ready-expanded"><a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-docstring"> Returns true if data can be written to this channel without blocking.</tt> </tt> +<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"><tt class="py-docstring"> This means the channel is either closed (so any write attempt would</tt> </tt> +<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"><tt class="py-docstring"> return immediately) or there is at least one byte of space in the </tt> </tt> +<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"><tt class="py-docstring"> outbound buffer. If there is at least one byte of space in the</tt> </tt> +<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"><tt class="py-docstring"> outbound buffer, a L{send} call will succeed immediately and return</tt> </tt> +<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"><tt class="py-docstring"> the number of bytes actually written.</tt> </tt> +<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if a L{send} call on this channel would immediately</tt> </tt> +<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> succeed or fail</tt> </tt> +<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt> +<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> +<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> </tt> +<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> </tt> +<a name="Channel.send"></a><div id="Channel.send-def"><a name="L670"></a><tt class="py-lineno"> 670</tt> <a class="py-toggle" href="#" id="Channel.send-toggle" onclick="return toggle('Channel.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.send-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send-expanded"><a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel. Returns the number of bytes sent, or 0 if</tt> </tt> +<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"> the channel stream is closed. Applications are responsible for</tt> </tt> +<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"> checking that all data has been sent: if only some of the data was</tt> </tt> +<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> transmitted, the application needs to attempt delivery of the remaining</tt> </tt> +<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> data.</tt> </tt> +<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send</tt> </tt> +<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> +<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-docstring"> @return: number of bytes actually sent</tt> </tt> +<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data could be sent before the timeout set</tt> </tt> +<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"><tt class="py-docstring"> by L{settimeout}.</tt> </tt> +<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_send_window</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> +<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-comment"># eof or similar</tt> </tt> +<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-131', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-132', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-133" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_DATA,Variable paramiko.channel.MSG_CHANNEL_DATA=paramiko.channel-module.html#MSG_CHANNEL_DATA,Variable paramiko.client.MSG_CHANNEL_DATA=paramiko.client-module.html#MSG_CHANNEL_DATA,Variable paramiko.common.MSG_CHANNEL_DATA=paramiko.common-module.html#MSG_CHANNEL_DATA,Variable paramiko.dsskey.MSG_CHANNEL_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_DATA,Variable paramiko.packet.MSG_CHANNEL_DATA=paramiko.packet-module.html#MSG_CHANNEL_DATA,Variable paramiko.pkey.MSG_CHANNEL_DATA=paramiko.pkey-module.html#MSG_CHANNEL_DATA,Variable paramiko.rsakey.MSG_CHANNEL_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_DATA,Variable paramiko.server.MSG_CHANNEL_DATA=paramiko.server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp.MSG_CHANNEL_DATA=paramiko.sftp-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_DATA,Variable paramiko.transport.MSG_CHANNEL_DATA=paramiko.transport-module.html#MSG_CHANNEL_DATA,Variable paramiko.util.MSG_CHANNEL_DATA=paramiko.util-module.html#MSG_CHANNEL_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_DATA paramiko.channel.MSG_CHANNEL_DATA paramiko.client.MSG_CHANNEL_DATA paramiko.common.MSG_CHANNEL_DATA @@ -1018,44 +999,44 @@ paramiko.sftp_handle.MSG_CHANNEL_DATA paramiko.sftp_server.MSG_CHANNEL_DATA paramiko.sftp_si.MSG_CHANNEL_DATA paramiko.transport.MSG_CHANNEL_DATA -paramiko.util.MSG_CHANNEL_DATA" class="py-name" href="#" onclick="return doclink('link-139', 'MSG_CHANNEL_DATA', 'link-139');">MSG_CHANNEL_DATA</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-140', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-141', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-comment"># Note: We release self.lock before calling _send_user_message.</tt> </tt> -<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># Otherwise, we can deadlock during re-keying.</tt> </tt> -<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-142', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> -</div><a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> </tt> -<a name="Channel.send_stderr"></a><div id="Channel.send_stderr-def"><a name="L705"></a><tt class="py-lineno"> 705</tt> <a class="py-toggle" href="#" id="Channel.send_stderr-toggle" onclick="return toggle('Channel.send_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_stderr">send_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.send_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_stderr-expanded"><a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel on the "stderr" stream. This is normally</tt> </tt> -<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-docstring"> only used by servers to send output from shell commands -- clients</tt> </tt> -<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"><tt class="py-docstring"> won't use this. Returns the number of bytes sent, or 0 if the channel</tt> </tt> -<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"><tt class="py-docstring"> stream is closed. Applications are responsible for checking that all</tt> </tt> -<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"><tt class="py-docstring"> data has been sent: if only some of the data was transmitted, the</tt> </tt> -<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"><tt class="py-docstring"> application needs to attempt delivery of the remaining data.</tt> </tt> -<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send.</tt> </tt> -<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> -<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"><tt class="py-docstring"> @return: number of bytes actually sent.</tt> </tt> -<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data could be sent before the timeout set</tt> </tt> -<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"><tt class="py-docstring"> by L{settimeout}.</tt> </tt> -<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_send_window</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> -<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-comment"># eof or similar</tt> </tt> -<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-143', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-144', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-145" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.channel.MSG_CHANNEL_EXTENDED_DATA=paramiko.channel-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.client.MSG_CHANNEL_EXTENDED_DATA=paramiko.client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.common.MSG_CHANNEL_EXTENDED_DATA=paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.dsskey.MSG_CHANNEL_EXTENDED_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_EXTENDED_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.packet.MSG_CHANNEL_EXTENDED_DATA=paramiko.packet-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.pkey.MSG_CHANNEL_EXTENDED_DATA=paramiko.pkey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.rsakey.MSG_CHANNEL_EXTENDED_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.server.MSG_CHANNEL_EXTENDED_DATA=paramiko.server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.transport.MSG_CHANNEL_EXTENDED_DATA=paramiko.transport-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.util.MSG_CHANNEL_EXTENDED_DATA=paramiko.util-module.html#MSG_CHANNEL_EXTENDED_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA +paramiko.util.MSG_CHANNEL_DATA" class="py-name" href="#" onclick="return doclink('link-133', 'MSG_CHANNEL_DATA', 'link-133');">MSG_CHANNEL_DATA</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-134', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-135', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-comment"># Note: We release self.lock before calling _send_user_message.</tt> </tt> +<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-comment"># Otherwise, we can deadlock during re-keying.</tt> </tt> +<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-136', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> +</div><a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> </tt> +<a name="Channel.send_stderr"></a><div id="Channel.send_stderr-def"><a name="L704"></a><tt class="py-lineno"> 704</tt> <a class="py-toggle" href="#" id="Channel.send_stderr-toggle" onclick="return toggle('Channel.send_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#send_stderr">send_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.send_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.send_stderr-expanded"><a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel on the "stderr" stream. This is normally</tt> </tt> +<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-docstring"> only used by servers to send output from shell commands -- clients</tt> </tt> +<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-docstring"> won't use this. Returns the number of bytes sent, or 0 if the channel</tt> </tt> +<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"><tt class="py-docstring"> stream is closed. Applications are responsible for checking that all</tt> </tt> +<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"><tt class="py-docstring"> data has been sent: if only some of the data was transmitted, the</tt> </tt> +<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"><tt class="py-docstring"> application needs to attempt delivery of the remaining data.</tt> </tt> +<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send.</tt> </tt> +<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> +<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"><tt class="py-docstring"> @return: number of bytes actually sent.</tt> </tt> +<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if no data could be sent before the timeout set</tt> </tt> +<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"><tt class="py-docstring"> by L{settimeout}.</tt> </tt> +<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wait_for_send_window</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> +<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-comment"># eof or similar</tt> </tt> +<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-137', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-138', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-139" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.channel.MSG_CHANNEL_EXTENDED_DATA=paramiko.channel-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.client.MSG_CHANNEL_EXTENDED_DATA=paramiko.client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.common.MSG_CHANNEL_EXTENDED_DATA=paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.dsskey.MSG_CHANNEL_EXTENDED_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_EXTENDED_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.packet.MSG_CHANNEL_EXTENDED_DATA=paramiko.packet-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.pkey.MSG_CHANNEL_EXTENDED_DATA=paramiko.pkey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.rsakey.MSG_CHANNEL_EXTENDED_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.server.MSG_CHANNEL_EXTENDED_DATA=paramiko.server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.transport.MSG_CHANNEL_EXTENDED_DATA=paramiko.transport-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.util.MSG_CHANNEL_EXTENDED_DATA=paramiko.util-module.html#MSG_CHANNEL_EXTENDED_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA paramiko.channel.MSG_CHANNEL_EXTENDED_DATA paramiko.client.MSG_CHANNEL_EXTENDED_DATA paramiko.common.MSG_CHANNEL_EXTENDED_DATA @@ -1075,196 +1056,196 @@ paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA paramiko.transport.MSG_CHANNEL_EXTENDED_DATA -paramiko.util.MSG_CHANNEL_EXTENDED_DATA" class="py-name" href="#" onclick="return doclink('link-145', 'MSG_CHANNEL_EXTENDED_DATA', 'link-145');">MSG_CHANNEL_EXTENDED_DATA</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-146', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-147', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-148', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-comment"># Note: We release self.lock before calling _send_user_message.</tt> </tt> -<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># Otherwise, we can deadlock during re-keying.</tt> </tt> -<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-149', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> -</div><a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> </tt> -<a name="Channel.sendall"></a><div id="Channel.sendall-def"><a name="L743"></a><tt class="py-lineno"> 743</tt> <a class="py-toggle" href="#" id="Channel.sendall-toggle" onclick="return toggle('Channel.sendall');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#sendall">sendall</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.sendall-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.sendall-expanded"><a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel, without allowing partial results. Unlike</tt> </tt> -<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"><tt class="py-docstring"> L{send}, this method continues to send data from the given string until</tt> </tt> -<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"><tt class="py-docstring"> either all data has been sent or an error occurs. Nothing is returned.</tt> </tt> -<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send.</tt> </tt> -<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> -<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if sending stalled for longer than the timeout</tt> </tt> -<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"><tt class="py-docstring"> set by L{settimeout}.</tt> </tt> -<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if an error occured before the entire string was</tt> </tt> -<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"><tt class="py-docstring"> sent.</tt> </tt> -<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"><tt class="py-docstring"> @note: If the channel is closed while only part of the data hase been</tt> </tt> -<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> sent, there is no way to determine how much data (if any) was sent.</tt> </tt> -<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"> This is irritating, but identically follows python's API.</tt> </tt> -<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> -<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"> <tt class="py-comment"># this doesn't seem useful, but it is the documented behavior of Socket</tt> </tt> -<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-150', 'error', 'link-150');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Socket is closed'</tt><tt class="py-op">)</tt> </tt> -<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"> <tt class="py-name">sent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method paramiko.Channel.send()=paramiko.Channel-class.html#send,Method paramiko.win_pageant.PageantConnection.send()=paramiko.win_pageant.PageantConnection-class.html#send"><a title="paramiko.Channel.send -paramiko.win_pageant.PageantConnection.send" class="py-name" href="#" onclick="return doclink('link-151', 'send', 'link-151');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">sent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"> </tt> -<a name="Channel.sendall_stderr"></a><div id="Channel.sendall_stderr-def"><a name="L769"></a><tt class="py-lineno"> 769</tt> <a class="py-toggle" href="#" id="Channel.sendall_stderr-toggle" onclick="return toggle('Channel.sendall_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#sendall_stderr">sendall_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.sendall_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.sendall_stderr-expanded"><a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel's "stderr" stream, without allowing partial</tt> </tt> -<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"><tt class="py-docstring"> results. Unlike L{send_stderr}, this method continues to send data</tt> </tt> -<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"><tt class="py-docstring"> from the given string until all data has been sent or an error occurs.</tt> </tt> -<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"><tt class="py-docstring"> Nothing is returned.</tt> </tt> -<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send to the client as "stderr" output.</tt> </tt> -<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> -<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if sending stalled for longer than the timeout</tt> </tt> -<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"><tt class="py-docstring"> set by L{settimeout}.</tt> </tt> -<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if an error occured before the entire string was</tt> </tt> -<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"><tt class="py-docstring"> sent.</tt> </tt> -<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> -<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-152', 'error', 'link-150');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Socket is closed'</tt><tt class="py-op">)</tt> </tt> -<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"> <tt class="py-name">sent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method paramiko.Channel.send_stderr()=paramiko.Channel-class.html#send_stderr"><a title="paramiko.Channel.send_stderr" class="py-name" href="#" onclick="return doclink('link-153', 'send_stderr', 'link-153');">send_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">sent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"> </tt> -<a name="Channel.makefile"></a><div id="Channel.makefile-def"><a name="L793"></a><tt class="py-lineno"> 793</tt> <a class="py-toggle" href="#" id="Channel.makefile-toggle" onclick="return toggle('Channel.makefile');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#makefile">makefile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.makefile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.makefile-expanded"><a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"><tt class="py-docstring"> Return a file-like object associated with this channel. The optional</tt> </tt> -<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"><tt class="py-docstring"> C{mode} and C{bufsize} arguments are interpreted the same way as by</tt> </tt> -<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"><tt class="py-docstring"> the built-in C{file()} function in python.</tt> </tt> -<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"><tt class="py-docstring"> @return: object which can be used for python file I/O.</tt> </tt> -<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{ChannelFile}</tt> </tt> -<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ChannelFile</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> </tt> -<a name="Channel.makefile_stderr"></a><div id="Channel.makefile_stderr-def"><a name="L804"></a><tt class="py-lineno"> 804</tt> <a class="py-toggle" href="#" id="Channel.makefile_stderr-toggle" onclick="return toggle('Channel.makefile_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#makefile_stderr">makefile_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.makefile_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.makefile_stderr-expanded"><a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-docstring"> Return a file-like object associated with this channel's stderr</tt> </tt> -<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"> stream. Only channels using L{exec_command} or L{invoke_shell}</tt> </tt> -<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-docstring"> without a pty will ever have data on the stderr stream.</tt> </tt> -<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-docstring"> The optional C{mode} and C{bufsize} arguments are interpreted the</tt> </tt> -<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-docstring"> same way as by the built-in C{file()} function in python. For a</tt> </tt> -<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-docstring"> client, it only makes sense to open this file for reading. For a</tt> </tt> -<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-docstring"> server, it only makes sense to open this file for writing.</tt> </tt> -<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-docstring"> @return: object which can be used for python file I/O.</tt> </tt> -<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{ChannelFile}</tt> </tt> -<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-154" class="py-name" targets="Class paramiko.channel.ChannelStderrFile=paramiko.channel.ChannelStderrFile-class.html"><a title="paramiko.channel.ChannelStderrFile" class="py-name" href="#" onclick="return doclink('link-154', 'ChannelStderrFile', 'link-154');">ChannelStderrFile</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> </tt> -<a name="Channel.fileno"></a><div id="Channel.fileno-def"><a name="L822"></a><tt class="py-lineno"> 822</tt> <a class="py-toggle" href="#" id="Channel.fileno-toggle" onclick="return toggle('Channel.fileno');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#fileno">fileno</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.fileno-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.fileno-expanded"><a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"><tt class="py-docstring"> Returns an OS-level file descriptor which can be used for polling, but</tt> </tt> -<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"><tt class="py-docstring"> but I{not} for reading or writing. This is primaily to allow python's</tt> </tt> -<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-docstring"> C{select} module to work.</tt> </tt> -<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"><tt class="py-docstring"> The first time C{fileno} is called on a channel, a pipe is created to</tt> </tt> -<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"><tt class="py-docstring"> simulate real OS-level file descriptor (FD) behavior. Because of this,</tt> </tt> -<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"><tt class="py-docstring"> two OS-level FDs are created, which will use up FDs faster than normal.</tt> </tt> -<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-docstring"> (You won't notice this effect unless you have hundreds of channels</tt> </tt> -<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"> open at the same time.)</tt> </tt> -<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-docstring"> @return: an OS-level file descriptor</tt> </tt> -<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-docstring"> @warning: This method causes channel reads to be slightly less</tt> </tt> -<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-docstring"> efficient.</tt> </tt> -<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno +paramiko.util.MSG_CHANNEL_EXTENDED_DATA" class="py-name" href="#" onclick="return doclink('link-139', 'MSG_CHANNEL_EXTENDED_DATA', 'link-139');">MSG_CHANNEL_EXTENDED_DATA</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-140', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-141', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-142', 'add_string', 'link-33');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-comment"># Note: We release self.lock before calling _send_user_message.</tt> </tt> +<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-comment"># Otherwise, we can deadlock during re-keying.</tt> </tt> +<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-143', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> +</div><a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> </tt> +<a name="Channel.sendall"></a><div id="Channel.sendall-def"><a name="L742"></a><tt class="py-lineno"> 742</tt> <a class="py-toggle" href="#" id="Channel.sendall-toggle" onclick="return toggle('Channel.sendall');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#sendall">sendall</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.sendall-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.sendall-expanded"><a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel, without allowing partial results. Unlike</tt> </tt> +<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"><tt class="py-docstring"> L{send}, this method continues to send data from the given string until</tt> </tt> +<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"><tt class="py-docstring"> either all data has been sent or an error occurs. Nothing is returned.</tt> </tt> +<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send.</tt> </tt> +<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> +<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if sending stalled for longer than the timeout</tt> </tt> +<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"><tt class="py-docstring"> set by L{settimeout}.</tt> </tt> +<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if an error occured before the entire string was</tt> </tt> +<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"><tt class="py-docstring"> sent.</tt> </tt> +<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"><tt class="py-docstring"> @note: If the channel is closed while only part of the data hase been</tt> </tt> +<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"><tt class="py-docstring"> sent, there is no way to determine how much data (if any) was sent.</tt> </tt> +<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> This is irritating, but identically follows python's API.</tt> </tt> +<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> +<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"> <tt class="py-comment"># this doesn't seem useful, but it is the documented behavior of Socket</tt> </tt> +<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-144', 'error', 'link-144');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Socket is closed'</tt><tt class="py-op">)</tt> </tt> +<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"> <tt class="py-name">sent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method paramiko.Channel.send()=paramiko.Channel-class.html#send,Method paramiko.win_pageant.PageantConnection.send()=paramiko.win_pageant.PageantConnection-class.html#send"><a title="paramiko.Channel.send +paramiko.win_pageant.PageantConnection.send" class="py-name" href="#" onclick="return doclink('link-145', 'send', 'link-145');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">sent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"> </tt> +<a name="Channel.sendall_stderr"></a><div id="Channel.sendall_stderr-def"><a name="L768"></a><tt class="py-lineno"> 768</tt> <a class="py-toggle" href="#" id="Channel.sendall_stderr-toggle" onclick="return toggle('Channel.sendall_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#sendall_stderr">sendall_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.sendall_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.sendall_stderr-expanded"><a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"><tt class="py-docstring"> Send data to the channel's "stderr" stream, without allowing partial</tt> </tt> +<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"><tt class="py-docstring"> results. Unlike L{send_stderr}, this method continues to send data</tt> </tt> +<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"><tt class="py-docstring"> from the given string until all data has been sent or an error occurs.</tt> </tt> +<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"><tt class="py-docstring"> Nothing is returned.</tt> </tt> +<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"><tt class="py-docstring"> @param s: data to send to the client as "stderr" output.</tt> </tt> +<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"><tt class="py-docstring"> @type s: str</tt> </tt> +<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.timeout: if sending stalled for longer than the timeout</tt> </tt> +<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"><tt class="py-docstring"> set by L{settimeout}.</tt> </tt> +<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if an error occured before the entire string was</tt> </tt> +<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"><tt class="py-docstring"> sent.</tt> </tt> +<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> +<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-146', 'error', 'link-144');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">'Socket is closed'</tt><tt class="py-op">)</tt> </tt> +<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> <tt class="py-name">sent</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method paramiko.Channel.send_stderr()=paramiko.Channel-class.html#send_stderr"><a title="paramiko.Channel.send_stderr" class="py-name" href="#" onclick="return doclink('link-147', 'send_stderr', 'link-147');">send_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">sent</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> </tt> +<a name="Channel.makefile"></a><div id="Channel.makefile-def"><a name="L792"></a><tt class="py-lineno"> 792</tt> <a class="py-toggle" href="#" id="Channel.makefile-toggle" onclick="return toggle('Channel.makefile');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#makefile">makefile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.makefile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.makefile-expanded"><a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"><tt class="py-docstring"> Return a file-like object associated with this channel. The optional</tt> </tt> +<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"><tt class="py-docstring"> C{mode} and C{bufsize} arguments are interpreted the same way as by</tt> </tt> +<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"><tt class="py-docstring"> the built-in C{file()} function in python.</tt> </tt> +<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"><tt class="py-docstring"> @return: object which can be used for python file I/O.</tt> </tt> +<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{ChannelFile}</tt> </tt> +<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ChannelFile</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> </tt> +<a name="Channel.makefile_stderr"></a><div id="Channel.makefile_stderr-def"><a name="L803"></a><tt class="py-lineno"> 803</tt> <a class="py-toggle" href="#" id="Channel.makefile_stderr-toggle" onclick="return toggle('Channel.makefile_stderr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#makefile_stderr">makefile_stderr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.makefile_stderr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.makefile_stderr-expanded"><a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"><tt class="py-docstring"> Return a file-like object associated with this channel's stderr</tt> </tt> +<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-docstring"> stream. Only channels using L{exec_command} or L{invoke_shell}</tt> </tt> +<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"> without a pty will ever have data on the stderr stream.</tt> </tt> +<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"><tt class="py-docstring"> The optional C{mode} and C{bufsize} arguments are interpreted the</tt> </tt> +<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-docstring"> same way as by the built-in C{file()} function in python. For a</tt> </tt> +<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-docstring"> client, it only makes sense to open this file for reading. For a</tt> </tt> +<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-docstring"> server, it only makes sense to open this file for writing.</tt> </tt> +<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-docstring"> @return: object which can be used for python file I/O.</tt> </tt> +<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{ChannelFile}</tt> </tt> +<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-148" class="py-name" targets="Class paramiko.channel.ChannelStderrFile=paramiko.channel.ChannelStderrFile-class.html"><a title="paramiko.channel.ChannelStderrFile" class="py-name" href="#" onclick="return doclink('link-148', 'ChannelStderrFile', 'link-148');">ChannelStderrFile</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> </tt> +<a name="Channel.fileno"></a><div id="Channel.fileno-def"><a name="L821"></a><tt class="py-lineno"> 821</tt> <a class="py-toggle" href="#" id="Channel.fileno-toggle" onclick="return toggle('Channel.fileno');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#fileno">fileno</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.fileno-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.fileno-expanded"><a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"><tt class="py-docstring"> Returns an OS-level file descriptor which can be used for polling, but</tt> </tt> +<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"><tt class="py-docstring"> but I{not} for reading or writing. This is primaily to allow python's</tt> </tt> +<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"><tt class="py-docstring"> C{select} module to work.</tt> </tt> +<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"><tt class="py-docstring"> The first time C{fileno} is called on a channel, a pipe is created to</tt> </tt> +<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"><tt class="py-docstring"> simulate real OS-level file descriptor (FD) behavior. Because of this,</tt> </tt> +<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"><tt class="py-docstring"> two OS-level FDs are created, which will use up FDs faster than normal.</tt> </tt> +<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"><tt class="py-docstring"> (You won't notice this effect unless you have hundreds of channels</tt> </tt> +<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-docstring"> open at the same time.)</tt> </tt> +<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-docstring"> @return: an OS-level file descriptor</tt> </tt> +<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-docstring"> @warning: This method causes channel reads to be slightly less</tt> </tt> +<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-docstring"> efficient.</tt> </tt> +<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno paramiko.pipe.PosixPipe.fileno -paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-155', 'fileno', 'link-155');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-comment"># create the pipe and feed in any existing data</tt> </tt> -<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="paramiko.pipe" class="py-name" href="#" onclick="return doclink('link-156', 'pipe', 'link-18');">pipe</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Function paramiko.pipe.make_pipe()=paramiko.pipe-module.html#make_pipe"><a title="paramiko.pipe.make_pipe" class="py-name" href="#" onclick="return doclink('link-157', 'make_pipe', 'link-157');">make_pipe</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-name">p1</tt><tt class="py-op">,</tt> <tt class="py-name">p2</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="paramiko.pipe" class="py-name" href="#" onclick="return doclink('link-158', 'pipe', 'link-18');">pipe</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Function paramiko.pipe.make_or_pipe()=paramiko.pipe-module.html#make_or_pipe"><a title="paramiko.pipe.make_or_pipe" class="py-name" href="#" onclick="return doclink('link-159', 'make_or_pipe', 'link-159');">make_or_pipe</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">)</tt> </tt> -<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.set_event()=paramiko.buffered_pipe.BufferedPipe-class.html#set_event"><a title="paramiko.buffered_pipe.BufferedPipe.set_event" class="py-name" href="#" onclick="return doclink('link-160', 'set_event', 'link-160');">set_event</a></tt><tt class="py-op">(</tt><tt class="py-name">p1</tt><tt class="py-op">)</tt> </tt> -<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.set_event" class="py-name" href="#" onclick="return doclink('link-161', 'set_event', 'link-160');">set_event</a></tt><tt class="py-op">(</tt><tt class="py-name">p2</tt><tt class="py-op">)</tt> </tt> -<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.Channel.fileno +paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-149', 'fileno', 'link-149');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-comment"># create the pipe and feed in any existing data</tt> </tt> +<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="paramiko.pipe" class="py-name" href="#" onclick="return doclink('link-150', 'pipe', 'link-18');">pipe</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Function paramiko.pipe.make_pipe()=paramiko.pipe-module.html#make_pipe"><a title="paramiko.pipe.make_pipe" class="py-name" href="#" onclick="return doclink('link-151', 'make_pipe', 'link-151');">make_pipe</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt class="py-name">p1</tt><tt class="py-op">,</tt> <tt class="py-name">p2</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name"><a title="paramiko.pipe" class="py-name" href="#" onclick="return doclink('link-152', 'pipe', 'link-18');">pipe</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Function paramiko.pipe.make_or_pipe()=paramiko.pipe-module.html#make_or_pipe"><a title="paramiko.pipe.make_or_pipe" class="py-name" href="#" onclick="return doclink('link-153', 'make_or_pipe', 'link-153');">make_or_pipe</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">)</tt> </tt> +<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.set_event()=paramiko.buffered_pipe.BufferedPipe-class.html#set_event"><a title="paramiko.buffered_pipe.BufferedPipe.set_event" class="py-name" href="#" onclick="return doclink('link-154', 'set_event', 'link-154');">set_event</a></tt><tt class="py-op">(</tt><tt class="py-name">p1</tt><tt class="py-op">)</tt> </tt> +<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.set_event" class="py-name" href="#" onclick="return doclink('link-155', 'set_event', 'link-154');">set_event</a></tt><tt class="py-op">(</tt><tt class="py-name">p2</tt><tt class="py-op">)</tt> </tt> +<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.Channel.fileno paramiko.pipe.PosixPipe.fileno -paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-162', 'fileno', 'link-155');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> </tt> -<a name="Channel.shutdown"></a><div id="Channel.shutdown-def"><a name="L853"></a><tt class="py-lineno"> 853</tt> <a class="py-toggle" href="#" id="Channel.shutdown-toggle" onclick="return toggle('Channel.shutdown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown">shutdown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">how</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.shutdown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown-expanded"><a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"><tt class="py-docstring"> Shut down one or both halves of the connection. If C{how} is 0,</tt> </tt> -<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"><tt class="py-docstring"> further receives are disallowed. If C{how} is 1, further sends</tt> </tt> -<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-docstring"> are disallowed. If C{how} is 2, further sends and receives are</tt> </tt> -<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-docstring"> disallowed. This closes the stream in one or both directions.</tt> </tt> -<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-docstring"> @param how: 0 (stop receiving), 1 (stop sending), or 2 (stop</tt> </tt> -<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"><tt class="py-docstring"> receiving and sending).</tt> </tt> -<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"><tt class="py-docstring"> @type how: int</tt> </tt> -<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-comment"># feign "read" shutdown</tt> </tt> -<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_eof</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-163', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -</div><a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"> </tt> -<a name="Channel.shutdown_read"></a><div id="Channel.shutdown_read-def"><a name="L876"></a><tt class="py-lineno"> 876</tt> <a class="py-toggle" href="#" id="Channel.shutdown_read-toggle" onclick="return toggle('Channel.shutdown_read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown_read">shutdown_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.shutdown_read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown_read-expanded"><a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"> Shutdown the receiving side of this socket, closing the stream in</tt> </tt> -<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"> the incoming direction. After this call, future reads on this</tt> </tt> -<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> channel will fail instantly. This is a convenience method, equivalent</tt> </tt> -<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> to C{shutdown(0)}, for people who don't make it a habit to</tt> </tt> -<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> memorize unix constants from the 1970s.</tt> </tt> -<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Method paramiko.Channel.shutdown()=paramiko.Channel-class.html#shutdown"><a title="paramiko.Channel.shutdown" class="py-name" href="#" onclick="return doclink('link-164', 'shutdown', 'link-164');">shutdown</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -</div><a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> </tt> -<a name="Channel.shutdown_write"></a><div id="Channel.shutdown_write-def"><a name="L888"></a><tt class="py-lineno"> 888</tt> <a class="py-toggle" href="#" id="Channel.shutdown_write-toggle" onclick="return toggle('Channel.shutdown_write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown_write">shutdown_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel.shutdown_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown_write-expanded"><a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"><tt class="py-docstring"> Shutdown the sending side of this socket, closing the stream in</tt> </tt> -<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"><tt class="py-docstring"> the outgoing direction. After this call, future writes on this</tt> </tt> -<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"><tt class="py-docstring"> channel will fail instantly. This is a convenience method, equivalent</tt> </tt> -<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-docstring"> to C{shutdown(1)}, for people who don't make it a habit to</tt> </tt> -<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"><tt class="py-docstring"> memorize unix constants from the 1970s.</tt> </tt> -<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.Channel.shutdown" class="py-name" href="#" onclick="return doclink('link-165', 'shutdown', 'link-164');">shutdown</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -</div><a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> </tt> -<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"> </tt> -<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> <tt class="py-comment">### calls from Transport</tt> </tt> -<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"> </tt> -<a name="Channel._set_transport"></a><div id="Channel._set_transport-def"><a name="L904"></a><tt class="py-lineno"> 904</tt> <a class="py-toggle" href="#" id="Channel._set_transport-toggle" onclick="return toggle('Channel._set_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_transport">_set_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">transport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._set_transport-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_transport-expanded"><a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-166', 'transport', 'link-20');">transport</a></tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-167', 'transport', 'link-20');">transport</a></tt> </tt> -<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-168', 'logger', 'link-23');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-169', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-170', 'get_logger', 'link-25');">get_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-171', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Method paramiko.Transport.get_log_channel()=paramiko.Transport-class.html#get_log_channel"><a title="paramiko.Transport.get_log_channel" class="py-name" href="#" onclick="return doclink('link-172', 'get_log_channel', 'link-172');">get_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> </tt> -<a name="Channel._set_window"></a><div id="Channel._set_window-def"><a name="L908"></a><tt class="py-lineno"> 908</tt> <a class="py-toggle" href="#" id="Channel._set_window-toggle" onclick="return toggle('Channel._set_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_window">_set_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">window_size</tt><tt class="py-op">,</tt> <tt class="py-param">max_packet_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._set_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_window-expanded"><a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> </tt> -<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">max_packet_size</tt> </tt> -<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-comment"># threshold of bytes we receive before we bother to send a window update</tt> </tt> -<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_threshold</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> <tt class="py-op">//</tt> <tt class="py-number">10</tt> </tt> -<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-173" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG +paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-156', 'fileno', 'link-149');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> </tt> +<a name="Channel.shutdown"></a><div id="Channel.shutdown-def"><a name="L852"></a><tt class="py-lineno"> 852</tt> <a class="py-toggle" href="#" id="Channel.shutdown-toggle" onclick="return toggle('Channel.shutdown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown">shutdown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">how</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.shutdown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown-expanded"><a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"><tt class="py-docstring"> Shut down one or both halves of the connection. If C{how} is 0,</tt> </tt> +<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"><tt class="py-docstring"> further receives are disallowed. If C{how} is 1, further sends</tt> </tt> +<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"><tt class="py-docstring"> are disallowed. If C{how} is 2, further sends and receives are</tt> </tt> +<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-docstring"> disallowed. This closes the stream in one or both directions.</tt> </tt> +<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"> @param how: 0 (stop receiving), 1 (stop sending), or 2 (stop</tt> </tt> +<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-docstring"> receiving and sending).</tt> </tt> +<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"><tt class="py-docstring"> @type how: int</tt> </tt> +<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-comment"># feign "read" shutdown</tt> </tt> +<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> +<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">how</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_eof</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-157', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +</div><a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> </tt> +<a name="Channel.shutdown_read"></a><div id="Channel.shutdown_read-def"><a name="L875"></a><tt class="py-lineno"> 875</tt> <a class="py-toggle" href="#" id="Channel.shutdown_read-toggle" onclick="return toggle('Channel.shutdown_read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown_read">shutdown_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.shutdown_read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown_read-expanded"><a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"><tt class="py-docstring"> Shutdown the receiving side of this socket, closing the stream in</tt> </tt> +<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"> the incoming direction. After this call, future reads on this</tt> </tt> +<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"> channel will fail instantly. This is a convenience method, equivalent</tt> </tt> +<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> to C{shutdown(0)}, for people who don't make it a habit to</tt> </tt> +<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> memorize unix constants from the 1970s.</tt> </tt> +<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method paramiko.Channel.shutdown()=paramiko.Channel-class.html#shutdown"><a title="paramiko.Channel.shutdown" class="py-name" href="#" onclick="return doclink('link-158', 'shutdown', 'link-158');">shutdown</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +</div><a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> </tt> +<a name="Channel.shutdown_write"></a><div id="Channel.shutdown_write-def"><a name="L887"></a><tt class="py-lineno"> 887</tt> <a class="py-toggle" href="#" id="Channel.shutdown_write-toggle" onclick="return toggle('Channel.shutdown_write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#shutdown_write">shutdown_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel.shutdown_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel.shutdown_write-expanded"><a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"><tt class="py-docstring"> Shutdown the sending side of this socket, closing the stream in</tt> </tt> +<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"><tt class="py-docstring"> the outgoing direction. After this call, future writes on this</tt> </tt> +<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"><tt class="py-docstring"> channel will fail instantly. This is a convenience method, equivalent</tt> </tt> +<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"><tt class="py-docstring"> to C{shutdown(1)}, for people who don't make it a habit to</tt> </tt> +<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-docstring"> memorize unix constants from the 1970s.</tt> </tt> +<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="paramiko.Channel.shutdown" class="py-name" href="#" onclick="return doclink('link-159', 'shutdown', 'link-158');">shutdown</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +</div><a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> </tt> +<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> </tt> +<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"> <tt class="py-comment">### calls from Transport</tt> </tt> +<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> </tt> +<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> </tt> +<a name="Channel._set_transport"></a><div id="Channel._set_transport-def"><a name="L903"></a><tt class="py-lineno"> 903</tt> <a class="py-toggle" href="#" id="Channel._set_transport-toggle" onclick="return toggle('Channel._set_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_transport">_set_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">transport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._set_transport-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_transport-expanded"><a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-160', 'transport', 'link-20');">transport</a></tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-161', 'transport', 'link-20');">transport</a></tt> </tt> +<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-162', 'logger', 'link-23');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-163" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-163', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-164', 'get_logger', 'link-25');">get_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-165', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method paramiko.Transport.get_log_channel()=paramiko.Transport-class.html#get_log_channel"><a title="paramiko.Transport.get_log_channel" class="py-name" href="#" onclick="return doclink('link-166', 'get_log_channel', 'link-166');">get_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> </tt> +<a name="Channel._set_window"></a><div id="Channel._set_window-def"><a name="L907"></a><tt class="py-lineno"> 907</tt> <a class="py-toggle" href="#" id="Channel._set_window-toggle" onclick="return toggle('Channel._set_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_window">_set_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">window_size</tt><tt class="py-op">,</tt> <tt class="py-param">max_packet_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._set_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_window-expanded"><a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> </tt> +<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">max_packet_size</tt> </tt> +<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-comment"># threshold of bytes we receive before we bother to send a window update</tt> </tt> +<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_threshold</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> <tt class="py-op">//</tt> <tt class="py-number">10</tt> </tt> +<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-167" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1285,14 +1266,14 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-173', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Max packet in: %d bytes'</tt> <tt class="py-op">%</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -</div><a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"> </tt> -<a name="Channel._set_remote_channel"></a><div id="Channel._set_remote_channel-def"><a name="L916"></a><tt class="py-lineno"> 916</tt> <a class="py-toggle" href="#" id="Channel._set_remote_channel-toggle" onclick="return toggle('Channel._set_remote_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_remote_channel">_set_remote_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">,</tt> <tt class="py-param">window_size</tt><tt class="py-op">,</tt> <tt class="py-param">max_packet_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._set_remote_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_remote_channel-expanded"><a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">chanid</tt> </tt> -<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> </tt> -<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">,</tt> <tt id="link-174" class="py-name"><a title="paramiko.channel.MIN_PACKET_SIZE" class="py-name" href="#" onclick="return doclink('link-174', 'MIN_PACKET_SIZE', 'link-19');">MIN_PACKET_SIZE</a></tt><tt class="py-op">)</tt> </tt> -<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-167', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Max packet in: %d bytes'</tt> <tt class="py-op">%</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +</div><a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> </tt> +<a name="Channel._set_remote_channel"></a><div id="Channel._set_remote_channel-def"><a name="L915"></a><tt class="py-lineno"> 915</tt> <a class="py-toggle" href="#" id="Channel._set_remote_channel-toggle" onclick="return toggle('Channel._set_remote_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_remote_channel">_set_remote_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">,</tt> <tt class="py-param">window_size</tt><tt class="py-op">,</tt> <tt class="py-param">max_packet_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._set_remote_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_remote_channel-expanded"><a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">chanid</tt> </tt> +<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">window_size</tt> </tt> +<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">,</tt> <tt id="link-168" class="py-name"><a title="paramiko.channel.MIN_PACKET_SIZE" class="py-name" href="#" onclick="return doclink('link-168', 'MIN_PACKET_SIZE', 'link-19');">MIN_PACKET_SIZE</a></tt><tt class="py-op">)</tt> </tt> +<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> +<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-169" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1313,10 +1294,10 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-175', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Max packet out: %d bytes'</tt> <tt class="py-op">%</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -</div><a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> </tt> -<a name="Channel._request_success"></a><div id="Channel._request_success-def"><a name="L923"></a><tt class="py-lineno"> 923</tt> <a class="py-toggle" href="#" id="Channel._request_success-toggle" onclick="return toggle('Channel._request_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_request_success">_request_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._request_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._request_success-expanded"><a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-176" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-169', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Max packet out: %d bytes'</tt> <tt class="py-op">%</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +</div><a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> </tt> +<a name="Channel._request_success"></a><div id="Channel._request_success-def"><a name="L922"></a><tt class="py-lineno"> 922</tt> <a class="py-toggle" href="#" id="Channel._request_success-toggle" onclick="return toggle('Channel._request_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_request_success">_request_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._request_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._request_success-expanded"><a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-170" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1337,10 +1318,11 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-176', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Sesch channel %d request ok'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method paramiko.pipe.OrPipe.set()=paramiko.pipe.OrPipe-class.html#set,Method paramiko.pipe.PosixPipe.set()=paramiko.pipe.PosixPipe-class.html#set,Method paramiko.pipe.WindowsPipe.set()=paramiko.pipe.WindowsPipe-class.html#set"><a title="paramiko.pipe.OrPipe.set +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-170', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Sesch channel %d request ok'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method paramiko.pipe.OrPipe.set()=paramiko.pipe.OrPipe-class.html#set,Method paramiko.pipe.PosixPipe.set()=paramiko.pipe.PosixPipe-class.html#set,Method paramiko.pipe.WindowsPipe.set()=paramiko.pipe.WindowsPipe-class.html#set"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-177', 'set', 'link-177');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-171', 'set', 'link-171');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> </div><a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> </tt> <a name="Channel._request_failed"></a><div id="Channel._request_failed-def"><a name="L928"></a><tt class="py-lineno"> 928</tt> <a class="py-toggle" href="#" id="Channel._request_failed-toggle" onclick="return toggle('Channel._request_failed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_request_failed">_request_failed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -1351,21 +1333,21 @@ paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink( <a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msgs</tt><tt class="py-op">:</tt> </tt> <a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-178', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-172', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> </div><a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"> </tt> <a name="Channel._feed"></a><div id="Channel._feed-def"><a name="L938"></a><tt class="py-lineno"> 938</tt> <a class="py-toggle" href="#" id="Channel._feed-toggle" onclick="return toggle('Channel._feed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_feed">_feed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Channel._feed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._feed-expanded"><a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> <a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"> <tt class="py-comment"># passed from _feed_extended</tt> </tt> -<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt> +<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt> <a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-179', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.feed()=paramiko.buffered_pipe.BufferedPipe-class.html#feed"><a title="paramiko.buffered_pipe.BufferedPipe.feed" class="py-name" href="#" onclick="return doclink('link-180', 'feed', 'link-180');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-173', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method paramiko.buffered_pipe.BufferedPipe.feed()=paramiko.buffered_pipe.BufferedPipe-class.html#feed"><a title="paramiko.buffered_pipe.BufferedPipe.feed" class="py-name" href="#" onclick="return doclink('link-174', 'feed', 'link-174');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> </div><a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"> </tt> <a name="Channel._feed_extended"></a><div id="Channel._feed_extended-def"><a name="L946"></a><tt class="py-lineno"> 946</tt> <a class="py-toggle" href="#" id="Channel._feed_extended-toggle" onclick="return toggle('Channel._feed_extended');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_feed_extended">_feed_extended</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._feed_extended-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._feed_extended-expanded"><a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-181', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-182', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="Channel._feed_extended-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._feed_extended-expanded"><a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-175', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-176', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name" targets="Variable paramiko.auth_handler.ERROR=paramiko.auth_handler-module.html#ERROR,Variable paramiko.channel.ERROR=paramiko.channel-module.html#ERROR,Variable paramiko.client.ERROR=paramiko.client-module.html#ERROR,Variable paramiko.common.ERROR=paramiko.common-module.html#ERROR,Variable paramiko.dsskey.ERROR=paramiko.dsskey-module.html#ERROR,Variable paramiko.hostkeys.ERROR=paramiko.hostkeys-module.html#ERROR,Variable paramiko.kex_gex.ERROR=paramiko.kex_gex-module.html#ERROR,Variable paramiko.kex_group1.ERROR=paramiko.kex_group1-module.html#ERROR,Variable paramiko.logging22.ERROR=paramiko.logging22-module.html#ERROR,Variable paramiko.packet.ERROR=paramiko.packet-module.html#ERROR,Variable paramiko.pkey.ERROR=paramiko.pkey-module.html#ERROR,Variable paramiko.rsakey.ERROR=paramiko.rsakey-module.html#ERROR,Variable paramiko.server.ERROR=paramiko.server-module.html#ERROR,Variable paramiko.sftp.ERROR=paramiko.sftp-module.html#ERROR,Variable paramiko.sftp_attr.ERROR=paramiko.sftp_attr-module.html#ERROR,Variable paramiko.sftp_client.ERROR=paramiko.sftp_client-module.html#ERROR,Variable paramiko.sftp_file.ERROR=paramiko.sftp_file-module.html#ERROR,Variable paramiko.sftp_handle.ERROR=paramiko.sftp_handle-module.html#ERROR,Variable paramiko.sftp_server.ERROR=paramiko.sftp_server-module.html#ERROR,Variable paramiko.sftp_si.ERROR=paramiko.sftp_si-module.html#ERROR,Variable paramiko.transport.ERROR=paramiko.transport-module.html#ERROR,Variable paramiko.util.ERROR=paramiko.util-module.html#ERROR"><a title="paramiko.auth_handler.ERROR +<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-177" class="py-name" targets="Variable paramiko.auth_handler.ERROR=paramiko.auth_handler-module.html#ERROR,Variable paramiko.channel.ERROR=paramiko.channel-module.html#ERROR,Variable paramiko.client.ERROR=paramiko.client-module.html#ERROR,Variable paramiko.common.ERROR=paramiko.common-module.html#ERROR,Variable paramiko.dsskey.ERROR=paramiko.dsskey-module.html#ERROR,Variable paramiko.hostkeys.ERROR=paramiko.hostkeys-module.html#ERROR,Variable paramiko.kex_gex.ERROR=paramiko.kex_gex-module.html#ERROR,Variable paramiko.kex_group1.ERROR=paramiko.kex_group1-module.html#ERROR,Variable paramiko.logging22.ERROR=paramiko.logging22-module.html#ERROR,Variable paramiko.packet.ERROR=paramiko.packet-module.html#ERROR,Variable paramiko.pkey.ERROR=paramiko.pkey-module.html#ERROR,Variable paramiko.rsakey.ERROR=paramiko.rsakey-module.html#ERROR,Variable paramiko.server.ERROR=paramiko.server-module.html#ERROR,Variable paramiko.sftp.ERROR=paramiko.sftp-module.html#ERROR,Variable paramiko.sftp_attr.ERROR=paramiko.sftp_attr-module.html#ERROR,Variable paramiko.sftp_client.ERROR=paramiko.sftp_client-module.html#ERROR,Variable paramiko.sftp_file.ERROR=paramiko.sftp_file-module.html#ERROR,Variable paramiko.sftp_handle.ERROR=paramiko.sftp_handle-module.html#ERROR,Variable paramiko.sftp_server.ERROR=paramiko.sftp_server-module.html#ERROR,Variable paramiko.sftp_si.ERROR=paramiko.sftp_si-module.html#ERROR,Variable paramiko.transport.ERROR=paramiko.transport-module.html#ERROR,Variable paramiko.util.ERROR=paramiko.util-module.html#ERROR"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -1386,19 +1368,19 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-183', 'ERROR', 'link-183');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'unknown extended_data type %d; discarding'</tt> <tt class="py-op">%</tt> <tt class="py-name">code</tt><tt class="py-op">)</tt> </tt> +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-177', 'ERROR', 'link-177');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'unknown extended_data type %d; discarding'</tt> <tt class="py-op">%</tt> <tt class="py-name">code</tt><tt class="py-op">)</tt> </tt> <a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">combine_stderr</tt><tt class="py-op">:</tt> </tt> <a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_feed</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> <a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.feed" class="py-name" href="#" onclick="return doclink('link-184', 'feed', 'link-180');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="paramiko.buffered_pipe.BufferedPipe.feed" class="py-name" href="#" onclick="return doclink('link-178', 'feed', 'link-174');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> </div><a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"> </tt> <a name="Channel._window_adjust"></a><div id="Channel._window_adjust-def"><a name="L957"></a><tt class="py-lineno"> 957</tt> <a class="py-toggle" href="#" id="Channel._window_adjust-toggle" onclick="return toggle('Channel._window_adjust');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_window_adjust">_window_adjust</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._window_adjust-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._window_adjust-expanded"><a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"> <tt class="py-name">nbytes</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-185', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="Channel._window_adjust-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._window_adjust-expanded"><a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"> <tt class="py-name">nbytes</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-179', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> -<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-186" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1419,79 +1401,79 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-186', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'window up %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">nbytes</tt><tt class="py-op">)</tt> </tt> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-180', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'window up %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">nbytes</tt><tt class="py-op">)</tt> </tt> <a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">+=</tt> <tt class="py-name">nbytes</tt> </tt> <a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_buffer_cv</tt><tt class="py-op">.</tt><tt class="py-name">notifyAll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> <a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> </tt> <a name="Channel._handle_request"></a><div id="Channel._handle_request-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="Channel._handle_request-toggle" onclick="return toggle('Channel._handle_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_handle_request">_handle_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._handle_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._handle_request-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-187', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> <tt class="py-name">want_reply</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method paramiko.Message.get_boolean()=paramiko.Message-class.html#get_boolean"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-188', 'get_boolean', 'link-188');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"> <tt id="link-189" class="py-name" targets="Module paramiko.server=paramiko.server-module.html"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-189', 'server', 'link-189');">server</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-190', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> </tt> +</div><div id="Channel._handle_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._handle_request-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-181', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> <tt class="py-name">want_reply</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method paramiko.Message.get_boolean()=paramiko.Message-class.html#get_boolean"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-182', 'get_boolean', 'link-182');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"> <tt id="link-183" class="py-name" targets="Module paramiko.server=paramiko.server-module.html"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-183', 'server', 'link-183');">server</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-184', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> </tt> <a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'exit-status'</tt><tt class="py-op">:</tt> </tt> -<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-191', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="paramiko.pipe.OrPipe.set +<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exit_status</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-185', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-192', 'set', 'link-177');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-186', 'set', 'link-171');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'xon-xoff'</tt><tt class="py-op">:</tt> </tt> <a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"> <tt class="py-comment"># ignore</tt> </tt> -<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'pty-req'</tt><tt class="py-op">:</tt> </tt> -<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-193', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-194', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-195', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"> <tt class="py-name">pixelwidth</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-196', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-197', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> <tt class="py-name">modes</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-198', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-199" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-199', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt class="py-name">term</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-187', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-188', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-189', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"> <tt class="py-name">pixelwidth</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-190', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-191', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> <tt class="py-name">modes</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-192', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-193" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-193', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-200', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Method paramiko.ServerInterface.check_channel_pty_request()=paramiko.ServerInterface-class.html#check_channel_pty_request"><a title="paramiko.ServerInterface.check_channel_pty_request" class="py-name" href="#" onclick="return doclink('link-201', 'check_channel_pty_request', 'link-201');">check_channel_pty_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">term</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">,</tt> <tt class="py-name">pixelwidth</tt><tt class="py-op">,</tt> </tt> +<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-194', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Method paramiko.ServerInterface.check_channel_pty_request()=paramiko.ServerInterface-class.html#check_channel_pty_request"><a title="paramiko.ServerInterface.check_channel_pty_request" class="py-name" href="#" onclick="return doclink('link-195', 'check_channel_pty_request', 'link-195');">check_channel_pty_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">term</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">,</tt> <tt class="py-name">pixelwidth</tt><tt class="py-op">,</tt> </tt> <a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt><tt class="py-op">,</tt> <tt class="py-name">modes</tt><tt class="py-op">)</tt> </tt> <a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'shell'</tt><tt class="py-op">:</tt> </tt> -<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-202" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-202', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-196" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-196', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-203" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-203', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method paramiko.ServerInterface.check_channel_shell_request()=paramiko.ServerInterface-class.html#check_channel_shell_request"><a title="paramiko.ServerInterface.check_channel_shell_request" class="py-name" href="#" onclick="return doclink('link-204', 'check_channel_shell_request', 'link-204');">check_channel_shell_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-197', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name" targets="Method paramiko.ServerInterface.check_channel_shell_request()=paramiko.ServerInterface-class.html#check_channel_shell_request"><a title="paramiko.ServerInterface.check_channel_shell_request" class="py-name" href="#" onclick="return doclink('link-198', 'check_channel_shell_request', 'link-198');">check_channel_shell_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> <a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'exec'</tt><tt class="py-op">:</tt> </tt> -<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-205', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-206" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-206', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-199', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-200" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-200', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-207', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Method paramiko.ServerInterface.check_channel_exec_request()=paramiko.ServerInterface-class.html#check_channel_exec_request"><a title="paramiko.ServerInterface.check_channel_exec_request" class="py-name" href="#" onclick="return doclink('link-208', 'check_channel_exec_request', 'link-208');">check_channel_exec_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">cmd</tt><tt class="py-op">)</tt> </tt> +<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-201', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name" targets="Method paramiko.ServerInterface.check_channel_exec_request()=paramiko.ServerInterface-class.html#check_channel_exec_request"><a title="paramiko.ServerInterface.check_channel_exec_request" class="py-name" href="#" onclick="return doclink('link-202', 'check_channel_exec_request', 'link-202');">check_channel_exec_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">cmd</tt><tt class="py-op">)</tt> </tt> <a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'subsystem'</tt><tt class="py-op">:</tt> </tt> -<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"> <tt id="link-209" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-209', 'name', 'link-111');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-210', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-211" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-211', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"> <tt id="link-203" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-203', 'name', 'link-105');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-204', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-205" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-205', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-212', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Method paramiko.ServerInterface.check_channel_subsystem_request()=paramiko.ServerInterface-class.html#check_channel_subsystem_request"><a title="paramiko.ServerInterface.check_channel_subsystem_request" class="py-name" href="#" onclick="return doclink('link-213', 'check_channel_subsystem_request', 'link-213');">check_channel_subsystem_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-214" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-214', 'name', 'link-111');">name</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-206" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-206', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name" targets="Method paramiko.ServerInterface.check_channel_subsystem_request()=paramiko.ServerInterface-class.html#check_channel_subsystem_request"><a title="paramiko.ServerInterface.check_channel_subsystem_request" class="py-name" href="#" onclick="return doclink('link-207', 'check_channel_subsystem_request', 'link-207');">check_channel_subsystem_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-208" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-208', 'name', 'link-105');">name</a></tt><tt class="py-op">)</tt> </tt> <a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'window-change'</tt><tt class="py-op">:</tt> </tt> -<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-215', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-216', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-name">pixelwidth</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-217', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-218', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-219" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-219', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-209', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-210', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-name">pixelwidth</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-211', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-212', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-213" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-213', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-220', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Method paramiko.ServerInterface.check_channel_window_change_request()=paramiko.ServerInterface-class.html#check_channel_window_change_request"><a title="paramiko.ServerInterface.check_channel_window_change_request" class="py-name" href="#" onclick="return doclink('link-221', 'check_channel_window_change_request', 'link-221');">check_channel_window_change_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">,</tt> <tt class="py-name">pixelwidth</tt><tt class="py-op">,</tt> </tt> +<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-214', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Method paramiko.ServerInterface.check_channel_window_change_request()=paramiko.ServerInterface-class.html#check_channel_window_change_request"><a title="paramiko.ServerInterface.check_channel_window_change_request" class="py-name" href="#" onclick="return doclink('link-215', 'check_channel_window_change_request', 'link-215');">check_channel_window_change_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">,</tt> <tt class="py-name">pixelwidth</tt><tt class="py-op">,</tt> </tt> <a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"> <tt class="py-name">pixelheight</tt><tt class="py-op">)</tt> </tt> <a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11-req'</tt><tt class="py-op">:</tt> </tt> -<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-name">single_connection</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-222', 'get_boolean', 'link-188');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt class="py-name">auth_proto</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-223', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"> <tt class="py-name">auth_cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-224', 'get_string', 'link-179');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> <tt class="py-name">screen_number</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-225', 'get_int', 'link-181');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-226" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-226', 'server', 'link-189');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-name">single_connection</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-216', 'get_boolean', 'link-182');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt class="py-name">auth_proto</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-217', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"> <tt class="py-name">auth_cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-218', 'get_string', 'link-173');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> <tt class="py-name">screen_number</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-219', 'get_int', 'link-175');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-220" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-220', 'server', 'link-183');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-227" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-227', 'server', 'link-189');">server</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name" targets="Method paramiko.ServerInterface.check_channel_x11_request()=paramiko.ServerInterface-class.html#check_channel_x11_request"><a title="paramiko.ServerInterface.check_channel_x11_request" class="py-name" href="#" onclick="return doclink('link-228', 'check_channel_x11_request', 'link-228');">check_channel_x11_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">single_connection</tt><tt class="py-op">,</tt> </tt> +<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt id="link-221" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-221', 'server', 'link-183');">server</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name" targets="Method paramiko.ServerInterface.check_channel_x11_request()=paramiko.ServerInterface-class.html#check_channel_x11_request"><a title="paramiko.ServerInterface.check_channel_x11_request" class="py-name" href="#" onclick="return doclink('link-222', 'check_channel_x11_request', 'link-222');">check_channel_x11_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">single_connection</tt><tt class="py-op">,</tt> </tt> <a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"> <tt class="py-name">auth_proto</tt><tt class="py-op">,</tt> <tt class="py-name">auth_cookie</tt><tt class="py-op">,</tt> <tt class="py-name">screen_number</tt><tt class="py-op">)</tt> </tt> <a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-229" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1512,12 +1494,12 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-229', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unhandled channel request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-223', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unhandled channel request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> <a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">want_reply</tt><tt class="py-op">:</tt> </tt> -<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-230', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-224" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-224', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ok</tt><tt class="py-op">:</tt> </tt> -<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-231', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-232" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.client.MSG_CHANNEL_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.common.MSG_CHANNEL_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.server.MSG_CHANNEL_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.util.MSG_CHANNEL_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_SUCCESS +<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-225', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-226" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.client.MSG_CHANNEL_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.common.MSG_CHANNEL_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.server.MSG_CHANNEL_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.util.MSG_CHANNEL_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_SUCCESS paramiko.channel.MSG_CHANNEL_SUCCESS paramiko.client.MSG_CHANNEL_SUCCESS paramiko.common.MSG_CHANNEL_SUCCESS @@ -1537,9 +1519,9 @@ paramiko.sftp_handle.MSG_CHANNEL_SUCCESS paramiko.sftp_server.MSG_CHANNEL_SUCCESS paramiko.sftp_si.MSG_CHANNEL_SUCCESS paramiko.transport.MSG_CHANNEL_SUCCESS -paramiko.util.MSG_CHANNEL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-232', 'MSG_CHANNEL_SUCCESS', 'link-232');">MSG_CHANNEL_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +paramiko.util.MSG_CHANNEL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-226', 'MSG_CHANNEL_SUCCESS', 'link-226');">MSG_CHANNEL_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-233', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-234" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.channel.MSG_CHANNEL_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.client.MSG_CHANNEL_FAILURE=paramiko.client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.common.MSG_CHANNEL_FAILURE=paramiko.common-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.packet.MSG_CHANNEL_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.server.MSG_CHANNEL_FAILURE=paramiko.server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.transport.MSG_CHANNEL_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.util.MSG_CHANNEL_FAILURE=paramiko.util-module.html#MSG_CHANNEL_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_FAILURE +<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-227', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-228" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.channel.MSG_CHANNEL_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.client.MSG_CHANNEL_FAILURE=paramiko.client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.common.MSG_CHANNEL_FAILURE=paramiko.common-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.packet.MSG_CHANNEL_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.server.MSG_CHANNEL_FAILURE=paramiko.server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.transport.MSG_CHANNEL_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.util.MSG_CHANNEL_FAILURE=paramiko.util-module.html#MSG_CHANNEL_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_FAILURE paramiko.channel.MSG_CHANNEL_FAILURE paramiko.client.MSG_CHANNEL_FAILURE paramiko.common.MSG_CHANNEL_FAILURE @@ -1559,16 +1541,16 @@ paramiko.sftp_handle.MSG_CHANNEL_FAILURE paramiko.sftp_server.MSG_CHANNEL_FAILURE paramiko.sftp_si.MSG_CHANNEL_FAILURE paramiko.transport.MSG_CHANNEL_FAILURE -paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return doclink('link-234', 'MSG_CHANNEL_FAILURE', 'link-234');">MSG_CHANNEL_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-235', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-236', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return doclink('link-228', 'MSG_CHANNEL_FAILURE', 'link-228');">MSG_CHANNEL_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-229', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-230', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> </div><a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"> </tt> <a name="Channel._handle_eof"></a><div id="Channel._handle_eof-def"><a name="L1041"></a><tt class="py-lineno">1041</tt> <a class="py-toggle" href="#" id="Channel._handle_eof-toggle" onclick="return toggle('Channel._handle_eof');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_handle_eof">_handle_eof</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Channel._handle_eof-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._handle_eof-expanded"><a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt><tt class="py-op">:</tt> </tt> <a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="paramiko.Agent.close +<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1579,8 +1561,8 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-237', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="paramiko.Agent.close +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-231', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1591,13 +1573,13 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-238', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-232', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Method paramiko.pipe.PosixPipe.set_forever()=paramiko.pipe.PosixPipe-class.html#set_forever,Method paramiko.pipe.WindowsPipe.set_forever()=paramiko.pipe.WindowsPipe-class.html#set_forever"><a title="paramiko.pipe.PosixPipe.set_forever -paramiko.pipe.WindowsPipe.set_forever" class="py-name" href="#" onclick="return doclink('link-239', 'set_forever', 'link-239');">set_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Method paramiko.pipe.PosixPipe.set_forever()=paramiko.pipe.PosixPipe-class.html#set_forever,Method paramiko.pipe.WindowsPipe.set_forever()=paramiko.pipe.WindowsPipe-class.html#set_forever"><a title="paramiko.pipe.PosixPipe.set_forever +paramiko.pipe.WindowsPipe.set_forever" class="py-name" href="#" onclick="return doclink('link-233', 'set_forever', 'link-233');">set_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> <a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-240" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-234" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1618,42 +1600,47 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-240', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF received (%s)'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">)</tt> </tt> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-234', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF received (%s)'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">)</tt> </tt> </div><a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"> </tt> <a name="Channel._handle_close"></a><div id="Channel._handle_close-def"><a name="L1054"></a><tt class="py-lineno">1054</tt> <a class="py-toggle" href="#" id="Channel._handle_close-toggle" onclick="return toggle('Channel._handle_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_handle_close">_handle_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Channel._handle_close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._handle_close-expanded"><a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt class="py-name">msgs</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_close_internal</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-241', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_unlink_channel</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-235', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_unlink_channel</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> <a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> <a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msgs</tt><tt class="py-op">:</tt> </tt> <a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">m</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-242', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-236', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> </div><a name="L1064"></a><tt class="py-lineno">1064</tt> <tt class="py-line"> </tt> <a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> </tt> <a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"> </tt> <a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"> </tt> <a name="Channel._log"></a><div id="Channel._log-def"><a name="L1069"></a><tt class="py-lineno">1069</tt> <a class="py-toggle" href="#" id="Channel._log-toggle" onclick="return toggle('Channel._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._log-expanded"><a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-243', 'logger', 'link-23');">logger</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name" targets="Method paramiko.logging22.logger.log()=paramiko.logging22.logger-class.html#log"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-244', 'log', 'link-244');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-string">"[chan "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> <tt class="py-op">+</tt> <tt class="py-string">"] "</tt> <tt class="py-op">+</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt> +</div><div id="Channel._log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._log-expanded"><a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-237', 'logger', 'link-23');">logger</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Method paramiko.logging22.logger.log()=paramiko.logging22.logger-class.html#log"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-238', 'log', 'link-238');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-string">"[chan "</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt> <tt class="py-op">+</tt> <tt class="py-string">"] "</tt> <tt class="py-op">+</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt> </div><a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"> </tt> -<a name="Channel._wait_for_event"></a><div id="Channel._wait_for_event-def"><a name="L1072"></a><tt class="py-lineno">1072</tt> <a class="py-toggle" href="#" id="Channel._wait_for_event-toggle" onclick="return toggle('Channel._wait_for_event');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_wait_for_event">_wait_for_event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._wait_for_event-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._wait_for_event-expanded"><a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-245', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-246" class="py-name" targets="Method paramiko.Transport.get_exception()=paramiko.Transport-class.html#get_exception"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-246', 'get_exception', 'link-246');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-247', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel closed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> </tt> -<a name="Channel._set_closed"></a><div id="Channel._set_closed-def"><a name="L1084"></a><tt class="py-lineno">1084</tt> <a class="py-toggle" href="#" id="Channel._set_closed-toggle" onclick="return toggle('Channel._set_closed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_closed">_set_closed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._set_closed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_closed-expanded"><a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> -<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="paramiko.Agent.close +<a name="Channel._event_pending"></a><div id="Channel._event_pending-def"><a name="L1072"></a><tt class="py-lineno">1072</tt> <a class="py-toggle" href="#" id="Channel._event_pending-toggle" onclick="return toggle('Channel._event_pending');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_event_pending">_event_pending</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._event_pending-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._event_pending-expanded"><a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Method paramiko.HostKeys.clear()=paramiko.HostKeys-class.html#clear,Method paramiko.pipe.OrPipe.clear()=paramiko.pipe.OrPipe-class.html#clear,Method paramiko.pipe.PosixPipe.clear()=paramiko.pipe.PosixPipe-class.html#clear,Method paramiko.pipe.WindowsPipe.clear()=paramiko.pipe.WindowsPipe-class.html#clear"><a title="paramiko.HostKeys.clear +paramiko.pipe.OrPipe.clear +paramiko.pipe.PosixPipe.clear +paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-239', 'clear', 'link-239');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +</div><a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> </tt> +<a name="Channel._wait_for_event"></a><div id="Channel._wait_for_event-def"><a name="L1076"></a><tt class="py-lineno">1076</tt> <a class="py-toggle" href="#" id="Channel._wait_for_event-toggle" onclick="return toggle('Channel._wait_for_event');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_wait_for_event">_wait_for_event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._wait_for_event-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._wait_for_event-expanded"><a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event_ready</tt><tt class="py-op">:</tt> </tt> +<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-240', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Method paramiko.Transport.get_exception()=paramiko.Transport-class.html#get_exception"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-241', 'get_exception', 'link-241');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-242" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-242', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Channel closed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +</div><a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> </tt> +<a name="Channel._set_closed"></a><div id="Channel._set_closed-def"><a name="L1086"></a><tt class="py-lineno">1086</tt> <a class="py-toggle" href="#" id="Channel._set_closed-toggle" onclick="return toggle('Channel._set_closed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_set_closed">_set_closed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._set_closed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._set_closed-expanded"><a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> +<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_buffer</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1664,8 +1651,8 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-248', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="paramiko.Agent.close +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-243', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_stderr_buffer</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1676,18 +1663,25 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-249', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_buffer_cv</tt><tt class="py-op">.</tt><tt class="py-name">notifyAll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="paramiko.pipe.PosixPipe.set_forever -paramiko.pipe.WindowsPipe.set_forever" class="py-name" href="#" onclick="return doclink('link-250', 'set_forever', 'link-239');">set_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"> </tt> -<a name="Channel._send_eof"></a><div id="Channel._send_eof-def"><a name="L1093"></a><tt class="py-lineno">1093</tt> <a class="py-toggle" href="#" id="Channel._send_eof-toggle" onclick="return toggle('Channel._send_eof');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_send_eof">_send_eof</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._send_eof-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._send_eof-expanded"><a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> -<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-251" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-251', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-252', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-253" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EOF=paramiko.auth_handler-module.html#MSG_CHANNEL_EOF,Variable paramiko.channel.MSG_CHANNEL_EOF=paramiko.channel-module.html#MSG_CHANNEL_EOF,Variable paramiko.client.MSG_CHANNEL_EOF=paramiko.client-module.html#MSG_CHANNEL_EOF,Variable paramiko.common.MSG_CHANNEL_EOF=paramiko.common-module.html#MSG_CHANNEL_EOF,Variable paramiko.dsskey.MSG_CHANNEL_EOF=paramiko.dsskey-module.html#MSG_CHANNEL_EOF,Variable paramiko.hostkeys.MSG_CHANNEL_EOF=paramiko.hostkeys-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_gex.MSG_CHANNEL_EOF=paramiko.kex_gex-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_group1.MSG_CHANNEL_EOF=paramiko.kex_group1-module.html#MSG_CHANNEL_EOF,Variable paramiko.packet.MSG_CHANNEL_EOF=paramiko.packet-module.html#MSG_CHANNEL_EOF,Variable paramiko.pkey.MSG_CHANNEL_EOF=paramiko.pkey-module.html#MSG_CHANNEL_EOF,Variable paramiko.rsakey.MSG_CHANNEL_EOF=paramiko.rsakey-module.html#MSG_CHANNEL_EOF,Variable paramiko.server.MSG_CHANNEL_EOF=paramiko.server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp.MSG_CHANNEL_EOF=paramiko.sftp-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_attr.MSG_CHANNEL_EOF=paramiko.sftp_attr-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_client.MSG_CHANNEL_EOF=paramiko.sftp_client-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_file.MSG_CHANNEL_EOF=paramiko.sftp_file-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_handle.MSG_CHANNEL_EOF=paramiko.sftp_handle-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_server.MSG_CHANNEL_EOF=paramiko.sftp_server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_si.MSG_CHANNEL_EOF=paramiko.sftp_si-module.html#MSG_CHANNEL_EOF,Variable paramiko.transport.MSG_CHANNEL_EOF=paramiko.transport-module.html#MSG_CHANNEL_EOF,Variable paramiko.util.MSG_CHANNEL_EOF=paramiko.util-module.html#MSG_CHANNEL_EOF"><a title="paramiko.auth_handler.MSG_CHANNEL_EOF +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-244', 'close', 'link-26');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_buffer_cv</tt><tt class="py-op">.</tt><tt class="py-name">notifyAll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"> <tt class="py-comment"># Notify any waiters that we are closed</tt> </tt> +<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.pipe.PosixPipe.set +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-245', 'set', 'link-171');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_event</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.pipe.PosixPipe.set +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-246', 'set', 'link-171');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pipe</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="paramiko.pipe.PosixPipe.set_forever +paramiko.pipe.WindowsPipe.set_forever" class="py-name" href="#" onclick="return doclink('link-247', 'set_forever', 'link-233');">set_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> </tt> +<a name="Channel._send_eof"></a><div id="Channel._send_eof-def"><a name="L1098"></a><tt class="py-lineno">1098</tt> <a class="py-toggle" href="#" id="Channel._send_eof-toggle" onclick="return toggle('Channel._send_eof');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_send_eof">_send_eof</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._send_eof-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._send_eof-expanded"><a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> +<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-248" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-248', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-249', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-250" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EOF=paramiko.auth_handler-module.html#MSG_CHANNEL_EOF,Variable paramiko.channel.MSG_CHANNEL_EOF=paramiko.channel-module.html#MSG_CHANNEL_EOF,Variable paramiko.client.MSG_CHANNEL_EOF=paramiko.client-module.html#MSG_CHANNEL_EOF,Variable paramiko.common.MSG_CHANNEL_EOF=paramiko.common-module.html#MSG_CHANNEL_EOF,Variable paramiko.dsskey.MSG_CHANNEL_EOF=paramiko.dsskey-module.html#MSG_CHANNEL_EOF,Variable paramiko.hostkeys.MSG_CHANNEL_EOF=paramiko.hostkeys-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_gex.MSG_CHANNEL_EOF=paramiko.kex_gex-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_group1.MSG_CHANNEL_EOF=paramiko.kex_group1-module.html#MSG_CHANNEL_EOF,Variable paramiko.packet.MSG_CHANNEL_EOF=paramiko.packet-module.html#MSG_CHANNEL_EOF,Variable paramiko.pkey.MSG_CHANNEL_EOF=paramiko.pkey-module.html#MSG_CHANNEL_EOF,Variable paramiko.rsakey.MSG_CHANNEL_EOF=paramiko.rsakey-module.html#MSG_CHANNEL_EOF,Variable paramiko.server.MSG_CHANNEL_EOF=paramiko.server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp.MSG_CHANNEL_EOF=paramiko.sftp-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_attr.MSG_CHANNEL_EOF=paramiko.sftp_attr-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_client.MSG_CHANNEL_EOF=paramiko.sftp_client-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_file.MSG_CHANNEL_EOF=paramiko.sftp_file-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_handle.MSG_CHANNEL_EOF=paramiko.sftp_handle-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_server.MSG_CHANNEL_EOF=paramiko.sftp_server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_si.MSG_CHANNEL_EOF=paramiko.sftp_si-module.html#MSG_CHANNEL_EOF,Variable paramiko.transport.MSG_CHANNEL_EOF=paramiko.transport-module.html#MSG_CHANNEL_EOF,Variable paramiko.util.MSG_CHANNEL_EOF=paramiko.util-module.html#MSG_CHANNEL_EOF"><a title="paramiko.auth_handler.MSG_CHANNEL_EOF paramiko.channel.MSG_CHANNEL_EOF paramiko.client.MSG_CHANNEL_EOF paramiko.common.MSG_CHANNEL_EOF @@ -1707,10 +1701,10 @@ paramiko.sftp_handle.MSG_CHANNEL_EOF paramiko.sftp_server.MSG_CHANNEL_EOF paramiko.sftp_si.MSG_CHANNEL_EOF paramiko.transport.MSG_CHANNEL_EOF -paramiko.util.MSG_CHANNEL_EOF" class="py-name" href="#" onclick="return doclink('link-253', 'MSG_CHANNEL_EOF', 'link-253');">MSG_CHANNEL_EOF</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-254', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-255" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_CHANNEL_EOF" class="py-name" href="#" onclick="return doclink('link-250', 'MSG_CHANNEL_EOF', 'link-250');">MSG_CHANNEL_EOF</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-251', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-252" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1731,16 +1725,16 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-255', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF sent (%s)'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">)</tt> </tt> -<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt> </tt> -</div><a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> </tt> -<a name="Channel._close_internal"></a><div id="Channel._close_internal-def"><a name="L1104"></a><tt class="py-lineno">1104</tt> <a class="py-toggle" href="#" id="Channel._close_internal-toggle" onclick="return toggle('Channel._close_internal');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_close_internal">_close_internal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._close_internal-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._close_internal-expanded"><a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> -<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt> -<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt class="py-name">m1</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_eof</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> <tt class="py-name">m2</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-256', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-257', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-258" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_CLOSE=paramiko.auth_handler-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.channel.MSG_CHANNEL_CLOSE=paramiko.channel-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.client.MSG_CHANNEL_CLOSE=paramiko.client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.common.MSG_CHANNEL_CLOSE=paramiko.common-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.dsskey.MSG_CHANNEL_CLOSE=paramiko.dsskey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.hostkeys.MSG_CHANNEL_CLOSE=paramiko.hostkeys-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_gex.MSG_CHANNEL_CLOSE=paramiko.kex_gex-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_group1.MSG_CHANNEL_CLOSE=paramiko.kex_group1-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.packet.MSG_CHANNEL_CLOSE=paramiko.packet-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.pkey.MSG_CHANNEL_CLOSE=paramiko.pkey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.rsakey.MSG_CHANNEL_CLOSE=paramiko.rsakey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.server.MSG_CHANNEL_CLOSE=paramiko.server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp.MSG_CHANNEL_CLOSE=paramiko.sftp-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_attr.MSG_CHANNEL_CLOSE=paramiko.sftp_attr-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_client.MSG_CHANNEL_CLOSE=paramiko.sftp_client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_file.MSG_CHANNEL_CLOSE=paramiko.sftp_file-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_handle.MSG_CHANNEL_CLOSE=paramiko.sftp_handle-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_server.MSG_CHANNEL_CLOSE=paramiko.sftp_server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_si.MSG_CHANNEL_CLOSE=paramiko.sftp_si-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.transport.MSG_CHANNEL_CLOSE=paramiko.transport-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.util.MSG_CHANNEL_CLOSE=paramiko.util-module.html#MSG_CHANNEL_CLOSE"><a title="paramiko.auth_handler.MSG_CHANNEL_CLOSE +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-252', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF sent (%s)'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">)</tt> </tt> +<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt> </tt> +</div><a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> </tt> +<a name="Channel._close_internal"></a><div id="Channel._close_internal-def"><a name="L1109"></a><tt class="py-lineno">1109</tt> <a class="py-toggle" href="#" id="Channel._close_internal-toggle" onclick="return toggle('Channel._close_internal');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_close_internal">_close_internal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._close_internal-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._close_internal-expanded"><a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> <tt class="py-comment"># you are holding the lock.</tt> </tt> +<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> </tt> +<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"> <tt class="py-name">m1</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_eof</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"> <tt class="py-name">m2</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-253', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-254', 'add_byte', 'link-30');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-255" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_CLOSE=paramiko.auth_handler-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.channel.MSG_CHANNEL_CLOSE=paramiko.channel-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.client.MSG_CHANNEL_CLOSE=paramiko.client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.common.MSG_CHANNEL_CLOSE=paramiko.common-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.dsskey.MSG_CHANNEL_CLOSE=paramiko.dsskey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.hostkeys.MSG_CHANNEL_CLOSE=paramiko.hostkeys-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_gex.MSG_CHANNEL_CLOSE=paramiko.kex_gex-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_group1.MSG_CHANNEL_CLOSE=paramiko.kex_group1-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.packet.MSG_CHANNEL_CLOSE=paramiko.packet-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.pkey.MSG_CHANNEL_CLOSE=paramiko.pkey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.rsakey.MSG_CHANNEL_CLOSE=paramiko.rsakey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.server.MSG_CHANNEL_CLOSE=paramiko.server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp.MSG_CHANNEL_CLOSE=paramiko.sftp-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_attr.MSG_CHANNEL_CLOSE=paramiko.sftp_attr-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_client.MSG_CHANNEL_CLOSE=paramiko.sftp_client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_file.MSG_CHANNEL_CLOSE=paramiko.sftp_file-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_handle.MSG_CHANNEL_CLOSE=paramiko.sftp_handle-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_server.MSG_CHANNEL_CLOSE=paramiko.sftp_server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_si.MSG_CHANNEL_CLOSE=paramiko.sftp_si-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.transport.MSG_CHANNEL_CLOSE=paramiko.transport-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.util.MSG_CHANNEL_CLOSE=paramiko.util-module.html#MSG_CHANNEL_CLOSE"><a title="paramiko.auth_handler.MSG_CHANNEL_CLOSE paramiko.channel.MSG_CHANNEL_CLOSE paramiko.client.MSG_CHANNEL_CLOSE paramiko.common.MSG_CHANNEL_CLOSE @@ -1760,31 +1754,31 @@ paramiko.sftp_handle.MSG_CHANNEL_CLOSE paramiko.sftp_server.MSG_CHANNEL_CLOSE paramiko.sftp_si.MSG_CHANNEL_CLOSE paramiko.transport.MSG_CHANNEL_CLOSE -paramiko.util.MSG_CHANNEL_CLOSE" class="py-name" href="#" onclick="return doclink('link-258', 'MSG_CHANNEL_CLOSE', 'link-258');">MSG_CHANNEL_CLOSE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-259', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_closed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"> <tt class="py-comment"># can't unlink from the Transport yet -- the remote side may still</tt> </tt> -<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># try to send meta-data (exit-status, etc)</tt> </tt> -<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">m1</tt><tt class="py-op">,</tt> <tt class="py-name">m2</tt> </tt> -</div><a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"> </tt> -<a name="Channel._unlink"></a><div id="Channel._unlink-def"><a name="L1117"></a><tt class="py-lineno">1117</tt> <a class="py-toggle" href="#" id="Channel._unlink-toggle" onclick="return toggle('Channel._unlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_unlink">_unlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._unlink-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._unlink-expanded"><a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-comment"># server connection could die before we become active: still signal the close!</tt> </tt> -<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> -<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_closed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-260', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_unlink_channel</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"> </tt> -<a name="Channel._check_add_window"></a><div id="Channel._check_add_window-def"><a name="L1128"></a><tt class="py-lineno">1128</tt> <a class="py-toggle" href="#" id="Channel._check_add_window-toggle" onclick="return toggle('Channel._check_add_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_check_add_window">_check_add_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._check_add_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._check_add_window-expanded"><a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> -<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-261" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_CHANNEL_CLOSE" class="py-name" href="#" onclick="return doclink('link-255', 'MSG_CHANNEL_CLOSE', 'link-255');">MSG_CHANNEL_CLOSE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-256', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_closed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-comment"># can't unlink from the Transport yet -- the remote side may still</tt> </tt> +<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"> <tt class="py-comment"># try to send meta-data (exit-status, etc)</tt> </tt> +<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m1</tt><tt class="py-op">,</tt> <tt class="py-name">m2</tt> </tt> +</div><a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> </tt> +<a name="Channel._unlink"></a><div id="Channel._unlink-def"><a name="L1122"></a><tt class="py-lineno">1122</tt> <a class="py-toggle" href="#" id="Channel._unlink-toggle" onclick="return toggle('Channel._unlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_unlink">_unlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._unlink-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._unlink-expanded"><a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"> <tt class="py-comment"># server connection could die before we become active: still signal the close!</tt> </tt> +<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt><tt class="py-op">:</tt> </tt> +<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_closed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-257', 'transport', 'link-20');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_unlink_channel</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"> </tt> +<a name="Channel._check_add_window"></a><div id="Channel._check_add_window-def"><a name="L1133"></a><tt class="py-lineno">1133</tt> <a class="py-toggle" href="#" id="Channel._check_add_window-toggle" onclick="return toggle('Channel._check_add_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_check_add_window">_check_add_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._check_add_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._check_add_window-expanded"><a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_received</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> +<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-258" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1805,12 +1799,12 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-261', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'addwindow %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> -<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">+=</tt> <tt class="py-name">n</tt> </tt> -<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_threshold</tt><tt class="py-op">:</tt> </tt> -<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> -<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-262" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-258', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'addwindow %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> +<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">+=</tt> <tt class="py-name">n</tt> </tt> +<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_threshold</tt><tt class="py-op">:</tt> </tt> +<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> +<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-259" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1831,49 +1825,49 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-262', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'addwindow send %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt><tt class="py-op">)</tt> </tt> -<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> </tt> -<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> </tt> -<a name="Channel._wait_for_send_window"></a><div id="Channel._wait_for_send_window-def"><a name="L1146"></a><tt class="py-lineno">1146</tt> <a class="py-toggle" href="#" id="Channel._wait_for_send_window-toggle" onclick="return toggle('Channel._wait_for_send_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_wait_for_send_window">_wait_for_send_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Channel._wait_for_send_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._wait_for_send_window-expanded"><a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"><tt class="py-docstring"> (You are already holding the lock.)</tt> </tt> -<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"><tt class="py-docstring"> Wait for the send window to open up, and allocate up to C{size} bytes</tt> </tt> -<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"><tt class="py-docstring"> for transmission. If no space opens up before the timeout, a timeout</tt> </tt> -<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"><tt class="py-docstring"> exception is raised. Returns the number of bytes available to send</tt> </tt> -<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"><tt class="py-docstring"> (may be less than requested).</tt> </tt> -<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> <tt class="py-comment"># you are already holding the lock</tt> </tt> -<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"> <tt class="py-comment"># should we block?</tt> </tt> -<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> -<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-comment"># loop here in case we get woken up but a different thread has filled the buffer</tt> </tt> -<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> </tt> -<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-name">then</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_buffer_cv</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">-=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">then</tt> </tt> -<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op"><=</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> -<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-comment"># we have some window to squeeze into</tt> </tt> -<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> -<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op"><</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> -<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> </tt> -<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">-</tt> <tt class="py-number">64</tt> <tt class="py-op"><</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> -<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">-</tt> <tt class="py-number">64</tt> </tt> -<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">-=</tt> <tt class="py-name">size</tt> </tt> -<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> -<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-263" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-259', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'addwindow send %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt><tt class="py-op">)</tt> </tt> +<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> </tt> +<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_window_sofar</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> </tt> +<a name="Channel._wait_for_send_window"></a><div id="Channel._wait_for_send_window-def"><a name="L1151"></a><tt class="py-lineno">1151</tt> <a class="py-toggle" href="#" id="Channel._wait_for_send_window-toggle" onclick="return toggle('Channel._wait_for_send_window');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.Channel-class.html#_wait_for_send_window">_wait_for_send_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Channel._wait_for_send_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Channel._wait_for_send_window-expanded"><a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"><tt class="py-docstring"> (You are already holding the lock.)</tt> </tt> +<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"><tt class="py-docstring"> Wait for the send window to open up, and allocate up to C{size} bytes</tt> </tt> +<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"><tt class="py-docstring"> for transmission. If no space opens up before the timeout, a timeout</tt> </tt> +<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"><tt class="py-docstring"> exception is raised. Returns the number of bytes available to send</tt> </tt> +<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"><tt class="py-docstring"> (may be less than requested).</tt> </tt> +<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt class="py-comment"># you are already holding the lock</tt> </tt> +<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-comment"># should we block?</tt> </tt> +<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> +<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-comment"># loop here in case we get woken up but a different thread has filled the buffer</tt> </tt> +<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt> </tt> +<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-name">then</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_buffer_cv</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">-=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">then</tt> </tt> +<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op"><=</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt> +<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">timeout</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"> <tt class="py-comment"># we have some window to squeeze into</tt> </tt> +<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">closed</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eof_sent</tt><tt class="py-op">:</tt> </tt> +<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> +<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op"><</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> +<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> </tt> +<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">-</tt> <tt class="py-number">64</tt> <tt class="py-op"><</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> +<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_max_packet_size</tt> <tt class="py-op">-</tt> <tt class="py-number">64</tt> </tt> +<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt> <tt class="py-op">-=</tt> <tt class="py-name">size</tt> </tt> +<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> +<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-260" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1894,24 +1888,24 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-263', 'DEBUG', 'link-173');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'window down to %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> -</div></div><a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"> </tt> -<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> </tt> -<a name="ChannelFile"></a><div id="ChannelFile-def"><a name="L1185"></a><tt class="py-lineno">1185</tt> <a class="py-toggle" href="#" id="ChannelFile-toggle" onclick="return toggle('ChannelFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html">ChannelFile</a> <tt class="py-op">(</tt><tt class="py-base-class">BufferedFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelFile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelFile-expanded"><a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"><tt class="py-docstring"> A file-like wrapper around L{Channel}. A ChannelFile is created by calling</tt> </tt> -<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel.makefile}.</tt> </tt> -<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"><tt class="py-docstring"> @bug: To correctly emulate the file object created from a socket's</tt> </tt> -<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-docstring"> C{makefile} method, a L{Channel} and its C{ChannelFile} should be able</tt> </tt> -<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-docstring"> to be closed or garbage-collected independently. Currently, closing</tt> </tt> -<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-docstring"> the C{ChannelFile} does nothing but flush the buffer.</tt> </tt> -<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"> </tt> -<a name="ChannelFile.__init__"></a><div id="ChannelFile.__init__-def"><a name="L1196"></a><tt class="py-lineno">1196</tt> <a class="py-toggle" href="#" id="ChannelFile.__init__-toggle" onclick="return toggle('ChannelFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelFile.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile.__init__-expanded"><a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Module paramiko.channel=paramiko.channel-module.html"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-264', 'channel', 'link-264');">channel</a></tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-265', 'channel', 'link-264');">channel</a></tt> </tt> -<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"> <tt id="link-266" class="py-name"><a title="paramiko.BufferedFile" class="py-name" href="#" onclick="return doclink('link-266', 'BufferedFile', 'link-12');">BufferedFile</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-260', 'DEBUG', 'link-167');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'window down to %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">out_window_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">size</tt> </tt> +</div></div><a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"> </tt> +<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"> </tt> +<a name="ChannelFile"></a><div id="ChannelFile-def"><a name="L1190"></a><tt class="py-lineno">1190</tt> <a class="py-toggle" href="#" id="ChannelFile-toggle" onclick="return toggle('ChannelFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html">ChannelFile</a> <tt class="py-op">(</tt><tt class="py-base-class">BufferedFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelFile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelFile-expanded"><a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-docstring"> A file-like wrapper around L{Channel}. A ChannelFile is created by calling</tt> </tt> +<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel.makefile}.</tt> </tt> +<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-docstring"> @bug: To correctly emulate the file object created from a socket's</tt> </tt> +<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-docstring"> C{makefile} method, a L{Channel} and its C{ChannelFile} should be able</tt> </tt> +<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-docstring"> to be closed or garbage-collected independently. Currently, closing</tt> </tt> +<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-docstring"> the C{ChannelFile} does nothing but flush the buffer.</tt> </tt> +<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"> </tt> +<a name="ChannelFile.__init__"></a><div id="ChannelFile.__init__-def"><a name="L1201"></a><tt class="py-lineno">1201</tt> <a class="py-toggle" href="#" id="ChannelFile.__init__-toggle" onclick="return toggle('ChannelFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelFile.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile.__init__-expanded"><a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name" targets="Module paramiko.channel=paramiko.channel-module.html"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-261', 'channel', 'link-261');">channel</a></tt> <tt class="py-op">=</tt> <tt id="link-262" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-262', 'channel', 'link-261');">channel</a></tt> </tt> +<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"> <tt id="link-263" class="py-name"><a title="paramiko.BufferedFile" class="py-name" href="#" onclick="return doclink('link-263', 'BufferedFile', 'link-12');">BufferedFile</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -1952,30 +1946,31 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ -paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-267', '__init__', 'link-267');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_mode</tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"> </tt> -<a name="ChannelFile.__repr__"></a><div id="ChannelFile.__repr__-def"><a name="L1201"></a><tt class="py-lineno">1201</tt> <a class="py-toggle" href="#" id="ChannelFile.__repr__-toggle" onclick="return toggle('ChannelFile.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelFile.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile.__repr__-expanded"><a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> -<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<paramiko.ChannelFile from '</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-268', 'channel', 'link-264');">channel</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'>'</tt> </tt> -</div><a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> </tt> -<a name="ChannelFile._read"></a><div id="ChannelFile._read-def"><a name="L1209"></a><tt class="py-lineno">1209</tt> <a class="py-toggle" href="#" id="ChannelFile._read-toggle" onclick="return toggle('ChannelFile._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelFile._read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile._read-expanded"><a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-269', 'channel', 'link-264');">channel</a></tt><tt class="py-op">.</tt><tt id="link-270" class="py-name" targets="Method paramiko.Channel.recv()=paramiko.Channel-class.html#recv,Method paramiko.win_pageant.PageantConnection.recv()=paramiko.win_pageant.PageantConnection-class.html#recv"><a title="paramiko.Channel.recv -paramiko.win_pageant.PageantConnection.recv" class="py-name" href="#" onclick="return doclink('link-270', 'recv', 'link-270');">recv</a></tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"> </tt> -<a name="ChannelFile._write"></a><div id="ChannelFile._write-def"><a name="L1212"></a><tt class="py-lineno">1212</tt> <a class="py-toggle" href="#" id="ChannelFile._write-toggle" onclick="return toggle('ChannelFile._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelFile._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile._write-expanded"><a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-271', 'channel', 'link-264');">channel</a></tt><tt class="py-op">.</tt><tt id="link-272" class="py-name" targets="Method paramiko.Channel.sendall()=paramiko.Channel-class.html#sendall"><a title="paramiko.Channel.sendall" class="py-name" href="#" onclick="return doclink('link-272', 'sendall', 'link-272');">sendall</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"> </tt> -<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"> </tt> -<a name="ChannelStderrFile"></a><div id="ChannelStderrFile-def"><a name="L1217"></a><tt class="py-lineno">1217</tt> <a class="py-toggle" href="#" id="ChannelStderrFile-toggle" onclick="return toggle('ChannelStderrFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html">ChannelStderrFile</a> <tt class="py-op">(</tt><tt class="py-base-class">ChannelFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelStderrFile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelStderrFile-expanded"><a name="ChannelStderrFile.__init__"></a><div id="ChannelStderrFile.__init__-def"><a name="L1218"></a><tt class="py-lineno">1218</tt> <a class="py-toggle" href="#" id="ChannelStderrFile.__init__-toggle" onclick="return toggle('ChannelStderrFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelStderrFile.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile.__init__-expanded"><a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt class="py-name">ChannelFile</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="paramiko.Agent.__init__ +paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-264', '__init__', 'link-264');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_mode</tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"> </tt> +<a name="ChannelFile.__repr__"></a><div id="ChannelFile.__repr__-def"><a name="L1206"></a><tt class="py-lineno">1206</tt> <a class="py-toggle" href="#" id="ChannelFile.__repr__-toggle" onclick="return toggle('ChannelFile.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelFile.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile.__repr__-expanded"><a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> +<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<paramiko.ChannelFile from '</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-265', 'channel', 'link-261');">channel</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'>'</tt> </tt> +</div><a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> </tt> +<a name="ChannelFile._read"></a><div id="ChannelFile._read-def"><a name="L1214"></a><tt class="py-lineno">1214</tt> <a class="py-toggle" href="#" id="ChannelFile._read-toggle" onclick="return toggle('ChannelFile._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelFile._read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile._read-expanded"><a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-266', 'channel', 'link-261');">channel</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method paramiko.Channel.recv()=paramiko.Channel-class.html#recv,Method paramiko.win_pageant.PageantConnection.recv()=paramiko.win_pageant.PageantConnection-class.html#recv"><a title="paramiko.Channel.recv +paramiko.win_pageant.PageantConnection.recv" class="py-name" href="#" onclick="return doclink('link-267', 'recv', 'link-267');">recv</a></tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"> </tt> +<a name="ChannelFile._write"></a><div id="ChannelFile._write-def"><a name="L1217"></a><tt class="py-lineno">1217</tt> <a class="py-toggle" href="#" id="ChannelFile._write-toggle" onclick="return toggle('ChannelFile._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelFile-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelFile._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelFile._write-expanded"><a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-268', 'channel', 'link-261');">channel</a></tt><tt class="py-op">.</tt><tt id="link-269" class="py-name" targets="Method paramiko.Channel.sendall()=paramiko.Channel-class.html#sendall"><a title="paramiko.Channel.sendall" class="py-name" href="#" onclick="return doclink('link-269', 'sendall', 'link-269');">sendall</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> </tt> +<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"> </tt> +<a name="ChannelStderrFile"></a><div id="ChannelStderrFile-def"><a name="L1222"></a><tt class="py-lineno">1222</tt> <a class="py-toggle" href="#" id="ChannelStderrFile-toggle" onclick="return toggle('ChannelStderrFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html">ChannelStderrFile</a> <tt class="py-op">(</tt><tt class="py-base-class">ChannelFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelStderrFile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelStderrFile-expanded"><a name="ChannelStderrFile.__init__"></a><div id="ChannelStderrFile.__init__-def"><a name="L1223"></a><tt class="py-lineno">1223</tt> <a class="py-toggle" href="#" id="ChannelStderrFile.__init__-toggle" onclick="return toggle('ChannelStderrFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelStderrFile.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile.__init__-expanded"><a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"> <tt class="py-name">ChannelFile</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -2016,19 +2011,20 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ -paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-273', '__init__', 'link-267');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-274" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-274', 'channel', 'link-264');">channel</a></tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> </tt> -<a name="ChannelStderrFile._read"></a><div id="ChannelStderrFile._read-def"><a name="L1221"></a><tt class="py-lineno">1221</tt> <a class="py-toggle" href="#" id="ChannelStderrFile._read-toggle" onclick="return toggle('ChannelStderrFile._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelStderrFile._read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile._read-expanded"><a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-275', 'channel', 'link-264');">channel</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name" targets="Method paramiko.Channel.recv_stderr()=paramiko.Channel-class.html#recv_stderr"><a title="paramiko.Channel.recv_stderr" class="py-name" href="#" onclick="return doclink('link-276', 'recv_stderr', 'link-276');">recv_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> </tt> -<a name="ChannelStderrFile._write"></a><div id="ChannelStderrFile._write-def"><a name="L1224"></a><tt class="py-lineno">1224</tt> <a class="py-toggle" href="#" id="ChannelStderrFile._write-toggle" onclick="return toggle('ChannelStderrFile._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelStderrFile._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile._write-expanded"><a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-277', 'channel', 'link-264');">channel</a></tt><tt class="py-op">.</tt><tt id="link-278" class="py-name" targets="Method paramiko.Channel.sendall_stderr()=paramiko.Channel-class.html#sendall_stderr"><a title="paramiko.Channel.sendall_stderr" class="py-name" href="#" onclick="return doclink('link-278', 'sendall_stderr', 'link-278');">sendall_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> </tt> -<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> </tt> -<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"><tt class="py-comment"># vim: set shiftwidth=4 expandtab :</tt> </tt> -<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript"> +paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-270', '__init__', 'link-264');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-271" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-271', 'channel', 'link-261');">channel</a></tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> </tt> +<a name="ChannelStderrFile._read"></a><div id="ChannelStderrFile._read-def"><a name="L1226"></a><tt class="py-lineno">1226</tt> <a class="py-toggle" href="#" id="ChannelStderrFile._read-toggle" onclick="return toggle('ChannelStderrFile._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelStderrFile._read-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile._read-expanded"><a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-272', 'channel', 'link-261');">channel</a></tt><tt class="py-op">.</tt><tt id="link-273" class="py-name" targets="Method paramiko.Channel.recv_stderr()=paramiko.Channel-class.html#recv_stderr"><a title="paramiko.Channel.recv_stderr" class="py-name" href="#" onclick="return doclink('link-273', 'recv_stderr', 'link-273');">recv_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> </tt> +<a name="ChannelStderrFile._write"></a><div id="ChannelStderrFile._write-def"><a name="L1229"></a><tt class="py-lineno">1229</tt> <a class="py-toggle" href="#" id="ChannelStderrFile._write-toggle" onclick="return toggle('ChannelStderrFile._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.channel.ChannelStderrFile-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelStderrFile._write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelStderrFile._write-expanded"><a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-274', 'channel', 'link-261');">channel</a></tt><tt class="py-op">.</tt><tt id="link-275" class="py-name" targets="Method paramiko.Channel.sendall_stderr()=paramiko.Channel-class.html#sendall_stderr"><a title="paramiko.Channel.sendall_stderr" class="py-name" href="#" onclick="return doclink('link-275', 'sendall_stderr', 'link-275');">sendall_stderr</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> </tt> +<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> </tt> +<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"><tt class="py-comment"># vim: set shiftwidth=4 expandtab :</tt> </tt> +<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -2061,7 +2057,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:34 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.channel.ChannelStderrFile-class.html b/docs/paramiko.channel.ChannelStderrFile-class.html index c9faf36..16f4cfd 100644 --- a/docs/paramiko.channel.ChannelStderrFile-class.html +++ b/docs/paramiko.channel.ChannelStderrFile-class.html @@ -116,13 +116,16 @@ </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -232,7 +235,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.client-module.html b/docs/paramiko.client-module.html index a5a17b2..2035457 100644 --- a/docs/paramiko.client-module.html +++ b/docs/paramiko.client-module.html @@ -69,6 +69,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="SSH_PORT"></a><span class="summary-name">SSH_PORT</span> = <code title="22">22</code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="AUTH_FAILED"></a><span class="summary-name">AUTH_FAILED</span> = <code title="2">2</code> </td> </tr> @@ -416,6 +423,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -503,7 +517,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.client-pysrc.html b/docs/paramiko.client-pysrc.html index 760992c..31ac874 100644 --- a/docs/paramiko.client-pysrc.html +++ b/docs/paramiko.client-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.client-module.html" onclick="show_private();">Module paramiko.client</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{SSHClient}.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -92,43 +92,45 @@ <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-21', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Module paramiko.transport=paramiko.transport-module.html"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-22', 'transport', 'link-22');">transport</a></tt> <tt class="py-keyword">import</tt> <tt id="link-23" class="py-name" targets="Class paramiko.Transport=paramiko.Transport-class.html"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-23', 'Transport', 'link-23');">Transport</a></tt> </tt> <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt> -<a name="MissingHostKeyPolicy"></a><div id="MissingHostKeyPolicy-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="MissingHostKeyPolicy-toggle" onclick="return toggle('MissingHostKeyPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.MissingHostKeyPolicy-class.html">MissingHostKeyPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="MissingHostKeyPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MissingHostKeyPolicy-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> Interface for defining the policy that L{SSHClient} should use when the</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> SSH server's hostname is not in either the system host keys or the</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> application's keys. Pre-made classes implement policies for automatically</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> adding the key to the application's L{HostKeys} object (L{AutoAddPolicy}),</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> and for automatically rejecting the key (L{RejectPolicy}).</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> This function may be used to ask the user to verify the key, for example.</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt> -<a name="MissingHostKeyPolicy.missing_host_key"></a><div id="MissingHostKeyPolicy.missing_host_key-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="MissingHostKeyPolicy.missing_host_key-toggle" onclick="return toggle('MissingHostKeyPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.MissingHostKeyPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="MissingHostKeyPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MissingHostKeyPolicy.missing_host_key-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> Called when an L{SSHClient} receives a server key for a server that</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> isn't in either the system or local L{HostKeys} object. To accept</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> the key, simply return. To reject, raised an exception (which will</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> be passed to the calling application).</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div></div><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt> -<a name="AutoAddPolicy"></a><div id="AutoAddPolicy-def"><a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="AutoAddPolicy-toggle" onclick="return toggle('AutoAddPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.AutoAddPolicy-class.html">AutoAddPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="AutoAddPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AutoAddPolicy-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> Policy for automatically adding the hostname and new host key to the</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> local L{HostKeys} object, and saving it. This is used by L{SSHClient}.</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt> -<a name="AutoAddPolicy.missing_host_key"></a><div id="AutoAddPolicy.missing_host_key-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="AutoAddPolicy.missing_host_key-toggle" onclick="return toggle('AutoAddPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.AutoAddPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="AutoAddPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AutoAddPolicy.missing_host_key-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-24" class="py-name" targets="Module paramiko.client=paramiko.client-module.html"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-24', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add -paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-25', 'add', 'link-25');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name +<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable paramiko.client.SSH_PORT=paramiko.client-module.html#SSH_PORT"><a title="paramiko.client.SSH_PORT" class="py-name" href="#" onclick="return doclink('link-24', 'SSH_PORT', 'link-24');">SSH_PORT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">22</tt> </tt> +<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt> +<a name="MissingHostKeyPolicy"></a><div id="MissingHostKeyPolicy-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="MissingHostKeyPolicy-toggle" onclick="return toggle('MissingHostKeyPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.MissingHostKeyPolicy-class.html">MissingHostKeyPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="MissingHostKeyPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MissingHostKeyPolicy-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> Interface for defining the policy that L{SSHClient} should use when the</tt> </tt> +<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> SSH server's hostname is not in either the system host keys or the</tt> </tt> +<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> application's keys. Pre-made classes implement policies for automatically</tt> </tt> +<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> adding the key to the application's L{HostKeys} object (L{AutoAddPolicy}),</tt> </tt> +<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> and for automatically rejecting the key (L{RejectPolicy}).</tt> </tt> +<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> This function may be used to ask the user to verify the key, for example.</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt> +<a name="MissingHostKeyPolicy.missing_host_key"></a><div id="MissingHostKeyPolicy.missing_host_key-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="MissingHostKeyPolicy.missing_host_key-toggle" onclick="return toggle('MissingHostKeyPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.MissingHostKeyPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="MissingHostKeyPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MissingHostKeyPolicy.missing_host_key-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> Called when an L{SSHClient} receives a server key for a server that</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> isn't in either the system or local L{HostKeys} object. To accept</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> the key, simply return. To reject, raised an exception (which will</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> be passed to the calling application).</tt> </tt> +<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +</div></div><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt> +<a name="AutoAddPolicy"></a><div id="AutoAddPolicy-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <a class="py-toggle" href="#" id="AutoAddPolicy-toggle" onclick="return toggle('AutoAddPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.AutoAddPolicy-class.html">AutoAddPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="AutoAddPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AutoAddPolicy-expanded"><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> Policy for automatically adding the hostname and new host key to the</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> local L{HostKeys} object, and saving it. This is used by L{SSHClient}.</tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> +<a name="AutoAddPolicy.missing_host_key"></a><div id="AutoAddPolicy.missing_host_key-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="AutoAddPolicy.missing_host_key-toggle" onclick="return toggle('AutoAddPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.AutoAddPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="AutoAddPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AutoAddPolicy.missing_host_key-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt id="link-25" class="py-name" targets="Module paramiko.client=paramiko.client-module.html"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-25', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add +paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-26', 'add', 'link-26');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-26', 'get_name', 'link-26');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-27', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-28', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method paramiko.SSHClient.save_host_keys()=paramiko.SSHClient-class.html#save_host_keys"><a title="paramiko.SSHClient.save_host_keys" class="py-name" href="#" onclick="return doclink('link-29', 'save_host_keys', 'link-29');">save_host_keys</a></tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-30', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt><tt class="py-op">)</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-31', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-32" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-27', 'get_name', 'link-27');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-28" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-28', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-29', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method paramiko.SSHClient.save_host_keys()=paramiko.SSHClient-class.html#save_host_keys"><a title="paramiko.SSHClient.save_host_keys" class="py-name" href="#" onclick="return doclink('link-30', 'save_host_keys', 'link-30');">save_host_keys</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-31', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt><tt class="py-op">)</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-32', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-33" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -149,22 +151,22 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-32', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Adding %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-33', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Adding %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-33', 'get_name', 'link-26');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.PKey.get_fingerprint()=paramiko.PKey-class.html#get_fingerprint"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-34', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt> -<a name="RejectPolicy"></a><div id="RejectPolicy-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="RejectPolicy-toggle" onclick="return toggle('RejectPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.RejectPolicy-class.html">RejectPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RejectPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RejectPolicy-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Policy for automatically rejecting the unknown hostname & key. This is</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> used by L{SSHClient}.</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt> -<a name="RejectPolicy.missing_host_key"></a><div id="RejectPolicy.missing_host_key-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="RejectPolicy.missing_host_key-toggle" onclick="return toggle('RejectPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.RejectPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RejectPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RejectPolicy.missing_host_key-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt id="link-35" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-35', 'client', 'link-24');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-34', 'get_name', 'link-27');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method paramiko.PKey.get_fingerprint()=paramiko.PKey-class.html#get_fingerprint"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-35', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt> +<a name="RejectPolicy"></a><div id="RejectPolicy-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="RejectPolicy-toggle" onclick="return toggle('RejectPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.RejectPolicy-class.html">RejectPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="RejectPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RejectPolicy-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> Policy for automatically rejecting the unknown hostname & key. This is</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> used by L{SSHClient}.</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt> +<a name="RejectPolicy.missing_host_key"></a><div id="RejectPolicy.missing_host_key-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="RejectPolicy.missing_host_key-toggle" onclick="return toggle('RejectPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.RejectPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="RejectPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RejectPolicy.missing_host_key-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-36', 'client', 'link-25');">client</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -185,127 +187,127 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-36', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-37', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> +<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-37', 'get_name', 'link-26');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-38', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-39" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-39', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown server %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt> -<a name="WarningPolicy"></a><div id="WarningPolicy-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="WarningPolicy-toggle" onclick="return toggle('WarningPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.WarningPolicy-class.html">WarningPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="WarningPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WarningPolicy-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> Policy for logging a python-style warning for an unknown host key, but</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> accepting it. This is used by L{SSHClient}.</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="WarningPolicy.missing_host_key"></a><div id="WarningPolicy.missing_host_key-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="WarningPolicy.missing_host_key-toggle" onclick="return toggle('WarningPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.WarningPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="WarningPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="WarningPolicy.missing_host_key-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-38', 'get_name', 'link-27');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-39', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-40" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-40', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown server %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> +<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> +<a name="WarningPolicy"></a><div id="WarningPolicy-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="WarningPolicy-toggle" onclick="return toggle('WarningPolicy');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.WarningPolicy-class.html">WarningPolicy</a> <tt class="py-op">(</tt><tt class="py-base-class">MissingHostKeyPolicy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="WarningPolicy-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WarningPolicy-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> Policy for logging a python-style warning for an unknown host key, but</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> accepting it. This is used by L{SSHClient}.</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="WarningPolicy.missing_host_key"></a><div id="WarningPolicy.missing_host_key-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="WarningPolicy.missing_host_key-toggle" onclick="return toggle('WarningPolicy.missing_host_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.WarningPolicy-class.html#missing_host_key">missing_host_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="WarningPolicy.missing_host_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="WarningPolicy.missing_host_key-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown %s host key for %s: %s'</tt> <tt class="py-op">%</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-40', 'get_name', 'link-26');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-41', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt> -<a name="SSHClient"></a><div id="SSHClient-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="SSHClient-toggle" onclick="return toggle('SSHClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html">SSHClient</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SSHClient-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> A high-level representation of a session with an SSH server. This class</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> wraps L{Transport}, L{Channel}, and L{SFTPClient} to take care of most</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> aspects of authenticating and opening channels. A typical use case is::</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> client = SSHClient()</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> client.load_system_host_keys()</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> client.connect('ssh.example.com')</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> stdin, stdout, stderr = client.exec_command('ls -l')</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> You may pass in explicit overrides for authentication and server host key</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> checking. The default mechanism is to try to use local key files or an</tt> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> SSH agent (if one is running).</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.6</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt> -<a name="SSHClient.__init__"></a><div id="SSHClient.__init__-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="SSHClient.__init__-toggle" onclick="return toggle('SSHClient.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.__init__-expanded"><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> Create a new SSHClient.</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-42', 'HostKeys', 'link-10');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-43', 'HostKeys', 'link-10');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name" targets="Class paramiko.RejectPolicy=paramiko.RejectPolicy-class.html"><a title="paramiko.RejectPolicy" class="py-name" href="#" onclick="return doclink('link-44', 'RejectPolicy', 'link-44');">RejectPolicy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt> -<a name="SSHClient.load_system_host_keys"></a><div id="SSHClient.load_system_host_keys-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="SSHClient.load_system_host_keys-toggle" onclick="return toggle('SSHClient.load_system_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#load_system_host_keys">load_system_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.load_system_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.load_system_host_keys-expanded"><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> Load host keys from a system (read-only) file. Host keys read with</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> this method will not be saved back by L{save_host_keys}.</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> This method can be called multiple times. Each new set of host keys</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> will be merged with the existing set (new replacing old if there are</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> conflicts).</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> If C{filename} is left as C{None}, an attempt will be made to read</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> keys from the user's local "known hosts" file, as used by OpenSSH,</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> and no exception will be raised if the file can't be read. This is</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> probably only useful on posix.</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to read, or C{None}</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if a filename was provided and the file could not be</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> read</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-comment"># try the user's .ssh key file, and mask exceptions</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/known_hosts'</tt><tt class="py-op">)</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method paramiko.HostKeys.load()=paramiko.HostKeys-class.html#load"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-45', 'load', 'link-45');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-46', 'load', 'link-45');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -</div><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt> -<a name="SSHClient.load_host_keys"></a><div id="SSHClient.load_host_keys-def"><a name="L155"></a><tt class="py-lineno">155</tt> <a class="py-toggle" href="#" id="SSHClient.load_host_keys-toggle" onclick="return toggle('SSHClient.load_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#load_host_keys">load_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.load_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.load_host_keys-expanded"><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> Load host keys from a local host-key file. Host keys read with this</tt> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> method will be checked I{after} keys loaded via L{load_system_host_keys},</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> but will be saved back by L{save_host_keys} (so they can be modified).</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> The missing host key policy L{AutoAddPolicy} adds keys to this set and</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> saves them, when connecting to a previously-unknown server.</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> This method can be called multiple times. Each new set of host keys</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> will be merged with the existing set (new replacing old if there are</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> conflicts). When automatically saving, the last hostname is used.</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to read</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the filename could not be read</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">filename</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-47', 'load', 'link-45');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> -<a name="SSHClient.save_host_keys"></a><div id="SSHClient.save_host_keys-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="SSHClient.save_host_keys-toggle" onclick="return toggle('SSHClient.save_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#save_host_keys">save_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.save_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.save_host_keys-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> Save the host keys back to a file. Only the host keys loaded with</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> L{load_host_keys} (plus any added directly) will be saved -- not any</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> host keys loaded with L{load_system_host_keys}.</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to save to</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the file could not be written</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-48', 'open', 'link-48');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-49', 'write', 'link-49');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'# SSH host keys collected by paramiko\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-50', 'keys', 'link-50');">keys</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-51" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-51', 'keys', 'link-50');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-52', 'write', 'link-49');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s %s %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method paramiko.PKey.get_base64()=paramiko.PKey-class.html#get_base64"><a title="paramiko.PKey.get_base64" class="py-name" href="#" onclick="return doclink('link-53', 'get_base64', 'link-53');">get_base64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-41', 'get_name', 'link-27');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-42', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt> +<a name="SSHClient"></a><div id="SSHClient-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="SSHClient-toggle" onclick="return toggle('SSHClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html">SSHClient</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SSHClient-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> A high-level representation of a session with an SSH server. This class</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> wraps L{Transport}, L{Channel}, and L{SFTPClient} to take care of most</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> aspects of authenticating and opening channels. A typical use case is::</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> client = SSHClient()</tt> </tt> +<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> client.load_system_host_keys()</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> client.connect('ssh.example.com')</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> stdin, stdout, stderr = client.exec_command('ls -l')</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> You may pass in explicit overrides for authentication and server host key</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> checking. The default mechanism is to try to use local key files or an</tt> </tt> +<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> SSH agent (if one is running).</tt> </tt> +<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.6</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> +<a name="SSHClient.__init__"></a><div id="SSHClient.__init__-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="SSHClient.__init__-toggle" onclick="return toggle('SSHClient.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.__init__-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> Create a new SSHClient.</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-43', 'HostKeys', 'link-10');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-44', 'HostKeys', 'link-10');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name" targets="Class paramiko.RejectPolicy=paramiko.RejectPolicy-class.html"><a title="paramiko.RejectPolicy" class="py-name" href="#" onclick="return doclink('link-45', 'RejectPolicy', 'link-45');">RejectPolicy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt> +<a name="SSHClient.load_system_host_keys"></a><div id="SSHClient.load_system_host_keys-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="SSHClient.load_system_host_keys-toggle" onclick="return toggle('SSHClient.load_system_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#load_system_host_keys">load_system_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.load_system_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.load_system_host_keys-expanded"><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Load host keys from a system (read-only) file. Host keys read with</tt> </tt> +<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> this method will not be saved back by L{save_host_keys}.</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> This method can be called multiple times. Each new set of host keys</tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> will be merged with the existing set (new replacing old if there are</tt> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> conflicts).</tt> </tt> +<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> If C{filename} is left as C{None}, an attempt will be made to read</tt> </tt> +<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> keys from the user's local "known hosts" file, as used by OpenSSH,</tt> </tt> +<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> and no exception will be raised if the file can't be read. This is</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> probably only useful on posix.</tt> </tt> +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to read, or C{None}</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if a filename was provided and the file could not be</tt> </tt> +<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> read</tt> </tt> +<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># try the user's .ssh key file, and mask exceptions</tt> </tt> +<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/known_hosts'</tt><tt class="py-op">)</tt> </tt> +<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method paramiko.HostKeys.load()=paramiko.HostKeys-class.html#load"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-46', 'load', 'link-46');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt> +<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-47', 'load', 'link-46');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +</div><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt> +<a name="SSHClient.load_host_keys"></a><div id="SSHClient.load_host_keys-def"><a name="L157"></a><tt class="py-lineno">157</tt> <a class="py-toggle" href="#" id="SSHClient.load_host_keys-toggle" onclick="return toggle('SSHClient.load_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#load_host_keys">load_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.load_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.load_host_keys-expanded"><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> Load host keys from a local host-key file. Host keys read with this</tt> </tt> +<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> method will be checked I{after} keys loaded via L{load_system_host_keys},</tt> </tt> +<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> but will be saved back by L{save_host_keys} (so they can be modified).</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> The missing host key policy L{AutoAddPolicy} adds keys to this set and</tt> </tt> +<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> saves them, when connecting to a previously-unknown server.</tt> </tt> +<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> This method can be called multiple times. Each new set of host keys</tt> </tt> +<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> will be merged with the existing set (new replacing old if there are</tt> </tt> +<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> conflicts). When automatically saving, the last hostname is used.</tt> </tt> +<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to read</tt> </tt> +<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the filename could not be read</tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">filename</tt> </tt> +<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-48', 'load', 'link-46');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +</div><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt> +<a name="SSHClient.save_host_keys"></a><div id="SSHClient.save_host_keys-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="SSHClient.save_host_keys-toggle" onclick="return toggle('SSHClient.save_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#save_host_keys">save_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.save_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.save_host_keys-expanded"><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> Save the host keys back to a file. Only the host keys loaded with</tt> </tt> +<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> L{load_host_keys} (plus any added directly) will be saved -- not any</tt> </tt> +<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> host keys loaded with L{load_system_host_keys}.</tt> </tt> +<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: the filename to save to</tt> </tt> +<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the file could not be written</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-49', 'open', 'link-49');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> +<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-50', 'write', 'link-50');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'# SSH host keys collected by paramiko\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt id="link-51" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-51', 'keys', 'link-51');">keys</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-52" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-52', 'keys', 'link-51');">keys</a></tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-53', 'write', 'link-50');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s %s %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method paramiko.PKey.get_base64()=paramiko.PKey-class.html#get_base64"><a title="paramiko.PKey.get_base64" class="py-name" href="#" onclick="return doclink('link-54', 'get_base64', 'link-54');">get_base64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -316,154 +318,164 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-54', 'close', 'link-54');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt> -<a name="SSHClient.get_host_keys"></a><div id="SSHClient.get_host_keys-def"><a name="L193"></a><tt class="py-lineno">193</tt> <a class="py-toggle" href="#" id="SSHClient.get_host_keys-toggle" onclick="return toggle('SSHClient.get_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#get_host_keys">get_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.get_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.get_host_keys-expanded"><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> Get the local L{HostKeys} object. This can be used to examine the</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> local host keys or change them.</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> @return: the local host keys</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{HostKeys}</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt> </tt> -</div><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt> -<a name="SSHClient.set_log_channel"></a><div id="SSHClient.set_log_channel-def"><a name="L203"></a><tt class="py-lineno">203</tt> <a class="py-toggle" href="#" id="SSHClient.set_log_channel-toggle" onclick="return toggle('SSHClient.set_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#set_log_channel">set_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.set_log_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.set_log_channel-expanded"><a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> Set the channel for logging. The default is C{"paramiko.transport"}</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> but it can be set to anything you want.</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name for logging</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-55', 'name', 'link-55');">name</a></tt> </tt> -</div><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> </tt> -<a name="SSHClient.set_missing_host_key_policy"></a><div id="SSHClient.set_missing_host_key_policy-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="SSHClient.set_missing_host_key_policy-toggle" onclick="return toggle('SSHClient.set_missing_host_key_policy');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#set_missing_host_key_policy">set_missing_host_key_policy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">policy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.set_missing_host_key_policy-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.set_missing_host_key_policy-expanded"><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> Set the policy to use when connecting to a server that doesn't have a</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> host key in either the system or local L{HostKeys} objects. The</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> default policy is to reject all unknown servers (using L{RejectPolicy}).</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> You may substitute L{AutoAddPolicy} or write your own policy class.</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> @param policy: the policy to use when receiving a host key from a</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> previously-unknown server</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> @type policy: L{MissingHostKeyPolicy}</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt> <tt class="py-op">=</tt> <tt class="py-name">policy</tt> </tt> -</div><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt> -<a name="SSHClient.connect"></a><div id="SSHClient.connect-def"><a name="L226"></a><tt class="py-lineno">226</tt> <a class="py-toggle" href="#" id="SSHClient.connect-toggle" onclick="return toggle('SSHClient.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">=</tt><tt class="py-number">22</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-param">key_filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">allow_agent</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">look_for_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.connect-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Connect to an SSH server and authenticate to it. The server's host key</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> is checked against the system host keys (see L{load_system_host_keys})</tt> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> and any local host keys (L{load_host_keys}). If the server's hostname</tt> </tt> -<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> is not found in either set of host keys, the missing host key policy</tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> is used (see L{set_missing_host_key_policy}). The default policy is</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> to reject the key and raise an L{SSHException}.</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> Authentication is attempted in the following order of priority:</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> - The C{pkey} or C{key_filename} passed in (if any)</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> - Any key we can find through an SSH agent</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> - Any "id_rsa" or "id_dsa" key discoverable in C{~/.ssh/}</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> - Plain username/password auth, if a password was given</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> If a private key requires a password to unlock it, and a password is</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> passed in, that password will be used to attempt to unlock the key.</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the server to connect to</tt> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the server port to connect to</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as (defaults to the</tt> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> current local username)</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> @param password: a password to use for authentication or for unlocking</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> a private key</tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> @param pkey: an optional private key to use for authentication</tt> </tt> -<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> @type pkey: L{PKey}</tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> @param key_filename: the filename, or list of filenames, of optional</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> private key(s) to try for authentication</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> @type key_filename: str or list(str)</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: an optional timeout (in seconds) for the TCP connect</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: float</tt> </tt> -<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> @param allow_agent: set to False to disable connecting to the SSH agent</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> @type allow_agent: bool</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> @param look_for_keys: set to False to disable searching for discoverable</tt> </tt> -<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> private key files in C{~/.ssh/}</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> @type look_for_keys: bool</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadHostKeyException: if the server's host key could not be</tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> verified</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if authentication failed</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was any other error connecting or</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> establishing an SSH session</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if a socket error occurred while connecting</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout -paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-56', 'settimeout', 'link-56');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method paramiko.SSHClient.connect()=paramiko.SSHClient-class.html#connect,Method paramiko.Transport.connect()=paramiko.Transport-class.html#connect"><a title="paramiko.SSHClient.connect -paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-57', 'connect', 'link-57');">connect</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-58', 'Transport', 'link-23');">Transport</a></tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method paramiko.SSHClient.set_log_channel()=paramiko.SSHClient-class.html#set_log_channel,Method paramiko.Transport.set_log_channel()=paramiko.Transport-class.html#set_log_channel"><a title="paramiko.SSHClient.set_log_channel -paramiko.Transport.set_log_channel" class="py-name" href="#" onclick="return doclink('link-59', 'set_log_channel', 'link-59');">set_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt><tt class="py-op">)</tt> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method paramiko.Transport.start_client()=paramiko.Transport-class.html#start_client"><a title="paramiko.Transport.start_client" class="py-name" href="#" onclick="return doclink('link-60', 'start_client', 'link-60');">start_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-61', 'ResourceManager', 'link-13');">ResourceManager</a></tt><tt class="py-op">.</tt><tt class="py-name">register</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">)</tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method paramiko.Transport.get_remote_server_key()=paramiko.Transport-class.html#get_remote_server_key"><a title="paramiko.Transport.get_remote_server_key" class="py-name" href="#" onclick="return doclink('link-62', 'get_remote_server_key', 'link-62');">get_remote_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">keytype</tt> <tt class="py-op">=</tt> <tt class="py-name">server_key</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-55', 'close', 'link-55');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt> +<a name="SSHClient.get_host_keys"></a><div id="SSHClient.get_host_keys-def"><a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="SSHClient.get_host_keys-toggle" onclick="return toggle('SSHClient.get_host_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#get_host_keys">get_host_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.get_host_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.get_host_keys-expanded"><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> Get the local L{HostKeys} object. This can be used to examine the</tt> </tt> +<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> local host keys or change them.</tt> </tt> +<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> @return: the local host keys</tt> </tt> +<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{HostKeys}</tt> </tt> +<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt> </tt> +</div><a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> </tt> +<a name="SSHClient.set_log_channel"></a><div id="SSHClient.set_log_channel-def"><a name="L205"></a><tt class="py-lineno">205</tt> <a class="py-toggle" href="#" id="SSHClient.set_log_channel-toggle" onclick="return toggle('SSHClient.set_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#set_log_channel">set_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.set_log_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.set_log_channel-expanded"><a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> Set the channel for logging. The default is C{"paramiko.transport"}</tt> </tt> +<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> but it can be set to anything you want.</tt> </tt> +<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name for logging</tt> </tt> +<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> +<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-56', 'name', 'link-56');">name</a></tt> </tt> +</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt> +<a name="SSHClient.set_missing_host_key_policy"></a><div id="SSHClient.set_missing_host_key_policy-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="SSHClient.set_missing_host_key_policy-toggle" onclick="return toggle('SSHClient.set_missing_host_key_policy');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#set_missing_host_key_policy">set_missing_host_key_policy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">policy</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.set_missing_host_key_policy-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.set_missing_host_key_policy-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> Set the policy to use when connecting to a server that doesn't have a</tt> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> host key in either the system or local L{HostKeys} objects. The</tt> </tt> +<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> default policy is to reject all unknown servers (using L{RejectPolicy}).</tt> </tt> +<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> You may substitute L{AutoAddPolicy} or write your own policy class.</tt> </tt> +<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> @param policy: the policy to use when receiving a host key from a</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> previously-unknown server</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> @type policy: L{MissingHostKeyPolicy}</tt> </tt> +<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt> <tt class="py-op">=</tt> <tt class="py-name">policy</tt> </tt> +</div><a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> </tt> +<a name="SSHClient.connect"></a><div id="SSHClient.connect-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="SSHClient.connect-toggle" onclick="return toggle('SSHClient.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">=</tt><tt id="link-57" class="py-name"><a title="paramiko.client.SSH_PORT" class="py-name" href="#" onclick="return doclink('link-57', 'SSH_PORT', 'link-24');">SSH_PORT</a></tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-param">key_filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">allow_agent</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-param">look_for_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.connect-expanded"><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> Connect to an SSH server and authenticate to it. The server's host key</tt> </tt> +<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> is checked against the system host keys (see L{load_system_host_keys})</tt> </tt> +<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> and any local host keys (L{load_host_keys}). If the server's hostname</tt> </tt> +<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> is not found in either set of host keys, the missing host key policy</tt> </tt> +<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> is used (see L{set_missing_host_key_policy}). The default policy is</tt> </tt> +<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> to reject the key and raise an L{SSHException}.</tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> Authentication is attempted in the following order of priority:</tt> </tt> +<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> - The C{pkey} or C{key_filename} passed in (if any)</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> - Any key we can find through an SSH agent</tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> - Any "id_rsa" or "id_dsa" key discoverable in C{~/.ssh/}</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> - Plain username/password auth, if a password was given</tt> </tt> +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> If a private key requires a password to unlock it, and a password is</tt> </tt> +<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> passed in, that password will be used to attempt to unlock the key.</tt> </tt> +<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the server to connect to</tt> </tt> +<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the server port to connect to</tt> </tt> +<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> +<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as (defaults to the</tt> </tt> +<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> current local username)</tt> </tt> +<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> +<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> @param password: a password to use for authentication or for unlocking</tt> </tt> +<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> a private key</tt> </tt> +<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str</tt> </tt> +<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> @param pkey: an optional private key to use for authentication</tt> </tt> +<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> @type pkey: L{PKey}</tt> </tt> +<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> @param key_filename: the filename, or list of filenames, of optional</tt> </tt> +<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> private key(s) to try for authentication</tt> </tt> +<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> @type key_filename: str or list(str)</tt> </tt> +<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: an optional timeout (in seconds) for the TCP connect</tt> </tt> +<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: float</tt> </tt> +<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> @param allow_agent: set to False to disable connecting to the SSH agent</tt> </tt> +<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> @type allow_agent: bool</tt> </tt> +<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> @param look_for_keys: set to False to disable searching for discoverable</tt> </tt> +<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> private key files in C{~/.ssh/}</tt> </tt> +<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> @type look_for_keys: bool</tt> </tt> +<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadHostKeyException: if the server's host key could not be</tt> </tt> +<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> verified</tt> </tt> +<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if authentication failed</tt> </tt> +<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was any other error connecting or</tt> </tt> +<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> establishing an SSH session</tt> </tt> +<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> @raise socket.error: if a socket error occurred while connecting</tt> </tt> +<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">family</tt><tt class="py-op">,</tt> <tt class="py-name">socktype</tt><tt class="py-op">,</tt> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">canonname</tt><tt class="py-op">,</tt> <tt class="py-name">sockaddr</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getaddrinfo</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_UNSPEC</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">socktype</tt> <tt class="py-op">==</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">:</tt> </tt> +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">af</tt> <tt class="py-op">=</tt> <tt class="py-name">family</tt> </tt> +<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">addr</tt> <tt class="py-op">=</tt> <tt class="py-name">sockaddr</tt> </tt> +<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-58" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-58', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No suitable address family for %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> +<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">af</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> +<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout +paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-59', 'settimeout', 'link-59');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> +<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method paramiko.SSHClient.connect()=paramiko.SSHClient-class.html#connect,Method paramiko.Transport.connect()=paramiko.Transport-class.html#connect"><a title="paramiko.SSHClient.connect +paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-60', 'connect', 'link-60');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">addr</tt><tt class="py-op">)</tt> </tt> +<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-61', 'Transport', 'link-23');">Transport</a></tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> </tt> +<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> </tt> +<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method paramiko.SSHClient.set_log_channel()=paramiko.SSHClient-class.html#set_log_channel,Method paramiko.Transport.set_log_channel()=paramiko.Transport-class.html#set_log_channel"><a title="paramiko.SSHClient.set_log_channel +paramiko.Transport.set_log_channel" class="py-name" href="#" onclick="return doclink('link-62', 'set_log_channel', 'link-62');">set_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log_channel</tt><tt class="py-op">)</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method paramiko.Transport.start_client()=paramiko.Transport-class.html#start_client"><a title="paramiko.Transport.start_client" class="py-name" href="#" onclick="return doclink('link-63', 'start_client', 'link-63');">start_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-64', 'ResourceManager', 'link-13');">ResourceManager</a></tt><tt class="py-op">.</tt><tt class="py-name">register</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">)</tt> </tt> +<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt> +<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method paramiko.Transport.get_remote_server_key()=paramiko.Transport-class.html#get_remote_server_key"><a title="paramiko.Transport.get_remote_server_key" class="py-name" href="#" onclick="return doclink('link-65', 'get_remote_server_key', 'link-65');">get_remote_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">keytype</tt> <tt class="py-op">=</tt> <tt class="py-name">server_key</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-63', 'get_name', 'link-26');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-64', 'get', 'link-64');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-65', 'get', 'link-64');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">our_server_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-66', 'get', 'link-64');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-67', 'get', 'link-64');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">our_server_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-comment"># will raise exception if the key is rejected; let that fall out</tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method paramiko.AutoAddPolicy.missing_host_key()=paramiko.AutoAddPolicy-class.html#missing_host_key,Method paramiko.MissingHostKeyPolicy.missing_host_key()=paramiko.MissingHostKeyPolicy-class.html#missing_host_key,Method paramiko.RejectPolicy.missing_host_key()=paramiko.RejectPolicy-class.html#missing_host_key,Method paramiko.WarningPolicy.missing_host_key()=paramiko.WarningPolicy-class.html#missing_host_key"><a title="paramiko.AutoAddPolicy.missing_host_key +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-66', 'get_name', 'link-27');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> </tt> +<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">port</tt> <tt class="py-op">==</tt> <tt id="link-67" class="py-name"><a title="paramiko.client.SSH_PORT" class="py-name" href="#" onclick="return doclink('link-67', 'SSH_PORT', 'link-24');">SSH_PORT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">server_hostkey_name</tt> <tt class="py-op">=</tt> <tt class="py-name">hostname</tt> </tt> +<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">server_hostkey_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"[%s]:%d"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> +<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_system_host_keys</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-68', 'get', 'link-68');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">server_hostkey_name</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-69', 'get', 'link-68');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">our_server_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_host_keys</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-70', 'get', 'link-68');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">server_hostkey_name</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-71', 'get', 'link-68');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">our_server_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-comment"># will raise exception if the key is rejected; let that fall out</tt> </tt> +<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_policy</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method paramiko.AutoAddPolicy.missing_host_key()=paramiko.AutoAddPolicy-class.html#missing_host_key,Method paramiko.MissingHostKeyPolicy.missing_host_key()=paramiko.MissingHostKeyPolicy-class.html#missing_host_key,Method paramiko.RejectPolicy.missing_host_key()=paramiko.RejectPolicy-class.html#missing_host_key,Method paramiko.WarningPolicy.missing_host_key()=paramiko.WarningPolicy-class.html#missing_host_key"><a title="paramiko.AutoAddPolicy.missing_host_key paramiko.MissingHostKeyPolicy.missing_host_key paramiko.RejectPolicy.missing_host_key -paramiko.WarningPolicy.missing_host_key" class="py-name" href="#" onclick="return doclink('link-68', 'missing_host_key', 'link-68');">missing_host_key</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">server_key</tt><tt class="py-op">)</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-comment"># if the callback returns, assume the key is ok</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">server_key</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">server_key</tt> <tt class="py-op">!=</tt> <tt class="py-name">our_server_key</tt><tt class="py-op">:</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-69" class="py-name"><a title="paramiko.BadHostKeyException" class="py-name" href="#" onclick="return doclink('link-69', 'BadHostKeyException', 'link-20');">BadHostKeyException</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">server_key</tt><tt class="py-op">,</tt> <tt class="py-name">our_server_key</tt><tt class="py-op">)</tt> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">username</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">username</tt> <tt class="py-op">=</tt> <tt class="py-name">getpass</tt><tt class="py-op">.</tt><tt class="py-name">getuser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">key_filename</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">key_filename</tt> <tt class="py-op">]</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-name">key_filename</tt> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth</tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name" targets="Module paramiko.pkey=paramiko.pkey-module.html"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-70', 'pkey', 'link-70');">pkey</a></tt><tt class="py-op">,</tt> <tt class="py-name">key_filenames</tt><tt class="py-op">,</tt> <tt class="py-name">allow_agent</tt><tt class="py-op">,</tt> <tt class="py-name">look_for_keys</tt><tt class="py-op">)</tt> </tt> -</div><a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> </tt> -<a name="SSHClient.close"></a><div id="SSHClient.close-def"><a name="L317"></a><tt class="py-lineno">317</tt> <a class="py-toggle" href="#" id="SSHClient.close-toggle" onclick="return toggle('SSHClient.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.close-expanded"><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> Close this SSHClient and its underlying L{Transport}.</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="paramiko.Agent.close +paramiko.WarningPolicy.missing_host_key" class="py-name" href="#" onclick="return doclink('link-72', 'missing_host_key', 'link-72');">missing_host_key</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">server_hostkey_name</tt><tt class="py-op">,</tt> <tt class="py-name">server_key</tt><tt class="py-op">)</tt> </tt> +<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-comment"># if the callback returns, assume the key is ok</tt> </tt> +<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">our_server_key</tt> <tt class="py-op">=</tt> <tt class="py-name">server_key</tt> </tt> +<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> </tt> +<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">server_key</tt> <tt class="py-op">!=</tt> <tt class="py-name">our_server_key</tt><tt class="py-op">:</tt> </tt> +<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-73" class="py-name"><a title="paramiko.BadHostKeyException" class="py-name" href="#" onclick="return doclink('link-73', 'BadHostKeyException', 'link-20');">BadHostKeyException</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">server_key</tt><tt class="py-op">,</tt> <tt class="py-name">our_server_key</tt><tt class="py-op">)</tt> </tt> +<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> </tt> +<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">username</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">username</tt> <tt class="py-op">=</tt> <tt class="py-name">getpass</tt><tt class="py-op">.</tt><tt class="py-name">getuser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt> +<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">key_filename</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">key_filename</tt> <tt class="py-op">]</tt> </tt> +<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">key_filenames</tt> <tt class="py-op">=</tt> <tt class="py-name">key_filename</tt> </tt> +<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth</tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name" targets="Module paramiko.pkey=paramiko.pkey-module.html"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-74', 'pkey', 'link-74');">pkey</a></tt><tt class="py-op">,</tt> <tt class="py-name">key_filenames</tt><tt class="py-op">,</tt> <tt class="py-name">allow_agent</tt><tt class="py-op">,</tt> <tt class="py-name">look_for_keys</tt><tt class="py-op">)</tt> </tt> +</div><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt> +<a name="SSHClient.close"></a><div id="SSHClient.close-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="SSHClient.close-toggle" onclick="return toggle('SSHClient.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.close-expanded"><a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> Close this SSHClient and its underlying L{Transport}.</tt> </tt> +<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -474,92 +486,92 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-71', 'close', 'link-54');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> </tt> -<a name="SSHClient.exec_command"></a><div id="SSHClient.exec_command-def"><a name="L326"></a><tt class="py-lineno">326</tt> <a class="py-toggle" href="#" id="SSHClient.exec_command-toggle" onclick="return toggle('SSHClient.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.exec_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.exec_command-expanded"><a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> Execute a command on the SSH server. A new L{Channel} is opened and</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> the requested command is executed. The command's input and output</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> streams are returned as python C{file}-like objects representing</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> stdin, stdout, and stderr.</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> @param command: the command to execute</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> @type command: str</tt> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-docstring"> @param bufsize: interpreted the same way as by the built-in C{file()} function in python</tt> </tt> -<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"><tt class="py-docstring"> @type bufsize: int</tt> </tt> -<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-docstring"> @return: the stdin, stdout, and stderr of the executing command</tt> </tt> -<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(L{ChannelFile}, L{ChannelFile}, L{ChannelFile})</tt> </tt> -<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server fails to execute the command</tt> </tt> -<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method paramiko.Transport.open_session()=paramiko.Transport-class.html#open_session"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-72', 'open_session', 'link-72');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method paramiko.Channel.exec_command()=paramiko.Channel-class.html#exec_command,Method paramiko.SSHClient.exec_command()=paramiko.SSHClient-class.html#exec_command"><a title="paramiko.Channel.exec_command -paramiko.SSHClient.exec_command" class="py-name" href="#" onclick="return doclink('link-73', 'exec_command', 'link-73');">exec_command</a></tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">stdin</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method paramiko.Channel.makefile()=paramiko.Channel-class.html#makefile"><a title="paramiko.Channel.makefile" class="py-name" href="#" onclick="return doclink('link-74', 'makefile', 'link-74');">makefile</a></tt><tt class="py-op">(</tt><tt class="py-string">'wb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.Channel.makefile" class="py-name" href="#" onclick="return doclink('link-75', 'makefile', 'link-74');">makefile</a></tt><tt class="py-op">(</tt><tt class="py-string">'rb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method paramiko.Channel.makefile_stderr()=paramiko.Channel-class.html#makefile_stderr"><a title="paramiko.Channel.makefile_stderr" class="py-name" href="#" onclick="return doclink('link-76', 'makefile_stderr', 'link-76');">makefile_stderr</a></tt><tt class="py-op">(</tt><tt class="py-string">'rb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">stdin</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt> </tt> -</div><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt> -<a name="SSHClient.invoke_shell"></a><div id="SSHClient.invoke_shell-def"><a name="L349"></a><tt class="py-lineno">349</tt> <a class="py-toggle" href="#" id="SSHClient.invoke_shell-toggle" onclick="return toggle('SSHClient.invoke_shell');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#invoke_shell">invoke_shell</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">term</tt><tt class="py-op">=</tt><tt class="py-string">'vt100'</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.invoke_shell-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.invoke_shell-expanded"><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> Start an interactive shell session on the SSH server. A new L{Channel}</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> is opened and connected to a pseudo-terminal using the requested</tt> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> terminal type and size.</tt> </tt> -<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"> @param term: the terminal type to emulate (for example, C{"vt100"})</tt> </tt> -<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> @type term: str</tt> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> @param width: the width (in characters) of the terminal window</tt> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"> @param height: the height (in characters) of the terminal window</tt> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new channel connected to the remote shell</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server fails to invoke a shell</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-77', 'open_session', 'link-72');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method paramiko.Channel.get_pty()=paramiko.Channel-class.html#get_pty"><a title="paramiko.Channel.get_pty" class="py-name" href="#" onclick="return doclink('link-78', 'get_pty', 'link-78');">get_pty</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method paramiko.Channel.invoke_shell()=paramiko.Channel-class.html#invoke_shell,Method paramiko.SSHClient.invoke_shell()=paramiko.SSHClient-class.html#invoke_shell"><a title="paramiko.Channel.invoke_shell -paramiko.SSHClient.invoke_shell" class="py-name" href="#" onclick="return doclink('link-79', 'invoke_shell', 'link-79');">invoke_shell</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> -</div><a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> </tt> -<a name="SSHClient.open_sftp"></a><div id="SSHClient.open_sftp-def"><a name="L371"></a><tt class="py-lineno">371</tt> <a class="py-toggle" href="#" id="SSHClient.open_sftp-toggle" onclick="return toggle('SSHClient.open_sftp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#open_sftp">open_sftp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.open_sftp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.open_sftp-expanded"><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> Open an SFTP session on the SSH server.</tt> </tt> -<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new SFTP session object</tt> </tt> -<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-75', 'close', 'link-55');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> </tt> +<a name="SSHClient.exec_command"></a><div id="SSHClient.exec_command-def"><a name="L338"></a><tt class="py-lineno">338</tt> <a class="py-toggle" href="#" id="SSHClient.exec_command-toggle" onclick="return toggle('SSHClient.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.exec_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.exec_command-expanded"><a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> Execute a command on the SSH server. A new L{Channel} is opened and</tt> </tt> +<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> the requested command is executed. The command's input and output</tt> </tt> +<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-docstring"> streams are returned as python C{file}-like objects representing</tt> </tt> +<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> stdin, stdout, and stderr.</tt> </tt> +<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> @param command: the command to execute</tt> </tt> +<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> @type command: str</tt> </tt> +<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> @param bufsize: interpreted the same way as by the built-in C{file()} function in python</tt> </tt> +<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> @type bufsize: int</tt> </tt> +<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> @return: the stdin, stdout, and stderr of the executing command</tt> </tt> +<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(L{ChannelFile}, L{ChannelFile}, L{ChannelFile})</tt> </tt> +<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server fails to execute the command</tt> </tt> +<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method paramiko.Transport.open_session()=paramiko.Transport-class.html#open_session"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-76', 'open_session', 'link-76');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method paramiko.Channel.exec_command()=paramiko.Channel-class.html#exec_command,Method paramiko.SSHClient.exec_command()=paramiko.SSHClient-class.html#exec_command"><a title="paramiko.Channel.exec_command +paramiko.SSHClient.exec_command" class="py-name" href="#" onclick="return doclink('link-77', 'exec_command', 'link-77');">exec_command</a></tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">)</tt> </tt> +<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">stdin</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method paramiko.Channel.makefile()=paramiko.Channel-class.html#makefile"><a title="paramiko.Channel.makefile" class="py-name" href="#" onclick="return doclink('link-78', 'makefile', 'link-78');">makefile</a></tt><tt class="py-op">(</tt><tt class="py-string">'wb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="paramiko.Channel.makefile" class="py-name" href="#" onclick="return doclink('link-79', 'makefile', 'link-78');">makefile</a></tt><tt class="py-op">(</tt><tt class="py-string">'rb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method paramiko.Channel.makefile_stderr()=paramiko.Channel-class.html#makefile_stderr"><a title="paramiko.Channel.makefile_stderr" class="py-name" href="#" onclick="return doclink('link-80', 'makefile_stderr', 'link-80');">makefile_stderr</a></tt><tt class="py-op">(</tt><tt class="py-string">'rb'</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">stdin</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt> </tt> +</div><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt> +<a name="SSHClient.invoke_shell"></a><div id="SSHClient.invoke_shell-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="SSHClient.invoke_shell-toggle" onclick="return toggle('SSHClient.invoke_shell');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#invoke_shell">invoke_shell</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">term</tt><tt class="py-op">=</tt><tt class="py-string">'vt100'</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">80</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">24</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.invoke_shell-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.invoke_shell-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> Start an interactive shell session on the SSH server. A new L{Channel}</tt> </tt> +<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> is opened and connected to a pseudo-terminal using the requested</tt> </tt> +<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> terminal type and size.</tt> </tt> +<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> @param term: the terminal type to emulate (for example, C{"vt100"})</tt> </tt> +<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> @type term: str</tt> </tt> +<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> @param width: the width (in characters) of the terminal window</tt> </tt> +<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"><tt class="py-docstring"> @type width: int</tt> </tt> +<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"><tt class="py-docstring"> @param height: the height (in characters) of the terminal window</tt> </tt> +<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"><tt class="py-docstring"> @type height: int</tt> </tt> +<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new channel connected to the remote shell</tt> </tt> +<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server fails to invoke a shell</tt> </tt> <a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method paramiko.Transport.open_sftp_client()=paramiko.Transport-class.html#open_sftp_client"><a title="paramiko.Transport.open_sftp_client" class="py-name" href="#" onclick="return doclink('link-80', 'open_sftp_client', 'link-80');">open_sftp_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> </tt> -<a name="SSHClient.get_transport"></a><div id="SSHClient.get_transport-def"><a name="L380"></a><tt class="py-lineno">380</tt> <a class="py-toggle" href="#" id="SSHClient.get_transport-toggle" onclick="return toggle('SSHClient.get_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#get_transport">get_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient.get_transport-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.get_transport-expanded"><a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> Return the underlying L{Transport} object for this SSH connection.</tt> </tt> -<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> This can be used to perform lower-level tasks, like opening specific</tt> </tt> -<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> kinds of channels.</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> @return: the Transport for this connection</tt> </tt> -<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Transport}</tt> </tt> -<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> </tt> -</div><a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> </tt> -<a name="SSHClient._auth"></a><div id="SSHClient._auth-def"><a name="L391"></a><tt class="py-lineno">391</tt> <a class="py-toggle" href="#" id="SSHClient._auth-toggle" onclick="return toggle('SSHClient._auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#_auth">_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">,</tt> <tt class="py-param">key_filenames</tt><tt class="py-op">,</tt> <tt class="py-param">allow_agent</tt><tt class="py-op">,</tt> <tt class="py-param">look_for_keys</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient._auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient._auth-expanded"><a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-docstring"> Try, in order:</tt> </tt> -<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> - The key passed in, if one was passed in.</tt> </tt> -<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> - Any key we can find through an SSH agent (if allowed).</tt> </tt> -<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> - Any "id_rsa" or "id_dsa" key discoverable in ~/.ssh/ (if allowed).</tt> </tt> -<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> - Plain username/password auth, if a password was given.</tt> </tt> -<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> (The password might be needed to unlock a private key.)</tt> </tt> -<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-81" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-81', 'pkey', 'link-70');">pkey</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-81', 'open_session', 'link-76');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method paramiko.Channel.get_pty()=paramiko.Channel-class.html#get_pty"><a title="paramiko.Channel.get_pty" class="py-name" href="#" onclick="return doclink('link-82', 'get_pty', 'link-82');">get_pty</a></tt><tt class="py-op">(</tt><tt class="py-name">term</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">)</tt> </tt> +<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Method paramiko.Channel.invoke_shell()=paramiko.Channel-class.html#invoke_shell,Method paramiko.SSHClient.invoke_shell()=paramiko.SSHClient-class.html#invoke_shell"><a title="paramiko.Channel.invoke_shell +paramiko.SSHClient.invoke_shell" class="py-name" href="#" onclick="return doclink('link-83', 'invoke_shell', 'link-83');">invoke_shell</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> +</div><a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> </tt> +<a name="SSHClient.open_sftp"></a><div id="SSHClient.open_sftp-def"><a name="L383"></a><tt class="py-lineno">383</tt> <a class="py-toggle" href="#" id="SSHClient.open_sftp-toggle" onclick="return toggle('SSHClient.open_sftp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#open_sftp">open_sftp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.open_sftp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.open_sftp-expanded"><a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> Open an SFTP session on the SSH server.</tt> </tt> +<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new SFTP session object</tt> </tt> +<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> +<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method paramiko.Transport.open_sftp_client()=paramiko.Transport-class.html#open_sftp_client"><a title="paramiko.Transport.open_sftp_client" class="py-name" href="#" onclick="return doclink('link-84', 'open_sftp_client', 'link-84');">open_sftp_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> </tt> +<a name="SSHClient.get_transport"></a><div id="SSHClient.get_transport-def"><a name="L392"></a><tt class="py-lineno">392</tt> <a class="py-toggle" href="#" id="SSHClient.get_transport-toggle" onclick="return toggle('SSHClient.get_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#get_transport">get_transport</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient.get_transport-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient.get_transport-expanded"><a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> Return the underlying L{Transport} object for this SSH connection.</tt> </tt> +<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> This can be used to perform lower-level tasks, like opening specific</tt> </tt> +<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> kinds of channels.</tt> </tt> +<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> @return: the Transport for this connection</tt> </tt> +<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Transport}</tt> </tt> +<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> </tt> +</div><a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> </tt> +<a name="SSHClient._auth"></a><div id="SSHClient._auth-def"><a name="L403"></a><tt class="py-lineno">403</tt> <a class="py-toggle" href="#" id="SSHClient._auth-toggle" onclick="return toggle('SSHClient._auth');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#_auth">_auth</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">,</tt> <tt class="py-param">key_filenames</tt><tt class="py-op">,</tt> <tt class="py-param">allow_agent</tt><tt class="py-op">,</tt> <tt class="py-param">look_for_keys</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient._auth-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient._auth-expanded"><a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"> Try, in order:</tt> </tt> +<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> - The key passed in, if one was passed in.</tt> </tt> +<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> - Any key we can find through an SSH agent (if allowed).</tt> </tt> +<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"> - Any "id_rsa" or "id_dsa" key discoverable in ~/.ssh/ (if allowed).</tt> </tt> +<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> - Plain username/password auth, if a password was given.</tt> </tt> +<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"><tt class="py-docstring"> (The password might be needed to unlock a private key.)</tt> </tt> +<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> </tt> +<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-85" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-85', 'pkey', 'link-74');">pkey</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-86" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -580,17 +592,17 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-82', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying SSH key %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-83', 'pkey', 'link-70');">pkey</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-84', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Method paramiko.Transport.auth_publickey()=paramiko.Transport-class.html#auth_publickey"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-85', 'auth_publickey', 'link-85');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-86', 'pkey', 'link-70');">pkey</a></tt><tt class="py-op">)</tt> </tt> -<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-87" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-87', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> </tt> -<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key_filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key_filenames</tt><tt class="py-op">:</tt> </tt> -<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pkey_class</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-88" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-88', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt id="link-89" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-89', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Class Method paramiko.PKey.from_private_key_file()=paramiko.PKey-class.html#from_private_key_file"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-90', 'from_private_key_file', 'link-90');">from_private_key_file</a></tt><tt class="py-op">(</tt><tt class="py-name">key_filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-91" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-86', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying SSH key %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-87', 'pkey', 'link-74');">pkey</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-88', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method paramiko.Transport.auth_publickey()=paramiko.Transport-class.html#auth_publickey"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-89', 'auth_publickey', 'link-89');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt id="link-90" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-90', 'pkey', 'link-74');">pkey</a></tt><tt class="py-op">)</tt> </tt> +<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-91" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-91', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> </tt> +<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key_filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key_filenames</tt><tt class="py-op">:</tt> </tt> +<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pkey_class</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-92" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-92', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt id="link-93" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-93', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Class Method paramiko.PKey.from_private_key_file()=paramiko.PKey-class.html#from_private_key_file"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-94', 'from_private_key_file', 'link-94');">from_private_key_file</a></tt><tt class="py-op">(</tt><tt class="py-name">key_filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> +<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -611,16 +623,16 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-91', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying key %s from %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-92', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key_filename</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-93', 'auth_publickey', 'link-85');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-94" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-94', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> </tt> -<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">allow_agent</tt><tt class="py-op">:</tt> </tt> -<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-95" class="py-name"><a title="paramiko.Agent" class="py-name" href="#" onclick="return doclink('link-95', 'Agent', 'link-2');">Agent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method paramiko.Agent.get_keys()=paramiko.Agent-class.html#get_keys"><a title="paramiko.Agent.get_keys" class="py-name" href="#" onclick="return doclink('link-96', 'get_keys', 'link-96');">get_keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-95', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying key %s from %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-96', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key_filename</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-97', 'auth_publickey', 'link-89');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-98" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-98', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> </tt> +<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">allow_agent</tt><tt class="py-op">:</tt> </tt> +<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-99" class="py-name"><a title="paramiko.Agent" class="py-name" href="#" onclick="return doclink('link-99', 'Agent', 'link-2');">Agent</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method paramiko.Agent.get_keys()=paramiko.Agent-class.html#get_keys"><a title="paramiko.Agent.get_keys" class="py-name" href="#" onclick="return doclink('link-100', 'get_keys', 'link-100');">get_keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -641,34 +653,34 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-97', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying SSH agent key %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-98', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-99', 'auth_publickey', 'link-85');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-100" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-100', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt> -<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">rsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/id_rsa'</tt><tt class="py-op">)</tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">dsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/id_dsa'</tt><tt class="py-op">)</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-101', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-102', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-comment"># look in ~/ssh/ for windows users:</tt> </tt> -<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">rsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/ssh/id_rsa'</tt><tt class="py-op">)</tt> </tt> -<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">dsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/ssh/id_dsa'</tt><tt class="py-op">)</tt> </tt> -<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-103" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-103', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-104" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-104', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt> -<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">look_for_keys</tt><tt class="py-op">:</tt> </tt> -<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt> -<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keyfiles</tt><tt class="py-op">:</tt> </tt> -<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-105', 'from_private_key_file', 'link-90');">from_private_key_file</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-101', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying SSH agent key %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-102', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-103', 'auth_publickey', 'link-89');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-104" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-104', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> </tt> +<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">rsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/id_rsa'</tt><tt class="py-op">)</tt> </tt> +<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">dsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/.ssh/id_dsa'</tt><tt class="py-op">)</tt> </tt> +<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-105" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-105', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-106', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-comment"># look in ~/ssh/ for windows users:</tt> </tt> +<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">rsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/ssh/id_rsa'</tt><tt class="py-op">)</tt> </tt> +<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">dsa_key</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">'~/ssh/id_dsa'</tt><tt class="py-op">)</tt> </tt> +<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-107', 'RSAKey', 'link-16');">RSAKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">rsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-108', 'DSSKey', 'link-7');">DSSKey</a></tt><tt class="py-op">,</tt> <tt class="py-name">dsa_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> </tt> +<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">look_for_keys</tt><tt class="py-op">:</tt> </tt> +<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">keyfiles</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> </tt> +<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keyfiles</tt><tt class="py-op">:</tt> </tt> +<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">pkey_class</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-109', 'from_private_key_file', 'link-94');">from_private_key_file</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> +<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -689,29 +701,29 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-106', 'DEBUG', 'link-32');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying discovered key %s in %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-107', 'get_fingerprint', 'link-34');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-108', 'auth_publickey', 'link-85');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-109" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-109', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> </tt> -<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method paramiko.Transport.auth_password()=paramiko.Transport-class.html#auth_password"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-110', 'auth_password', 'link-110');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-111" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-111', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt> -<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-comment"># if we got an auth-failed exception earlier, re-raise it</tt> </tt> -<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">saved_exception</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">saved_exception</tt> </tt> -<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-112" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-112', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No authentication methods available'</tt><tt class="py-op">)</tt> </tt> -</div><a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> </tt> -<a name="SSHClient._log"></a><div id="SSHClient._log-def"><a name="L472"></a><tt class="py-lineno">472</tt> <a class="py-toggle" href="#" id="SSHClient._log-toggle" onclick="return toggle('SSHClient._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHClient._log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient._log-expanded"><a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> </tt><script type="text/javascript"> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-110', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Trying discovered key %s in %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.PKey.get_fingerprint" class="py-name" href="#" onclick="return doclink('link-111', 'get_fingerprint', 'link-35');">get_fingerprint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-112', 'auth_publickey', 'link-89');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-113" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-113', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> </tt> +<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method paramiko.Transport.auth_password()=paramiko.Transport-class.html#auth_password"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-114', 'auth_password', 'link-114');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> +<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-115" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-115', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> </tt> +<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-comment"># if we got an auth-failed exception earlier, re-raise it</tt> </tt> +<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">saved_exception</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">saved_exception</tt> </tt> +<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-116" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-116', 'SSHException', 'link-19');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No authentication methods available'</tt><tt class="py-op">)</tt> </tt> +</div><a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> </tt> +<a name="SSHClient._log"></a><div id="SSHClient._log-def"><a name="L484"></a><tt class="py-lineno">484</tt> <a class="py-toggle" href="#" id="SSHClient._log-toggle" onclick="return toggle('SSHClient._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.client.SSHClient-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHClient._log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHClient._log-expanded"><a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -744,7 +756,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.common-module.html b/docs/paramiko.common-module.html index 75d880c..c70d5cc 100644 --- a/docs/paramiko.common-module.html +++ b/docs/paramiko.common-module.html @@ -418,6 +418,13 @@ <a name="OPEN_SUCCEEDED"></a><span class="summary-name">OPEN_SUCCEEDED</span> = <code title="0">0</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> </table> <!-- ==================== VARIABLES DETAILS ==================== --> <a name="section-VariablesDetails"></a> @@ -502,7 +509,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.common-pysrc.html b/docs/paramiko.common-pysrc.html index 31c5a24..de49cba 100644 --- a/docs/paramiko.common-pysrc.html +++ b/docs/paramiko.common-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.common-module.html" onclick="show_private();">Module paramiko.common</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Common constants and global variables.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -671,7 +671,7 @@ paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return docl <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt> <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-comment"># for debugging:</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-29" class="py-name" targets="Variable paramiko.auth_handler.MSG_NAMES=paramiko.auth_handler-module.html#MSG_NAMES,Variable paramiko.channel.MSG_NAMES=paramiko.channel-module.html#MSG_NAMES,Variable paramiko.client.MSG_NAMES=paramiko.client-module.html#MSG_NAMES,Variable paramiko.common.MSG_NAMES=paramiko.common-module.html#MSG_NAMES,Variable paramiko.dsskey.MSG_NAMES=paramiko.dsskey-module.html#MSG_NAMES,Variable paramiko.hostkeys.MSG_NAMES=paramiko.hostkeys-module.html#MSG_NAMES,Variable paramiko.kex_gex.MSG_NAMES=paramiko.kex_gex-module.html#MSG_NAMES,Variable paramiko.kex_group1.MSG_NAMES=paramiko.kex_group1-module.html#MSG_NAMES,Variable paramiko.packet.MSG_NAMES=paramiko.packet-module.html#MSG_NAMES,Variable paramiko.pkey.MSG_NAMES=paramiko.pkey-module.html#MSG_NAMES,Variable paramiko.rsakey.MSG_NAMES=paramiko.rsakey-module.html#MSG_NAMES,Variable paramiko.server.MSG_NAMES=paramiko.server-module.html#MSG_NAMES,Variable paramiko.sftp.MSG_NAMES=paramiko.sftp-module.html#MSG_NAMES,Variable paramiko.sftp_attr.MSG_NAMES=paramiko.sftp_attr-module.html#MSG_NAMES,Variable paramiko.sftp_client.MSG_NAMES=paramiko.sftp_client-module.html#MSG_NAMES,Variable paramiko.sftp_file.MSG_NAMES=paramiko.sftp_file-module.html#MSG_NAMES,Variable paramiko.sftp_handle.MSG_NAMES=paramiko.sftp_handle-module.html#MSG_NAMES,Variable paramiko.sftp_server.MSG_NAMES=paramiko.sftp_server-module.html#MSG_NAMES,Variable paramiko.sftp_si.MSG_NAMES=paramiko.sftp_si-module.html#MSG_NAMES,Variable paramiko.transport.MSG_NAMES=paramiko.transport-module.html#MSG_NAMES,Variable paramiko.util.MSG_NAMES=paramiko.util-module.html#MSG_NAMES"><a title="paramiko.auth_handler.MSG_NAMES +<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt id="link-29" class="py-name" targets="Variable paramiko.auth_handler.MSG_NAMES=paramiko.auth_handler-module.html#MSG_NAMES,Variable paramiko.channel.MSG_NAMES=paramiko.channel-module.html#MSG_NAMES,Variable paramiko.client.MSG_NAMES=paramiko.client-module.html#MSG_NAMES,Variable paramiko.common.MSG_NAMES=paramiko.common-module.html#MSG_NAMES,Variable paramiko.dsskey.MSG_NAMES=paramiko.dsskey-module.html#MSG_NAMES,Variable paramiko.hostkeys.MSG_NAMES=paramiko.hostkeys-module.html#MSG_NAMES,Variable paramiko.kex_gex.MSG_NAMES=paramiko.kex_gex-module.html#MSG_NAMES,Variable paramiko.kex_group1.MSG_NAMES=paramiko.kex_group1-module.html#MSG_NAMES,Variable paramiko.packet.MSG_NAMES=paramiko.packet-module.html#MSG_NAMES,Variable paramiko.pkey.MSG_NAMES=paramiko.pkey-module.html#MSG_NAMES,Variable paramiko.rsakey.MSG_NAMES=paramiko.rsakey-module.html#MSG_NAMES,Variable paramiko.server.MSG_NAMES=paramiko.server-module.html#MSG_NAMES,Variable paramiko.sftp.MSG_NAMES=paramiko.sftp-module.html#MSG_NAMES,Variable paramiko.sftp_attr.MSG_NAMES=paramiko.sftp_attr-module.html#MSG_NAMES,Variable paramiko.sftp_client.MSG_NAMES=paramiko.sftp_client-module.html#MSG_NAMES,Variable paramiko.sftp_file.MSG_NAMES=paramiko.sftp_file-module.html#MSG_NAMES,Variable paramiko.sftp_handle.MSG_NAMES=paramiko.sftp_handle-module.html#MSG_NAMES,Variable paramiko.sftp_server.MSG_NAMES=paramiko.sftp_server-module.html#MSG_NAMES,Variable paramiko.sftp_si.MSG_NAMES=paramiko.sftp_si-module.html#MSG_NAMES,Variable paramiko.transport.MSG_NAMES=paramiko.transport-module.html#MSG_NAMES,Variable paramiko.util.MSG_NAMES=paramiko.util-module.html#MSG_NAMES"><a title="paramiko.auth_handler.MSG_NAMES paramiko.channel.MSG_NAMES paramiko.client.MSG_NAMES paramiko.common.MSG_NAMES @@ -1289,7 +1289,7 @@ paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return docl <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt> <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-comment"># authentication request return codes:</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-58" class="py-name" targets="Variable paramiko.auth_handler.AUTH_SUCCESSFUL=paramiko.auth_handler-module.html#AUTH_SUCCESSFUL,Variable paramiko.channel.AUTH_SUCCESSFUL=paramiko.channel-module.html#AUTH_SUCCESSFUL,Variable paramiko.client.AUTH_SUCCESSFUL=paramiko.client-module.html#AUTH_SUCCESSFUL,Variable paramiko.common.AUTH_SUCCESSFUL=paramiko.common-module.html#AUTH_SUCCESSFUL,Variable paramiko.dsskey.AUTH_SUCCESSFUL=paramiko.dsskey-module.html#AUTH_SUCCESSFUL,Variable paramiko.hostkeys.AUTH_SUCCESSFUL=paramiko.hostkeys-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_gex.AUTH_SUCCESSFUL=paramiko.kex_gex-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_group1.AUTH_SUCCESSFUL=paramiko.kex_group1-module.html#AUTH_SUCCESSFUL,Variable paramiko.packet.AUTH_SUCCESSFUL=paramiko.packet-module.html#AUTH_SUCCESSFUL,Variable paramiko.pkey.AUTH_SUCCESSFUL=paramiko.pkey-module.html#AUTH_SUCCESSFUL,Variable paramiko.rsakey.AUTH_SUCCESSFUL=paramiko.rsakey-module.html#AUTH_SUCCESSFUL,Variable paramiko.server.AUTH_SUCCESSFUL=paramiko.server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp.AUTH_SUCCESSFUL=paramiko.sftp-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_attr.AUTH_SUCCESSFUL=paramiko.sftp_attr-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_client.AUTH_SUCCESSFUL=paramiko.sftp_client-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_file.AUTH_SUCCESSFUL=paramiko.sftp_file-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_handle.AUTH_SUCCESSFUL=paramiko.sftp_handle-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_server.AUTH_SUCCESSFUL=paramiko.sftp_server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_si.AUTH_SUCCESSFUL=paramiko.sftp_si-module.html#AUTH_SUCCESSFUL,Variable paramiko.transport.AUTH_SUCCESSFUL=paramiko.transport-module.html#AUTH_SUCCESSFUL,Variable paramiko.util.AUTH_SUCCESSFUL=paramiko.util-module.html#AUTH_SUCCESSFUL"><a title="paramiko.auth_handler.AUTH_SUCCESSFUL +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt id="link-58" class="py-name" targets="Variable paramiko.auth_handler.AUTH_SUCCESSFUL=paramiko.auth_handler-module.html#AUTH_SUCCESSFUL,Variable paramiko.channel.AUTH_SUCCESSFUL=paramiko.channel-module.html#AUTH_SUCCESSFUL,Variable paramiko.client.AUTH_SUCCESSFUL=paramiko.client-module.html#AUTH_SUCCESSFUL,Variable paramiko.common.AUTH_SUCCESSFUL=paramiko.common-module.html#AUTH_SUCCESSFUL,Variable paramiko.dsskey.AUTH_SUCCESSFUL=paramiko.dsskey-module.html#AUTH_SUCCESSFUL,Variable paramiko.hostkeys.AUTH_SUCCESSFUL=paramiko.hostkeys-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_gex.AUTH_SUCCESSFUL=paramiko.kex_gex-module.html#AUTH_SUCCESSFUL,Variable paramiko.kex_group1.AUTH_SUCCESSFUL=paramiko.kex_group1-module.html#AUTH_SUCCESSFUL,Variable paramiko.packet.AUTH_SUCCESSFUL=paramiko.packet-module.html#AUTH_SUCCESSFUL,Variable paramiko.pkey.AUTH_SUCCESSFUL=paramiko.pkey-module.html#AUTH_SUCCESSFUL,Variable paramiko.rsakey.AUTH_SUCCESSFUL=paramiko.rsakey-module.html#AUTH_SUCCESSFUL,Variable paramiko.server.AUTH_SUCCESSFUL=paramiko.server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp.AUTH_SUCCESSFUL=paramiko.sftp-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_attr.AUTH_SUCCESSFUL=paramiko.sftp_attr-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_client.AUTH_SUCCESSFUL=paramiko.sftp_client-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_file.AUTH_SUCCESSFUL=paramiko.sftp_file-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_handle.AUTH_SUCCESSFUL=paramiko.sftp_handle-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_server.AUTH_SUCCESSFUL=paramiko.sftp_server-module.html#AUTH_SUCCESSFUL,Variable paramiko.sftp_si.AUTH_SUCCESSFUL=paramiko.sftp_si-module.html#AUTH_SUCCESSFUL,Variable paramiko.transport.AUTH_SUCCESSFUL=paramiko.transport-module.html#AUTH_SUCCESSFUL,Variable paramiko.util.AUTH_SUCCESSFUL=paramiko.util-module.html#AUTH_SUCCESSFUL"><a title="paramiko.auth_handler.AUTH_SUCCESSFUL paramiko.channel.AUTH_SUCCESSFUL paramiko.client.AUTH_SUCCESSFUL paramiko.common.AUTH_SUCCESSFUL @@ -1353,7 +1353,7 @@ paramiko.util.AUTH_FAILED" class="py-name" href="#" onclick="return doclink('lin <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt> <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt> <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-comment"># channel request failed reasons:</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-op">(</tt><tt id="link-61" class="py-name" targets="Variable paramiko.auth_handler.OPEN_SUCCEEDED=paramiko.auth_handler-module.html#OPEN_SUCCEEDED,Variable paramiko.channel.OPEN_SUCCEEDED=paramiko.channel-module.html#OPEN_SUCCEEDED,Variable paramiko.client.OPEN_SUCCEEDED=paramiko.client-module.html#OPEN_SUCCEEDED,Variable paramiko.common.OPEN_SUCCEEDED=paramiko.common-module.html#OPEN_SUCCEEDED,Variable paramiko.dsskey.OPEN_SUCCEEDED=paramiko.dsskey-module.html#OPEN_SUCCEEDED,Variable paramiko.hostkeys.OPEN_SUCCEEDED=paramiko.hostkeys-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_gex.OPEN_SUCCEEDED=paramiko.kex_gex-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_group1.OPEN_SUCCEEDED=paramiko.kex_group1-module.html#OPEN_SUCCEEDED,Variable paramiko.packet.OPEN_SUCCEEDED=paramiko.packet-module.html#OPEN_SUCCEEDED,Variable paramiko.pkey.OPEN_SUCCEEDED=paramiko.pkey-module.html#OPEN_SUCCEEDED,Variable paramiko.rsakey.OPEN_SUCCEEDED=paramiko.rsakey-module.html#OPEN_SUCCEEDED,Variable paramiko.server.OPEN_SUCCEEDED=paramiko.server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp.OPEN_SUCCEEDED=paramiko.sftp-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_attr.OPEN_SUCCEEDED=paramiko.sftp_attr-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_client.OPEN_SUCCEEDED=paramiko.sftp_client-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_file.OPEN_SUCCEEDED=paramiko.sftp_file-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_handle.OPEN_SUCCEEDED=paramiko.sftp_handle-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_server.OPEN_SUCCEEDED=paramiko.sftp_server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_si.OPEN_SUCCEEDED=paramiko.sftp_si-module.html#OPEN_SUCCEEDED,Variable paramiko.transport.OPEN_SUCCEEDED=paramiko.transport-module.html#OPEN_SUCCEEDED,Variable paramiko.util.OPEN_SUCCEEDED=paramiko.util-module.html#OPEN_SUCCEEDED"><a title="paramiko.auth_handler.OPEN_SUCCEEDED +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-op">(</tt><tt id="link-61" class="py-name" targets="Variable paramiko.auth_handler.OPEN_SUCCEEDED=paramiko.auth_handler-module.html#OPEN_SUCCEEDED,Variable paramiko.channel.OPEN_SUCCEEDED=paramiko.channel-module.html#OPEN_SUCCEEDED,Variable paramiko.client.OPEN_SUCCEEDED=paramiko.client-module.html#OPEN_SUCCEEDED,Variable paramiko.common.OPEN_SUCCEEDED=paramiko.common-module.html#OPEN_SUCCEEDED,Variable paramiko.dsskey.OPEN_SUCCEEDED=paramiko.dsskey-module.html#OPEN_SUCCEEDED,Variable paramiko.hostkeys.OPEN_SUCCEEDED=paramiko.hostkeys-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_gex.OPEN_SUCCEEDED=paramiko.kex_gex-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_group1.OPEN_SUCCEEDED=paramiko.kex_group1-module.html#OPEN_SUCCEEDED,Variable paramiko.packet.OPEN_SUCCEEDED=paramiko.packet-module.html#OPEN_SUCCEEDED,Variable paramiko.pkey.OPEN_SUCCEEDED=paramiko.pkey-module.html#OPEN_SUCCEEDED,Variable paramiko.rsakey.OPEN_SUCCEEDED=paramiko.rsakey-module.html#OPEN_SUCCEEDED,Variable paramiko.server.OPEN_SUCCEEDED=paramiko.server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp.OPEN_SUCCEEDED=paramiko.sftp-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_attr.OPEN_SUCCEEDED=paramiko.sftp_attr-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_client.OPEN_SUCCEEDED=paramiko.sftp_client-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_file.OPEN_SUCCEEDED=paramiko.sftp_file-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_handle.OPEN_SUCCEEDED=paramiko.sftp_handle-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_server.OPEN_SUCCEEDED=paramiko.sftp_server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_si.OPEN_SUCCEEDED=paramiko.sftp_si-module.html#OPEN_SUCCEEDED,Variable paramiko.transport.OPEN_SUCCEEDED=paramiko.transport-module.html#OPEN_SUCCEEDED,Variable paramiko.util.OPEN_SUCCEEDED=paramiko.util-module.html#OPEN_SUCCEEDED"><a title="paramiko.auth_handler.OPEN_SUCCEEDED paramiko.channel.OPEN_SUCCEEDED paramiko.client.OPEN_SUCCEEDED paramiko.common.OPEN_SUCCEEDED @@ -1554,7 +1554,7 @@ paramiko.util.DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE" class="py-name" href="# <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-70" class="py-name" targets="Module paramiko.rng=paramiko.rng-module.html"><a title="paramiko.rng" class="py-name" href="#" onclick="return doclink('link-70', 'rng', 'link-70');">rng</a></tt> <tt class="py-keyword">import</tt> <tt id="link-71" class="py-name" targets="Class paramiko.rng.StrongLockingRandomPool=paramiko.rng.StrongLockingRandomPool-class.html"><a title="paramiko.rng.StrongLockingRandomPool" class="py-name" href="#" onclick="return doclink('link-71', 'StrongLockingRandomPool', 'link-71');">StrongLockingRandomPool</a></tt> </tt> <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-comment"># keep a crypto-strong PRNG nearby</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-72" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt id="link-72" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -1883,7 +1883,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:21 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.compress-module.html b/docs/paramiko.compress-module.html index 2c8066b..295c1b4 100644 --- a/docs/paramiko.compress-module.html +++ b/docs/paramiko.compress-module.html @@ -79,6 +79,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -105,7 +121,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.compress-pysrc.html b/docs/paramiko.compress-pysrc.html index 47f4de1..0bd2dcd 100644 --- a/docs/paramiko.compress-pysrc.html +++ b/docs/paramiko.compress-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.compress-module.html" onclick="show_private();">Module paramiko.compress</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">Compression implementations for a Transport.</tt> </tt> <a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -126,7 +126,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:34 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.compress.ZlibCompressor-class.html b/docs/paramiko.compress.ZlibCompressor-class.html index a908778..c2a563c 100644 --- a/docs/paramiko.compress.ZlibCompressor-class.html +++ b/docs/paramiko.compress.ZlibCompressor-class.html @@ -108,6 +108,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -115,7 +116,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -197,7 +200,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.compress.ZlibDecompressor-class.html b/docs/paramiko.compress.ZlibDecompressor-class.html index 2b17b39..12ae537 100644 --- a/docs/paramiko.compress.ZlibDecompressor-class.html +++ b/docs/paramiko.compress.ZlibDecompressor-class.html @@ -108,6 +108,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -115,7 +116,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -197,7 +200,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.config-module.html b/docs/paramiko.config-module.html index 36e5820..bc74169 100644 --- a/docs/paramiko.config-module.html +++ b/docs/paramiko.config-module.html @@ -57,6 +57,22 @@ <p><a href="paramiko.SSHConfig-class.html" class="link">SSHConfig</a>.</p> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -83,7 +99,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.config-pysrc.html b/docs/paramiko.config-pysrc.html index d832929..2af6b96 100644 --- a/docs/paramiko.config-pysrc.html +++ b/docs/paramiko.config-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.config-module.html" onclick="show_private();">Module paramiko.config</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{SSHConfig}.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -82,28 +82,28 @@ <a name="SSHConfig"></a><div id="SSHConfig-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="SSHConfig-toggle" onclick="return toggle('SSHConfig');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.config.SSHConfig-class.html">SSHConfig</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SSHConfig-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SSHConfig-expanded"><a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> Representation of config information as stored in the format used by</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> OpenSSH. Queries can be made via L{lookup}. The format is described in</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> OpenSSH's C{ssh_config} man page. This class is provided primarily as a</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> convenience to posix users (since the OpenSSH format is a de-facto </tt> </tt> +<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> OpenSSH. Queries can be made via L{lookup}. The format is described in</tt> </tt> +<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> OpenSSH's C{ssh_config} man page. This class is provided primarily as a</tt> </tt> +<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> convenience to posix users (since the OpenSSH format is a de-facto</tt> </tt> <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> standard on posix) but should work fine on Windows too.</tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.6</tt> </tt> <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> <a name="SSHConfig.__init__"></a><div id="SSHConfig.__init__-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="SSHConfig.__init__-toggle" onclick="return toggle('SSHConfig.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.config.SSHConfig-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SSHConfig.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHConfig.__init__-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> Create a new OpenSSH config object.</tt> </tt> <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-op">{</tt> <tt class="py-string">'host'</tt><tt class="py-op">:</tt> <tt class="py-string">'*'</tt> <tt class="py-op">}</tt> <tt class="py-op">]</tt> </tt> -</div><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt> +</div><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt> <a name="SSHConfig.parse"></a><div id="SSHConfig.parse-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="SSHConfig.parse-toggle" onclick="return toggle('SSHConfig.parse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.config.SSHConfig-class.html#parse">parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">file_obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SSHConfig.parse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHConfig.parse-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> Read an OpenSSH config from the given file object.</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> +<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> @param file_obj: a file-like object to read the config file from</tt> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> @type file_obj: file</tt> </tt> <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt id="link-0" class="py-name" targets="Module paramiko.config=paramiko.config-module.html"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-0', 'config', 'link-0');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">configs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">file_obj</tt><tt class="py-op">:</tt> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">rstrip</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'#'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -113,7 +113,7 @@ <a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-comment"># find first whitespace, and split there</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isspace</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -122,44 +122,49 @@ <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lstrip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-string">'host'</tt><tt class="py-op">:</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-comment"># do we have a pre-existing host config to append to?</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">matches</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt id="link-1" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-1', 'config', 'link-0');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">matches</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt id="link-2" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-2', 'config', 'link-0');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-string">'host'</tt><tt class="py-op">:</tt> <tt class="py-name">value</tt> <tt class="py-op">}</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-3', 'config', 'link-0');">config</a></tt><tt class="py-op">)</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt id="link-4" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-4', 'config', 'link-0');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> -</div><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt> -<a name="SSHConfig.lookup"></a><div id="SSHConfig.lookup-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="SSHConfig.lookup-toggle" onclick="return toggle('SSHConfig.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.config.SSHConfig-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SSHConfig.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHConfig.lookup-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> Return a dict of config options for a given hostname.</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> The host-matching rules of OpenSSH's C{ssh_config} man page are used,</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> which means that all configuration options from matching host</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> specifications are merged, with more specific hostmasks taking</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> precedence. In other words, if C{"Port"} is set under C{"Host *"}</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> and also C{"Host *.example.com"}, and the lookup is for</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> C{"ssh.example.com"}, then the port entry for C{"Host *.example.com"}</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> will win out.</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> The keys in the returned dict are all normalized to lowercase (look for</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> C{"port"}, not C{"Port"}. No other processing is done to the keys or</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> values.</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname to lookup</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt> <tt class="py-keyword">if</tt> <tt class="py-name">fnmatch</tt><tt class="py-op">.</tt><tt class="py-name">fnmatch</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-comment"># sort in order of shortest match (usually '*') to longest</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">matches</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">:</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">matches</tt><tt class="py-op">:</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> -</div></div><a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt><script type="text/javascript"> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">configs</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-comment"># the value may be multiple hosts, space-delimited</tt> </tt> +<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">host</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># do we have a pre-existing host config to append to?</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">host</tt><tt class="py-op">]</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">matches</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">configs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">matches</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt id="link-0" class="py-name" targets="Module paramiko.config=paramiko.config-module.html"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-0', 'config', 'link-0');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-string">'host'</tt><tt class="py-op">:</tt> <tt class="py-name">host</tt> <tt class="py-op">}</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-1" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-1', 'config', 'link-0');">config</a></tt><tt class="py-op">)</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">configs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-2" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-2', 'config', 'link-0');">config</a></tt><tt class="py-op">)</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-3" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-3', 'config', 'link-0');">config</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">configs</tt><tt class="py-op">:</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-4" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-4', 'config', 'link-0');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> +</div><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> +<a name="SSHConfig.lookup"></a><div id="SSHConfig.lookup-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="SSHConfig.lookup-toggle" onclick="return toggle('SSHConfig.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.config.SSHConfig-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SSHConfig.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SSHConfig.lookup-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> Return a dict of config options for a given hostname.</tt> </tt> +<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> The host-matching rules of OpenSSH's C{ssh_config} man page are used,</tt> </tt> +<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> which means that all configuration options from matching host</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> specifications are merged, with more specific hostmasks taking</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> precedence. In other words, if C{"Port"} is set under C{"Host *"}</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> and also C{"Host *.example.com"}, and the lookup is for</tt> </tt> +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> C{"ssh.example.com"}, then the port entry for C{"Host *.example.com"}</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> will win out.</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> The keys in the returned dict are all normalized to lowercase (look for</tt> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> C{"port"}, not C{"Port"}. No other processing is done to the keys or</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> values.</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname to lookup</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">matches</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_config</tt> <tt class="py-keyword">if</tt> <tt class="py-name">fnmatch</tt><tt class="py-op">.</tt><tt class="py-name">fnmatch</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-comment"># sort in order of shortest match (usually '*') to longest</tt> </tt> +<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">matches</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">:</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">matches</tt><tt class="py-op">:</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">ret</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> +</div></div><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -192,7 +197,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:32 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.dsskey-module.html b/docs/paramiko.dsskey-module.html index 60963b7..1c76d4b 100644 --- a/docs/paramiko.dsskey-module.html +++ b/docs/paramiko.dsskey-module.html @@ -415,6 +415,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -502,7 +509,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.dsskey-pysrc.html b/docs/paramiko.dsskey-pysrc.html index 1346b99..6a254ac 100644 --- a/docs/paramiko.dsskey-pysrc.html +++ b/docs/paramiko.dsskey-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.dsskey-module.html" onclick="show_private();">Module paramiko.dsskey</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{DSSKey}</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -140,7 +140,7 @@ paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> <tt class="py-op">*</tt> <tt class="py-number">37</tt> <tt class="py-op">+</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">)</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> <tt class="py-op">*</tt> <tt class="py-number">37</tt> <tt class="py-op">+</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-comment"># h might be a long by now...</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt> </div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt> <a name="DSSKey.get_name"></a><div id="DSSKey.get_name-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="DSSKey.get_name-toggle" onclick="return toggle('DSSKey.get_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#get_name">get_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="DSSKey.get_name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey.get_name-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'ssh-dss'</tt> </tt> @@ -152,55 +152,55 @@ paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link </div><div id="DSSKey.can_sign-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey.can_sign-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt> </div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt> <a name="DSSKey.sign_ssh_data"></a><div id="DSSKey.sign_ssh_data-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="DSSKey.sign_ssh_data-toggle" onclick="return toggle('DSSKey.sign_ssh_data');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#sign_ssh_data">sign_ssh_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">rpool</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="DSSKey.sign_ssh_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey.sign_ssh_data-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="DSSKey.sign_ssh_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey.sign_ssh_data-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-34', 'new', 'link-34');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">dss</tt> <tt class="py-op">=</tt> <tt class="py-name">DSA</tt><tt class="py-op">.</tt><tt class="py-name">construct</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-comment"># generate a suitable k</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">qsize</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-34', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-35', 'deflate_long', 'link-35');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">qsize</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-35', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-36', 'deflate_long', 'link-36');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-36', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-37', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">rpool</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-38', 'get_bytes', 'link-38');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">qsize</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-37', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-38', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">rpool</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-39', 'get_bytes', 'link-39');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">qsize</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">k</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">dss</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt id="link-39" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-39', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-40', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-41', 'Message', 'link-9');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-42', 'add_string', 'link-28');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'ssh-dss'</tt><tt class="py-op">)</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">dss</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt id="link-40" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-40', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-41', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-42', 'Message', 'link-9');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-43', 'add_string', 'link-28');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'ssh-dss'</tt><tt class="py-op">)</tt> </tt> <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-comment"># apparently, in rare cases, r or s may be shorter than 20 bytes!</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">rstr</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-43', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-44', 'deflate_long', 'link-35');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">sstr</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-45', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-46', 'deflate_long', 'link-35');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">rstr</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-44', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-45', 'deflate_long', 'link-36');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">sstr</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-46', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-47', 'deflate_long', 'link-36');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> <a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">rstr</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> <a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">rstr</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">20</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">rstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">rstr</tt> </tt> <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">sstr</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">sstr</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">20</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">sstr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">sstr</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-47', 'add_string', 'link-28');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">rstr</tt> <tt class="py-op">+</tt> <tt class="py-name">sstr</tt><tt class="py-op">)</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-48', 'add_string', 'link-28');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">rstr</tt> <tt class="py-op">+</tt> <tt class="py-name">sstr</tt><tt class="py-op">)</tt> </tt> <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt> </tt> </div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> <a name="DSSKey.verify_ssh_sig"></a><div id="DSSKey.verify_ssh_sig-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="DSSKey.verify_ssh_sig-toggle" onclick="return toggle('DSSKey.verify_ssh_sig');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#verify_ssh_sig">verify_ssh_sig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="DSSKey.verify_ssh_sig-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey.verify_ssh_sig-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">40</tt><tt class="py-op">:</tt> </tt> <a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-comment"># spies.com bug: signature has no header</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-48', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-49', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">kind</tt> <tt class="py-op">!=</tt> <tt class="py-string">'ssh-dss'</tt><tt class="py-op">:</tt> </tt> <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-49', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-50', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> </tt> <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># pull out (r, s) which are NOT encoded as mpints</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">sigR</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-50', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-51', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">20</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">sigS</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-52', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-53', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">[</tt><tt class="py-number">20</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">sigM</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-54', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-55', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">sigR</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-51', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-52', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">20</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">sigS</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-53', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-54', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">[</tt><tt class="py-number">20</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">sigM</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-55', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-56', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-57', 'new', 'link-34');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt> <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">dss</tt> <tt class="py-op">=</tt> <tt class="py-name">DSA</tt><tt class="py-op">.</tt><tt class="py-name">construct</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">dss</tt><tt class="py-op">.</tt><tt class="py-name">verify</tt><tt class="py-op">(</tt><tt class="py-name">sigM</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">sigR</tt><tt class="py-op">,</tt> <tt class="py-name">sigS</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> </div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt> <a name="DSSKey._encode_key"></a><div id="DSSKey._encode_key-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="DSSKey._encode_key-toggle" onclick="return toggle('DSSKey._encode_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#_encode_key">_encode_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="DSSKey._encode_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey._encode_key-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-56', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not enough key information'</tt><tt class="py-op">)</tt> </tt> +<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-58" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-58', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not enough key information'</tt><tt class="py-op">)</tt> </tt> <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> <tt class="py-op">]</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-57', 'BER', 'link-12');">BER</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-58', 'encode', 'link-58');">encode</a></tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-59" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-59', 'BERException', 'link-13');">BERException</a></tt><tt class="py-op">:</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-60" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-60', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to create ber encoding of key'</tt><tt class="py-op">)</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-59', 'BER', 'link-12');">BER</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-60', 'encode', 'link-60');">encode</a></tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-61" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-61', 'BERException', 'link-13');">BERException</a></tt><tt class="py-op">:</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-62" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-62', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to create ber encoding of key'</tt><tt class="py-op">)</tt> </tt> <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt> </div><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt> <a name="DSSKey.write_private_key_file"></a><div id="DSSKey.write_private_key_file-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="DSSKey.write_private_key_file-toggle" onclick="return toggle('DSSKey.write_private_key_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#write_private_key_file">write_private_key_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -222,7 +222,7 @@ paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick <a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> @return: new private key</tt> </tt> <a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{DSSKey}</tt> </tt> <a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt id="link-61" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt id="link-63" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -242,9 +242,9 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-61', 'randpool', 'link-61');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-62', 'stir', 'link-62');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">dsa</tt> <tt class="py-op">=</tt> <tt class="py-name">DSA</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Static Method paramiko.DSSKey.generate()=paramiko.DSSKey-class.html#generate,Static Method paramiko.RSAKey.generate()=paramiko.RSAKey-class.html#generate"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-63', 'generate', 'link-63');">generate</a></tt><tt class="py-op">(</tt><tt class="py-name">bits</tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-63', 'randpool', 'link-63');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-64', 'stir', 'link-64');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">dsa</tt> <tt class="py-op">=</tt> <tt class="py-name">DSA</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Static Method paramiko.DSSKey.generate()=paramiko.DSSKey-class.html#generate,Static Method paramiko.RSAKey.generate()=paramiko.RSAKey-class.html#generate"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-65', 'generate', 'link-65');">generate</a></tt><tt class="py-op">(</tt><tt class="py-name">bits</tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -264,18 +264,18 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-64', 'randpool', 'link-61');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-65', 'get_bytes', 'link-38');">get_bytes</a></tt><tt class="py-op">,</tt> <tt class="py-name">progress_func</tt><tt class="py-op">)</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name" targets="Class paramiko.DSSKey=paramiko.DSSKey-class.html"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-66', 'DSSKey', 'link-66');">DSSKey</a></tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-66', 'randpool', 'link-63');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-67', 'get_bytes', 'link-39');">get_bytes</a></tt><tt class="py-op">,</tt> <tt class="py-name">progress_func</tt><tt class="py-op">)</tt> </tt> +<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Class paramiko.DSSKey=paramiko.DSSKey-class.html"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-68', 'DSSKey', 'link-68');">DSSKey</a></tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">dsa</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> </tt> <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt id="link-67" class="py-name"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-67', 'generate', 'link-63');">generate</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-68" class="py-name"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-68', 'generate', 'link-63');">generate</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt id="link-69" class="py-name"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-69', 'generate', 'link-65');">generate</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-70', 'generate', 'link-65');">generate</a></tt><tt class="py-op">)</tt> </tt> <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt> <a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt> <a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt> <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> <a name="DSSKey._from_private_key_file"></a><div id="DSSKey._from_private_key_file-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="DSSKey._from_private_key_file-toggle" onclick="return toggle('DSSKey._from_private_key_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#_from_private_key_file">_from_private_key_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="DSSKey._from_private_key_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey._from_private_key_file-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_private_key_file</tt><tt class="py-op">(</tt><tt class="py-string">'DSA'</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> @@ -287,19 +287,19 @@ paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link </div><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt> <a name="DSSKey._decode_key"></a><div id="DSSKey._decode_key-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="DSSKey._decode_key-toggle" onclick="return toggle('DSSKey._decode_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.dsskey.DSSKey-class.html#_decode_key">_decode_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="DSSKey._decode_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DSSKey._decode_key-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-comment"># private key file contains:</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># DSAPrivateKey = { version = 0, p, q, g, y, x }</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-69', 'BER', 'link-12');">BER</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-70', 'decode', 'link-70');">decode</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-71" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-71', 'BERException', 'link-13');">BERException</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-72" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-72', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to parse key file: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-comment"># DSAPrivateKey = { version = 0, p, q, g, y, x }</tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-71', 'BER', 'link-12');">BER</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-72', 'decode', 'link-72');">decode</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-73" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-73', 'BERException', 'link-13');">BERException</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> +<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-74" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-74', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to parse key file: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">6</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-73" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-73', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'not a valid DSA private key file (bad ber encoding)'</tt><tt class="py-op">)</tt> </tt> +<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-75" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-75', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'not a valid DSA private key file (bad ber encoding)'</tt><tt class="py-op">)</tt> </tt> <a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> <a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt> <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt> <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">]</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-74', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-75', 'bit_length', 'link-26');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> +<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-76', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-77', 'bit_length', 'link-26');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -333,7 +333,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:34 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.file-module.html b/docs/paramiko.file-module.html index cd4f9e7..63b95e6 100644 --- a/docs/paramiko.file-module.html +++ b/docs/paramiko.file-module.html @@ -56,6 +56,22 @@ <h1 class="epydoc">Module file</h1><p class="nomargin-top"><span class="codelink"><a href="paramiko.file-pysrc.html">source code</a></span></p> <p>BufferedFile.</p> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -82,7 +98,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.file-pysrc.html b/docs/paramiko.file-pysrc.html index 0679425..2faa07f 100644 --- a/docs/paramiko.file-pysrc.html +++ b/docs/paramiko.file-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.file-module.html" onclick="show_private();">Module paramiko.file</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">BufferedFile.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -108,11 +108,11 @@ <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_at_trailing_cr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-comment"># pos - position within the file, according to the user</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># realpos - position according the OS</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># (these may be different because we buffer for line reading)</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_realpos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-comment"># realpos - position according the OS</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-comment"># (these may be different because we buffer for line reading)</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_realpos</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-comment"># size only matters for seekable files</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> </div><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> <a name="BufferedFile.__del__"></a><div id="BufferedFile.__del__-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="BufferedFile.__del__-toggle" onclick="return toggle('BufferedFile.__del__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.file.BufferedFile-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BufferedFile.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BufferedFile.__del__-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close @@ -193,7 +193,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'File is not open for reading'</tt><tt class="py-op">)</tt> </tt> <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-comment"># go for broke</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt> </tt> <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> @@ -248,7 +248,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-comment"># it's almost silly how complex this function is.</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> +<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'File is closed'</tt><tt class="py-op">)</tt> </tt> <a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="paramiko.BufferedFile.FLAG_READ" class="py-name" href="#" onclick="return doclink('link-18', 'FLAG_READ', 'link-4');">FLAG_READ</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'File not open for reading'</tt><tt class="py-op">)</tt> </tt> @@ -256,19 +256,19 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_at_trailing_cr</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="paramiko.BufferedFile.FLAG_UNIVERSAL_NEWLINE" class="py-name" href="#" onclick="return doclink('link-19', 'FLAG_UNIVERSAL_NEWLINE', 'link-10');">FLAG_UNIVERSAL_NEWLINE</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-comment"># edge case: the newline may be '\r\n' and we may have read</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># only the first '\r' last time.</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\n'</tt><tt class="py-op">:</tt> </tt> +<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-comment"># only the first '\r' last time.</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\n'</tt><tt class="py-op">:</tt> </tt> <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_record_newline</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">)</tt> </tt> <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_record_newline</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">)</tt> </tt> <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_at_trailing_cr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-comment"># check size before looking for a linefeed, in case we already have</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># enough.</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-comment"># enough.</tt> </tt> +<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> <a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-comment"># truncate line and return</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">size</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-name">size</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt> </tt> <a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt> <a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">line</tt> </tt> @@ -288,7 +288,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">+=</tt> <tt class="py-name">new_data</tt> </tt> <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_realpos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">new_data</tt><tt class="py-op">)</tt> </tt> <a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-comment"># find the newline</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">pos</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> <a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="paramiko.BufferedFile.FLAG_UNIVERSAL_NEWLINE" class="py-name" href="#" onclick="return doclink('link-21', 'FLAG_UNIVERSAL_NEWLINE', 'link-10');">FLAG_UNIVERSAL_NEWLINE</a></tt><tt class="py-op">:</tt> </tt> <a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">rpos</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">)</tt> </tt> <a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">rpos</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">rpos</tt> <tt class="py-op"><</tt> <tt class="py-name">pos</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">pos</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -301,8 +301,8 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">pos</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">'\n'</tt> </tt> <a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rbuffer</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">lf</tt> <tt class="py-op">==</tt> <tt class="py-string">'\r'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-comment"># we could read the line up to a '\r' and there could still be a</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># '\n' following that we read next time. note that and eat it.</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_at_trailing_cr</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-comment"># '\n' following that we read next time. note that and eat it.</tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_at_trailing_cr</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_record_newline</tt><tt class="py-op">(</tt><tt class="py-name">lf</tt><tt class="py-op">)</tt> </tt> <a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt> @@ -384,7 +384,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-25', 'write', 'link-25');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-26', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt><tt class="py-op">:</tt> </tt> <a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-comment"># only scan the new data for linefeed, to avoid wasting time.</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">last_newline_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">rfind</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">last_newline_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">rfind</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> <a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">last_newline_pos</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">wbuf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wbuffer</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">last_newline_pos</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">wbuf</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> @@ -394,8 +394,8 @@ paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('lin paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-27', 'write', 'link-25');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">wbuf</tt><tt class="py-op">[</tt><tt class="py-name">last_newline_pos</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-comment"># even if we're line buffering, if the buffer has grown past the</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># buffer size, force a flush.</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wbuffer</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method paramiko.BufferedFile.tell()=paramiko.BufferedFile-class.html#tell"><a title="paramiko.BufferedFile.tell" class="py-name" href="#" onclick="return doclink('link-28', 'tell', 'link-28');">tell</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_bufsize</tt><tt class="py-op">:</tt> </tt> +<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-comment"># buffer size, force a flush.</tt> </tt> +<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wbuffer</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method paramiko.BufferedFile.tell()=paramiko.BufferedFile-class.html#tell"><a title="paramiko.BufferedFile.tell" class="py-name" href="#" onclick="return doclink('link-28', 'tell', 'link-28');">tell</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_bufsize</tt><tt class="py-op">:</tt> </tt> <a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.BufferedFile.flush" class="py-name" href="#" onclick="return doclink('link-29', 'flush', 'link-13');">flush</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> </div><a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> </tt> @@ -426,7 +426,7 @@ paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('lin </div><a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> </tt> <a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt> <a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-comment">### overrides...</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt> <a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt> <a name="BufferedFile._read"></a><div id="BufferedFile._read-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="BufferedFile._read-toggle" onclick="return toggle('BufferedFile._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.file.BufferedFile-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BufferedFile._read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BufferedFile._read-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -456,30 +456,30 @@ paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('lin </div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt> <a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt> <a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> </tt> <a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> </tt> <a name="BufferedFile._set_mode"></a><div id="BufferedFile._set_mode-def"><a name="L391"></a><tt class="py-lineno">391</tt> <a class="py-toggle" href="#" id="BufferedFile._set_mode-toggle" onclick="return toggle('BufferedFile._set_mode');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.file.BufferedFile-class.html#_set_mode">_set_mode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BufferedFile._set_mode-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BufferedFile._set_mode-expanded"><a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-docstring"> Subclasses call this method to initialize the BufferedFile.</tt> </tt> <a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-comment"># set bufsize in any event, because it's used for readline().</tt> </tt> -<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_bufsize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="paramiko.BufferedFile._DEFAULT_BUFSIZE" class="py-name" href="#" onclick="return doclink('link-31', '_DEFAULT_BUFSIZE', 'link-0');">_DEFAULT_BUFSIZE</a></tt> </tt> +<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_bufsize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="paramiko.BufferedFile._DEFAULT_BUFSIZE" class="py-name" href="#" onclick="return doclink('link-31', '_DEFAULT_BUFSIZE', 'link-0');">_DEFAULT_BUFSIZE</a></tt> </tt> <a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bufsize</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-comment"># do no buffering by default, because otherwise writes will get</tt> </tt> -<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># buffered in a way that will probably confuse people.</tt> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-comment"># buffered in a way that will probably confuse people.</tt> </tt> +<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">bufsize</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bufsize</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> <a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-comment"># apparently, line buffering only affects writes. reads are only</tt> </tt> -<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># buffered if you call readline (directly or indirectly: iterating</tt> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># over a file will indirectly call readline).</tt> </tt> -<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="paramiko.BufferedFile.FLAG_BUFFERED" class="py-name" href="#" onclick="return doclink('link-32', 'FLAG_BUFFERED', 'link-8');">FLAG_BUFFERED</a></tt> <tt class="py-op">|</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-33', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt> </tt> +<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-comment"># buffered if you call readline (directly or indirectly: iterating</tt> </tt> +<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-comment"># over a file will indirectly call readline).</tt> </tt> +<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="paramiko.BufferedFile.FLAG_BUFFERED" class="py-name" href="#" onclick="return doclink('link-32', 'FLAG_BUFFERED', 'link-8');">FLAG_BUFFERED</a></tt> <tt class="py-op">|</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-33', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt> </tt> <a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">bufsize</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> <a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_bufsize</tt> <tt class="py-op">=</tt> <tt class="py-name">bufsize</tt> </tt> <a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.BufferedFile.FLAG_BUFFERED" class="py-name" href="#" onclick="return doclink('link-34', 'FLAG_BUFFERED', 'link-8');">FLAG_BUFFERED</a></tt> </tt> <a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&=</tt> <tt class="py-op">~</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-35', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt> </tt> <a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">bufsize</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-comment"># unbuffered</tt> </tt> -<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&=</tt> <tt class="py-op">~</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.BufferedFile.FLAG_BUFFERED" class="py-name" href="#" onclick="return doclink('link-36', 'FLAG_BUFFERED', 'link-8');">FLAG_BUFFERED</a></tt> <tt class="py-op">|</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-37', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt><tt class="py-op">)</tt> </tt> +<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&=</tt> <tt class="py-op">~</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.BufferedFile.FLAG_BUFFERED" class="py-name" href="#" onclick="return doclink('link-36', 'FLAG_BUFFERED', 'link-8');">FLAG_BUFFERED</a></tt> <tt class="py-op">|</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.BufferedFile.FLAG_LINE_BUFFERED" class="py-name" href="#" onclick="return doclink('link-37', 'FLAG_LINE_BUFFERED', 'link-9');">FLAG_LINE_BUFFERED</a></tt><tt class="py-op">)</tt> </tt> <a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> </tt> <a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'r'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'+'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.BufferedFile.FLAG_READ" class="py-name" href="#" onclick="return doclink('link-38', 'FLAG_READ', 'link-4');">FLAG_READ</a></tt> </tt> @@ -494,14 +494,14 @@ paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('lin <a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'U'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="paramiko.BufferedFile.FLAG_UNIVERSAL_NEWLINE" class="py-name" href="#" onclick="return doclink('link-43', 'FLAG_UNIVERSAL_NEWLINE', 'link-10');">FLAG_UNIVERSAL_NEWLINE</a></tt> </tt> <a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-comment"># built-in file objects have this attribute to store which kinds of</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># line terminations they've seen:</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># <http://www.python.org/doc/current/lib/built-in-funcs.html></tt> </tt> -<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">newlines</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-comment"># line terminations they've seen:</tt> </tt> +<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-comment"># <http://www.python.org/doc/current/lib/built-in-funcs.html></tt> </tt> +<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">newlines</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> </div><a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt> <a name="BufferedFile._write_all"></a><div id="BufferedFile._write_all-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="BufferedFile._write_all-toggle" onclick="return toggle('BufferedFile._write_all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.file.BufferedFile-class.html#_write_all">_write_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BufferedFile._write_all-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BufferedFile._write_all-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-comment"># the underlying stream may be something that does partial writes (like</tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># a socket).</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-comment"># a socket).</tt> </tt> +<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_write</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">count</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.BufferedFile.FLAG_APPEND" class="py-name" href="#" onclick="return doclink('link-44', 'FLAG_APPEND', 'link-6');">FLAG_APPEND</a></tt><tt class="py-op">:</tt> </tt> @@ -514,9 +514,9 @@ paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('lin </div><a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> </tt> <a name="BufferedFile._record_newline"></a><div id="BufferedFile._record_newline-def"><a name="L445"></a><tt class="py-lineno">445</tt> <a class="py-toggle" href="#" id="BufferedFile._record_newline-toggle" onclick="return toggle('BufferedFile._record_newline');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.file.BufferedFile-class.html#_record_newline">_record_newline</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">newline</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BufferedFile._record_newline-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BufferedFile._record_newline-expanded"><a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-comment"># silliness about tracking what kinds of newlines we've seen.</tt> </tt> -<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># i don't understand why it can be None, a string, or a tuple, instead</tt> </tt> -<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># of just always being a tuple, but we'll emulate that behavior anyway.</tt> </tt> -<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.BufferedFile.FLAG_UNIVERSAL_NEWLINE" class="py-name" href="#" onclick="return doclink('link-45', 'FLAG_UNIVERSAL_NEWLINE', 'link-10');">FLAG_UNIVERSAL_NEWLINE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-comment"># i don't understand why it can be None, a string, or a tuple, instead</tt> </tt> +<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-comment"># of just always being a tuple, but we'll emulate that behavior anyway.</tt> </tt> +<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.BufferedFile.FLAG_UNIVERSAL_NEWLINE" class="py-name" href="#" onclick="return doclink('link-45', 'FLAG_UNIVERSAL_NEWLINE', 'link-10');">FLAG_UNIVERSAL_NEWLINE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">newlines</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">newlines</tt> <tt class="py-op">=</tt> <tt class="py-name">newline</tt> </tt> @@ -557,7 +557,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:32 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.hostkeys-module.html b/docs/paramiko.hostkeys-module.html index 397bafa..98c7063 100644 --- a/docs/paramiko.hostkeys-module.html +++ b/docs/paramiko.hostkeys-module.html @@ -433,6 +433,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -520,7 +527,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:26 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.hostkeys-pysrc.html b/docs/paramiko.hostkeys-pysrc.html index 4bf0c59..06a8155 100644 --- a/docs/paramiko.hostkeys-pysrc.html +++ b/docs/paramiko.hostkeys-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.hostkeys-module.html" onclick="show_private();">Module paramiko.hostkeys</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{HostKeys}</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -89,7 +89,7 @@ </div><div id="HostKeyEntry-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HostKeyEntry-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> Representation of a line in an OpenSSH-style "known hosts" file.</tt> </tt> <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> <a name="HostKeyEntry.__init__"></a><div id="HostKeyEntry.__init__-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="HostKeyEntry.__init__-toggle" onclick="return toggle('HostKeyEntry.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeyEntry-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostnames</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="HostKeyEntry.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeyEntry.__init__-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valid</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hostnames</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt> <tt class="py-op">=</tt> <tt class="py-name">hostnames</tt> </tt> @@ -109,116 +109,117 @@ <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> @type line: str</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> <a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-comment"># Bad number of fields</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-comment"># Decide what kind of key we're looking at and create an object</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># to hold it accordingly.</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">keytype</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-8', 'RSAKey', 'link-7');">RSAKey</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">keytype</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssh-dss'</tt><tt class="py-op">:</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-9', 'DSSKey', 'link-4');">DSSKey</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Class Method paramiko.hostkeys.HostKeyEntry.from_line()=paramiko.hostkeys.HostKeyEntry-class.html#from_line"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-10', 'from_line', 'link-10');">from_line</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-11" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-11', 'from_line', 'link-10');">from_line</a></tt><tt class="py-op">)</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt> -<a name="HostKeyEntry.to_line"></a><div id="HostKeyEntry.to_line-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="HostKeyEntry.to_line-toggle" onclick="return toggle('HostKeyEntry.to_line');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeyEntry-class.html#to_line">to_line</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeyEntry.to_line-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeyEntry.to_line-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string in OpenSSH known_hosts file format, or None if</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> the object is not in a valid state. A trailing newline is</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> included.</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valid</tt><tt class="py-op">:</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%s %s %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name +<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">keytype</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-comment"># Decide what kind of key we're looking at and create an object</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-comment"># to hold it accordingly.</tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">keytype</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-8', 'RSAKey', 'link-7');">RSAKey</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">keytype</tt> <tt class="py-op">==</tt> <tt class="py-string">'ssh-dss'</tt><tt class="py-op">:</tt> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-9', 'DSSKey', 'link-4');">DSSKey</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">=</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +</div><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Class Method paramiko.hostkeys.HostKeyEntry.from_line()=paramiko.hostkeys.HostKeyEntry-class.html#from_line"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-10', 'from_line', 'link-10');">from_line</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-11" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-11', 'from_line', 'link-10');">from_line</a></tt><tt class="py-op">)</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt> +<a name="HostKeyEntry.to_line"></a><div id="HostKeyEntry.to_line-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="HostKeyEntry.to_line-toggle" onclick="return toggle('HostKeyEntry.to_line');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeyEntry-class.html#to_line">to_line</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeyEntry.to_line-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeyEntry.to_line-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string in OpenSSH known_hosts file format, or None if</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> the object is not in a valid state. A trailing newline is</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> included.</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">valid</tt><tt class="py-op">:</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%s %s %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-12', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.PKey.get_base64()=paramiko.PKey-class.html#get_base64"><a title="paramiko.PKey.get_base64" class="py-name" href="#" onclick="return doclink('link-13', 'get_base64', 'link-13');">get_base64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt> -<a name="HostKeyEntry.__repr__"></a><div id="HostKeyEntry.__repr__-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="HostKeyEntry.__repr__-toggle" onclick="return toggle('HostKeyEntry.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeyEntry-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeyEntry.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeyEntry.__repr__-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<HostKeyEntry %r: %r>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt> -<a name="HostKeys"></a><div id="HostKeys-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="HostKeys-toggle" onclick="return toggle('HostKeys');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html">HostKeys</a> <tt class="py-op">(</tt><tt class="py-base-class">UserDict</tt><tt class="py-op">.</tt><tt class="py-base-class">DictMixin</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HostKeys-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> Representation of an openssh-style "known hosts" file. Host keys can be</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> read from one or more files, and then individual hosts can be looked up to</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> verify server keys during SSH negotiation.</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> A HostKeys object can be treated like a dict; any dict lookup is equivalent</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> to calling L{lookup}.</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.3</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> </tt> -<a name="HostKeys.__init__"></a><div id="HostKeys.__init__-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="HostKeys.__init__-toggle" onclick="return toggle('HostKeys.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__init__-expanded"><a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> Create a new HostKeys object, optionally loading keys from an openssh</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> style host-key file.</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: filename to load host keys from, or C{None}</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-comment"># emulate a dict of { hostname: { keytype: PKey } }</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method paramiko.HostKeys.load()=paramiko.HostKeys-class.html#load"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-14', 'load', 'link-14');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -</div><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> </tt> -<a name="HostKeys.add"></a><div id="HostKeys.add-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="HostKeys.add-toggle" onclick="return toggle('HostKeys.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">keytype</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.add-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.add-expanded"><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> Add a host key entry to the table. Any existing entry for a</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> C{(hostname, keytype)} pair will be replaced.</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname (or IP) to add</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> @param keytype: key type (C{"ssh-rsa"} or C{"ssh-dss"})</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> @type keytype: str</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the key to add</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey}</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="paramiko.AgentKey.get_name +<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.PKey.get_base64()=paramiko.PKey-class.html#get_base64"><a title="paramiko.PKey.get_base64" class="py-name" href="#" onclick="return doclink('link-13', 'get_base64', 'link-13');">get_base64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> +<a name="HostKeyEntry.__repr__"></a><div id="HostKeyEntry.__repr__-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="HostKeyEntry.__repr__-toggle" onclick="return toggle('HostKeyEntry.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeyEntry-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeyEntry.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeyEntry.__repr__-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<HostKeyEntry %r: %r>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt> +<a name="HostKeys"></a><div id="HostKeys-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="HostKeys-toggle" onclick="return toggle('HostKeys');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html">HostKeys</a> <tt class="py-op">(</tt><tt class="py-base-class">UserDict</tt><tt class="py-op">.</tt><tt class="py-base-class">DictMixin</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HostKeys-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> Representation of an openssh-style "known hosts" file. Host keys can be</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> read from one or more files, and then individual hosts can be looked up to</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> verify server keys during SSH negotiation.</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> A HostKeys object can be treated like a dict; any dict lookup is equivalent</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> to calling L{lookup}.</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.3</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt> +<a name="HostKeys.__init__"></a><div id="HostKeys.__init__-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="HostKeys.__init__-toggle" onclick="return toggle('HostKeys.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__init__-expanded"><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> Create a new HostKeys object, optionally loading keys from an openssh</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> style host-key file.</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: filename to load host keys from, or C{None}</tt> </tt> +<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-comment"># emulate a dict of { hostname: { keytype: PKey } }</tt> </tt> +<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method paramiko.HostKeys.load()=paramiko.HostKeys-class.html#load"><a title="paramiko.HostKeys.load" class="py-name" href="#" onclick="return doclink('link-14', 'load', 'link-14');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +</div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> +<a name="HostKeys.add"></a><div id="HostKeys.add-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="HostKeys.add-toggle" onclick="return toggle('HostKeys.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">keytype</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.add-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.add-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> Add a host key entry to the table. Any existing entry for a</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> C{(hostname, keytype)} pair will be replaced.</tt> </tt> +<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname (or IP) to add</tt> </tt> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> @param keytype: key type (C{"ssh-rsa"} or C{"ssh-dss"})</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> @type keytype: str</tt> </tt> +<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the key to add</tt> </tt> +<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey}</tt> </tt> +<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-15', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">keytype</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name" targets="Class paramiko.hostkeys.HostKeyEntry=paramiko.hostkeys.HostKeyEntry-class.html"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-16', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> </tt> -<a name="HostKeys.load"></a><div id="HostKeys.load-def"><a name="L133"></a><tt class="py-lineno">133</tt> <a class="py-toggle" href="#" id="HostKeys.load-toggle" onclick="return toggle('HostKeys.load');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#load">load</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.load-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.load-expanded"><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> Read a file of known SSH host keys, in the format used by openssh.</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> This type of file unfortunately doesn't exist on Windows, but on</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> posix, it will usually be stored in</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> C{os.path.expanduser("~/.ssh/known_hosts")}.</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> If this method is called multiple times, the host keys are merged,</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> not cleared. So multiple calls to C{load} will just call L{add},</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> replacing any existing entries and adding new ones.</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to read host keys from</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if there was an error reading the file</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-17', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'#'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-18', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-19', 'from_line', 'link-10');">from_line</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name" targets="Class paramiko.hostkeys.HostKeyEntry=paramiko.hostkeys.HostKeyEntry-class.html"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-16', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt> +<a name="HostKeys.load"></a><div id="HostKeys.load-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="HostKeys.load-toggle" onclick="return toggle('HostKeys.load');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#load">load</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.load-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.load-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> Read a file of known SSH host keys, in the format used by openssh.</tt> </tt> +<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> This type of file unfortunately doesn't exist on Windows, but on</tt> </tt> +<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> posix, it will usually be stored in</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> C{os.path.expanduser("~/.ssh/known_hosts")}.</tt> </tt> +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> If this method is called multiple times, the host keys are merged,</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> not cleared. So multiple calls to C{load} will just call L{add},</tt> </tt> +<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> replacing any existing entries and adding new ones.</tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to read host keys from</tt> </tt> +<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if there was an error reading the file</tt> </tt> +<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-17', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt> +<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt> +<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'#'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-18', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry.from_line" class="py-name" href="#" onclick="return doclink('link-19', 'from_line', 'link-10');">from_line</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt> +<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -230,28 +231,28 @@ paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-20', 'close', 'link-20');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt> -<a name="HostKeys.save"></a><div id="HostKeys.save-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="HostKeys.save-toggle" onclick="return toggle('HostKeys.save');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#save">save</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.save-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.save-expanded"><a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> Save host keys into a file, in the format used by openssh. The order of</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> keys in the file will be preserved when possible (if these keys were</tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> loaded from a file originally). The single exception is that combined</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> lines will be split into individual key lines, which is arguably a bug.</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to write</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if there was an error writing the file</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.6.1</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-21', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method paramiko.hostkeys.HostKeyEntry.to_line()=paramiko.hostkeys.HostKeyEntry-class.html#to_line"><a title="paramiko.hostkeys.HostKeyEntry.to_line" class="py-name" href="#" onclick="return doclink('link-22', 'to_line', 'link-22');">to_line</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write +</div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt> +<a name="HostKeys.save"></a><div id="HostKeys.save-def"><a name="L160"></a><tt class="py-lineno">160</tt> <a class="py-toggle" href="#" id="HostKeys.save-toggle" onclick="return toggle('HostKeys.save');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#save">save</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.save-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.save-expanded"><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> Save host keys into a file, in the format used by openssh. The order of</tt> </tt> +<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> keys in the file will be preserved when possible (if these keys were</tt> </tt> +<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> loaded from a file originally). The single exception is that combined</tt> </tt> +<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> lines will be split into individual key lines, which is arguably a bug.</tt> </tt> +<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to write</tt> </tt> +<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if there was an error writing the file</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.6.1</tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-21', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> +<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method paramiko.hostkeys.HostKeyEntry.to_line()=paramiko.hostkeys.HostKeyEntry-class.html#to_line"><a title="paramiko.hostkeys.HostKeyEntry.to_line" class="py-name" href="#" onclick="return doclink('link-22', 'to_line', 'link-22');">to_line</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">:</tt> </tt> +<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-23', 'write', 'link-23');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="paramiko.Agent.close +<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -263,157 +264,157 @@ paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-24', 'close', 'link-20');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> </tt> -<a name="HostKeys.lookup"></a><div id="HostKeys.lookup-def"><a name="L180"></a><tt class="py-lineno">180</tt> <a class="py-toggle" href="#" id="HostKeys.lookup-toggle" onclick="return toggle('HostKeys.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.lookup-expanded"><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> Find a hostkey entry for a given hostname or IP. If no entry is found,</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> C{None} is returned. Otherwise a dictionary of keytype to key is</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> returned. The keytype will be either C{"ssh-rsa"} or C{"ssh-dss"}.</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname (or IP) to lookup</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> @return: keys associated with this host (or C{None})</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: dict(str, L{PKey})</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">SubDict</tt> <tt class="py-op">(</tt><tt class="py-base-class">UserDict</tt><tt class="py-op">.</tt><tt class="py-base-class">DictMixin</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">entries</tt><tt class="py-op">,</tt> <tt class="py-param">hostkeys</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">hostname</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-name">entries</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostkeys</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name" targets="Module paramiko.hostkeys=paramiko.hostkeys-module.html"><a title="paramiko.hostkeys" class="py-name" href="#" onclick="return doclink('link-25', 'hostkeys', 'link-25');">hostkeys</a></tt> </tt> -</div><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__getitem__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="paramiko.AgentKey.get_name +</div><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt> +<a name="HostKeys.lookup"></a><div id="HostKeys.lookup-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="HostKeys.lookup-toggle" onclick="return toggle('HostKeys.lookup');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#lookup">lookup</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.lookup-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.lookup-expanded"><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> Find a hostkey entry for a given hostname or IP. If no entry is found,</tt> </tt> +<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> C{None} is returned. Otherwise a dictionary of keytype to key is</tt> </tt> +<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> returned. The keytype will be either C{"ssh-rsa"} or C{"ssh-dss"}.</tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname (or IP) to lookup</tt> </tt> +<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> @return: keys associated with this host (or C{None})</tt> </tt> +<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: dict(str, L{PKey})</tt> </tt> +<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">SubDict</tt> <tt class="py-op">(</tt><tt class="py-base-class">UserDict</tt><tt class="py-op">.</tt><tt class="py-base-class">DictMixin</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">entries</tt><tt class="py-op">,</tt> <tt class="py-param">hostkeys</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">hostname</tt> </tt> +<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-name">entries</tt> </tt> +<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostkeys</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name" targets="Module paramiko.hostkeys=paramiko.hostkeys-module.html"><a title="paramiko.hostkeys" class="py-name" href="#" onclick="return doclink('link-25', 'hostkeys', 'link-25');">hostkeys</a></tt> </tt> +</div><a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> </tt> +<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__getitem__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-26', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -</div><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__setitem__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.AgentKey.get_name +<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> </tt> +<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +</div><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt> +<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__setitem__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-27', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment"># replace</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-comment"># add a new one</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-28', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostkeys</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -</div><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">keys</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.AgentKey.get_name +<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># replace</tt> </tt> +<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> +<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-comment"># add a new one</tt> </tt> +<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-28', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> +<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_hostkeys</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +</div><a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">keys</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-29', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">]</tt> </tt> -</div></div><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">:</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'|1|'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Static Method paramiko.HostKeys.hash_host()=paramiko.HostKeys-class.html#hash_host"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-30', 'hash_host', 'link-30');">hash_host</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">h</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">h</tt> <tt class="py-op">==</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">entries</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">SubDict</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">entries</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> </tt> -<a name="HostKeys.check"></a><div id="HostKeys.check-def"><a name="L229"></a><tt class="py-lineno">229</tt> <a class="py-toggle" href="#" id="HostKeys.check-toggle" onclick="return toggle('HostKeys.check');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#check">check</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.check-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.check-expanded"><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> Return True if the given key is associated with the given hostname</tt> </tt> -<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> in this dictionary.</tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: hostname (or IP) of the SSH server</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the key to check</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey}</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if the key is associated with the hostname; C{False}</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> if not</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method paramiko.HostKeys.lookup()=paramiko.HostKeys-class.html#lookup,Method paramiko.SSHConfig.lookup()=paramiko.SSHConfig-class.html#lookup"><a title="paramiko.HostKeys.lookup +</div></div><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt> +<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">:</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'|1|'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Static Method paramiko.HostKeys.hash_host()=paramiko.HostKeys-class.html#hash_host"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-30', 'hash_host', 'link-30');">hash_host</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">h</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">h</tt> <tt class="py-op">==</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">entries</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">SubDict</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">entries</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +</div><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt> +<a name="HostKeys.check"></a><div id="HostKeys.check-def"><a name="L230"></a><tt class="py-lineno">230</tt> <a class="py-toggle" href="#" id="HostKeys.check-toggle" onclick="return toggle('HostKeys.check');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#check">check</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.check-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.check-expanded"><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> Return True if the given key is associated with the given hostname</tt> </tt> +<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> in this dictionary.</tt> </tt> +<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: hostname (or IP) of the SSH server</tt> </tt> +<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the key to check</tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey}</tt> </tt> +<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if the key is associated with the hostname; C{False}</tt> </tt> +<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> if not</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method paramiko.HostKeys.lookup()=paramiko.HostKeys-class.html#lookup,Method paramiko.SSHConfig.lookup()=paramiko.SSHConfig-class.html#lookup"><a title="paramiko.HostKeys.lookup paramiko.SSHConfig.lookup" class="py-name" href="#" onclick="return doclink('link-31', 'lookup', 'link-31');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">k</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> +<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-32', 'get', 'link-32');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-33', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">host_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -</div><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt> -<a name="HostKeys.clear"></a><div id="HostKeys.clear-def"><a name="L250"></a><tt class="py-lineno">250</tt> <a class="py-toggle" href="#" id="HostKeys.clear-toggle" onclick="return toggle('HostKeys.clear');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.clear-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.clear-expanded"><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> Remove all host keys from the dictionary.</tt> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -</div><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt> -<a name="HostKeys.__getitem__"></a><div id="HostKeys.__getitem__-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="HostKeys.__getitem__-toggle" onclick="return toggle('HostKeys.__getitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__getitem__-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.HostKeys.lookup +<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">host_key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> +<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +</div><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt> +<a name="HostKeys.clear"></a><div id="HostKeys.clear-def"><a name="L251"></a><tt class="py-lineno">251</tt> <a class="py-toggle" href="#" id="HostKeys.clear-toggle" onclick="return toggle('HostKeys.clear');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.clear-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.clear-expanded"><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> Remove all host keys from the dictionary.</tt> </tt> +<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +</div><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt> +<a name="HostKeys.__getitem__"></a><div id="HostKeys.__getitem__-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="HostKeys.__getitem__-toggle" onclick="return toggle('HostKeys.__getitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__getitem__-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.HostKeys.lookup paramiko.SSHConfig.lookup" class="py-name" href="#" onclick="return doclink('link-34', 'lookup', 'link-31');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ret</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> -</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt> -<a name="HostKeys.__setitem__"></a><div id="HostKeys.__setitem__-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="HostKeys.__setitem__-toggle" onclick="return toggle('HostKeys.__setitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.__setitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__setitem__-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-comment"># don't use this please.</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">entry</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-35', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-36', 'keys', 'link-36');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.AgentKey.get_name +<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ret</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> +</div><a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> </tt> +<a name="HostKeys.__setitem__"></a><div id="HostKeys.__setitem__-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="HostKeys.__setitem__-toggle" onclick="return toggle('HostKeys.__setitem__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#__setitem__">__setitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.__setitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.__setitem__-expanded"><a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-comment"># don't use this please.</tt> </tt> +<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">entry</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-35', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-36', 'keys', 'link-36');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-37', 'get_name', 'link-12');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">key_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-comment"># replace</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">entry</tt><tt class="py-op">[</tt><tt class="py-name">key_type</tt><tt class="py-op">]</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">found</tt><tt class="py-op">:</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-38" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-38', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">entry</tt><tt class="py-op">[</tt><tt class="py-name">key_type</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> </tt> -<a name="HostKeys.keys"></a><div id="HostKeys.keys-def"><a name="L277"></a><tt class="py-lineno">277</tt> <a class="py-toggle" href="#" id="HostKeys.keys-toggle" onclick="return toggle('HostKeys.keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#keys">keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.keys-expanded"><a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-comment"># python 2.4 sets would be nice here.</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">:</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">h</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ret</tt><tt class="py-op">:</tt> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> -</div><a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> </tt> -<a name="HostKeys.values"></a><div id="HostKeys.values-def"><a name="L286"></a><tt class="py-lineno">286</tt> <a class="py-toggle" href="#" id="HostKeys.values-toggle" onclick="return toggle('HostKeys.values');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.values-expanded"><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-39', 'keys', 'link-36');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.HostKeys.lookup +<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-comment"># replace</tt> </tt> +<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">entry</tt><tt class="py-op">[</tt><tt class="py-name">key_type</tt><tt class="py-op">]</tt> </tt> +<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">found</tt><tt class="py-op">:</tt> </tt> +<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-38" class="py-name"><a title="paramiko.hostkeys.HostKeyEntry" class="py-name" href="#" onclick="return doclink('link-38', 'HostKeyEntry', 'link-16');">HostKeyEntry</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">hostname</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">entry</tt><tt class="py-op">[</tt><tt class="py-name">key_type</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> </tt> +<a name="HostKeys.keys"></a><div id="HostKeys.keys-def"><a name="L278"></a><tt class="py-lineno">278</tt> <a class="py-toggle" href="#" id="HostKeys.keys-toggle" onclick="return toggle('HostKeys.keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#keys">keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.keys-expanded"><a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># python 2.4 sets would be nice here.</tt> </tt> +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_entries</tt><tt class="py-op">:</tt> </tt> +<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt> <tt class="py-keyword">in</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">hostnames</tt><tt class="py-op">:</tt> </tt> +<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">h</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ret</tt><tt class="py-op">:</tt> </tt> +<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt> +<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> +</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt> +<a name="HostKeys.values"></a><div id="HostKeys.values-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="HostKeys.values-toggle" onclick="return toggle('HostKeys.values');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.values-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-39', 'keys', 'link-36');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">ret</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.HostKeys.lookup paramiko.SSHConfig.lookup" class="py-name" href="#" onclick="return doclink('link-40', 'lookup', 'link-31');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> -</div><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> </tt> -<a name="HostKeys.hash_host"></a><div id="HostKeys.hash_host-def"><a name="L292"></a><tt class="py-lineno">292</tt> <a class="py-toggle" href="#" id="HostKeys.hash_host-toggle" onclick="return toggle('HostKeys.hash_host');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#hash_host">hash_host</a><tt class="py-op">(</tt><tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="HostKeys.hash_host-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.hash_host-expanded"><a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> Return a "hashed" form of the hostname, as used by openssh when storing</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> hashed hostnames in the known_hosts file.</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname to hash</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> @param salt: optional salt to use when hashing (must be 20 bytes long)</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-docstring"> @type salt: str</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"> @return: the hashed hostname</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">salt</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> +</div><a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> </tt> +<a name="HostKeys.hash_host"></a><div id="HostKeys.hash_host-def"><a name="L293"></a><tt class="py-lineno">293</tt> <a class="py-toggle" href="#" id="HostKeys.hash_host-toggle" onclick="return toggle('HostKeys.hash_host');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.hostkeys.HostKeys-class.html#hash_host">hash_host</a><tt class="py-op">(</tt><tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="HostKeys.hash_host-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="HostKeys.hash_host-expanded"><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> Return a "hashed" form of the hostname, as used by openssh when storing</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> hashed hostnames in the known_hosts file.</tt> </tt> +<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> @param hostname: the hostname to hash</tt> </tt> +<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> @type hostname: str</tt> </tt> +<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-docstring"> @param salt: optional salt to use when hashing (must be 20 bytes long)</tt> </tt> +<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"> @type salt: str</tt> </tt> +<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> @return: the hashed hostname</tt> </tt> +<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">salt</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -435,16 +436,16 @@ paramiko.sftp_si.randpool paramiko.transport.randpool paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-41', 'randpool', 'link-41');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-42', 'get_bytes', 'link-42');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">salt</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'|1|'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">salt</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'|'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt> </tt> -<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">hmac</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">.</tt><tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">hostkey</tt> <tt class="py-op">=</tt> <tt class="py-string">'|1|%s|%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">hmac</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -</div><a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt id="link-43" class="py-name"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-43', 'hash_host', 'link-30');">hash_host</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-44', 'hash_host', 'link-30');">hash_host</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt><script type="text/javascript"> +<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">salt</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'|1|'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">salt</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'|'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> +<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt> +<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt> </tt> +<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">hmac</tt> <tt class="py-op">=</tt> <tt class="py-name">HMAC</tt><tt class="py-op">.</tt><tt class="py-name">HMAC</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">hostkey</tt> <tt class="py-op">=</tt> <tt class="py-string">'|1|%s|%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">hmac</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> +</div><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt id="link-43" class="py-name"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-43', 'hash_host', 'link-30');">hash_host</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="paramiko.HostKeys.hash_host" class="py-name" href="#" onclick="return doclink('link-44', 'hash_host', 'link-30');">hash_host</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -477,7 +478,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.hostkeys.HostKeyEntry-class.html b/docs/paramiko.hostkeys.HostKeyEntry-class.html index 99256a7..8ac26c2 100644 --- a/docs/paramiko.hostkeys.HostKeyEntry-class.html +++ b/docs/paramiko.hostkeys.HostKeyEntry-class.html @@ -233,7 +233,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_gex-module.html b/docs/paramiko.kex_gex-module.html index b2d8668..7fa7935 100644 --- a/docs/paramiko.kex_gex-module.html +++ b/docs/paramiko.kex_gex-module.html @@ -434,6 +434,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -521,7 +528,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_gex-pysrc.html b/docs/paramiko.kex_gex-pysrc.html index 2bc411e..9dd880c 100644 --- a/docs/paramiko.kex_gex-pysrc.html +++ b/docs/paramiko.kex_gex-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.kex_gex-module.html" onclick="show_private();">Module paramiko.kex_gex</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Variant on L{KexGroup1 <paramiko.kex_group1.KexGroup1>} where the prime "p" and</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">generator "g" are provided by the server. A bit more work is required on the</tt> </tt> @@ -114,12 +114,12 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc <a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-22', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST" class="py-name" href="#" onclick="return doclink('link-23', '_MSG_KEXDH_GEX_REQUEST', 'link-14');">_MSG_KEXDH_GEX_REQUEST</a></tt><tt class="py-op">,</tt> <tt id="link-24" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST_OLD" class="py-name" href="#" onclick="return doclink('link-24', '_MSG_KEXDH_GEX_REQUEST_OLD', 'link-10');">_MSG_KEXDH_GEX_REQUEST_OLD</a></tt><tt class="py-op">)</tt> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-comment"># request a bit range: we accept (min_bits) to (max_bits), but prefer</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># (preferred_bits). according to the spec, we shouldn't pull the</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># minimum up above 1024.</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-25', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-comment"># (preferred_bits). according to the spec, we shouldn't pull the</tt> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-comment"># minimum up above 1024.</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-25', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_test_old_style</tt><tt class="py-op">:</tt> </tt> <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-comment"># only used for unit tests: we shouldn't ever send this</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-26', 'add_byte', 'link-26');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST_OLD" class="py-name" href="#" onclick="return doclink('link-27', '_MSG_KEXDH_GEX_REQUEST_OLD', 'link-10');">_MSG_KEXDH_GEX_REQUEST_OLD</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-26', 'add_byte', 'link-26');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST_OLD" class="py-name" href="#" onclick="return doclink('link-27', '_MSG_KEXDH_GEX_REQUEST_OLD', 'link-10');">_MSG_KEXDH_GEX_REQUEST_OLD</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-28', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-29', 'preferred_bits', 'link-18');">preferred_bits</a></tt><tt class="py-op">)</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_style</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> @@ -145,11 +145,11 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc </div><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt> <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt> <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt> <a name="KexGex._generate_x"></a><div id="KexGex._generate_x-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="KexGex._generate_x-toggle" onclick="return toggle('KexGex._generate_x');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_gex.KexGex-class.html#_generate_x">_generate_x</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="KexGex._generate_x-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGex._generate_x-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-comment"># generate an "x" (1 < x < (p-1)/2).</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">//</tt> <tt class="py-number">2</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">//</tt> <tt class="py-number">2</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">qnorm</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-47', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-48', 'deflate_long', 'link-48');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">qhbyte</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">qnorm</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">bytes</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">qnorm</tt><tt class="py-op">)</tt> </tt> @@ -212,23 +212,23 @@ paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">preferredbits</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-58', 'get_int', 'link-57');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">maxbits</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-59', 'get_int', 'link-57');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-comment"># smoosh the user's preferred size into our own limits</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">preferredbits</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-60', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">:</tt> </tt> +<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">preferredbits</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-60', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">:</tt> </tt> <a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">preferredbits</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-61', 'max_bits', 'link-17');">max_bits</a></tt> </tt> <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">preferredbits</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-62', 'min_bits', 'link-16');">min_bits</a></tt><tt class="py-op">:</tt> </tt> <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">preferredbits</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-63', 'min_bits', 'link-16');">min_bits</a></tt> </tt> <a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-comment"># fix min/max if they're inconsistent. technically, we could just pout</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># and hang up, but there's no harm in giving them the benefit of the</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># doubt and just picking a bitsize for them.</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">minbits</tt> <tt class="py-op">></tt> <tt class="py-name">preferredbits</tt><tt class="py-op">:</tt> </tt> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-comment"># and hang up, but there's no harm in giving them the benefit of the</tt> </tt> +<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-comment"># doubt and just picking a bitsize for them.</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">minbits</tt> <tt class="py-op">></tt> <tt class="py-name">preferredbits</tt><tt class="py-op">:</tt> </tt> <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">minbits</tt> <tt class="py-op">=</tt> <tt class="py-name">preferredbits</tt> </tt> <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">maxbits</tt> <tt class="py-op"><</tt> <tt class="py-name">preferredbits</tt><tt class="py-op">:</tt> </tt> <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">maxbits</tt> <tt class="py-op">=</tt> <tt class="py-name">preferredbits</tt> </tt> <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-comment"># now save a copy</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-64', 'min_bits', 'link-16');">min_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">minbits</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-64', 'min_bits', 'link-16');">min_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">minbits</tt> </tt> <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-65', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">preferredbits</tt> </tt> <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-66', 'max_bits', 'link-17');">max_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">maxbits</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-comment"># generate prime</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-67', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_modulus_pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-67', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_modulus_pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pack</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-68" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-68', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t do server-side gex with no modulus pack'</tt><tt class="py-op">)</tt> </tt> <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-69', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG @@ -263,14 +263,14 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-70', </div><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt> <a name="KexGex._parse_kexdh_gex_request_old"></a><div id="KexGex._parse_kexdh_gex_request_old-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="KexGex._parse_kexdh_gex_request_old-toggle" onclick="return toggle('KexGex._parse_kexdh_gex_request_old');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_request_old">_parse_kexdh_gex_request_old</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="KexGex._parse_kexdh_gex_request_old-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGex._parse_kexdh_gex_request_old-expanded"><a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-comment"># same as above, but without min_bits or max_bits (used by older clients like putty)</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-80', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-81', 'get_int', 'link-57');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-80', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-81', 'get_int', 'link-57');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># smoosh the user's preferred size into our own limits</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-82', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-83', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">:</tt> </tt> +<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-82', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-83', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">:</tt> </tt> <a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-84', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-85', 'max_bits', 'link-17');">max_bits</a></tt> </tt> <a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-86', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-87', 'min_bits', 'link-16');">min_bits</a></tt><tt class="py-op">:</tt> </tt> <a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-88', 'preferred_bits', 'link-18');">preferred_bits</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-89', 'min_bits', 'link-16');">min_bits</a></tt> </tt> <a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-comment"># generate prime</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-90', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_modulus_pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-90', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_modulus_pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pack</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-91" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-91', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t do server-side gex with no modulus pack'</tt><tt class="py-op">)</tt> </tt> <a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-92', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="paramiko.auth_handler.DEBUG @@ -308,7 +308,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-93', </div><div id="KexGex._parse_kexdh_gex_group-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGex._parse_kexdh_gex_group-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method paramiko.Message.get_mpint()=paramiko.Message-class.html#get_mpint"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-107', 'get_mpint', 'link-107');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-108', 'get_mpint', 'link-107');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-comment"># reject if p's bit length < 1024 or > 8192</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">bitlen</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-109', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Function paramiko.util.bit_length()=paramiko.util-module.html#bit_length"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-110', 'bit_length', 'link-110');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">bitlen</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-109', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Function paramiko.util.bit_length()=paramiko.util-module.html#bit_length"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-110', 'bit_length', 'link-110');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> <a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">bitlen</tt> <tt class="py-op"><</tt> <tt class="py-number">1024</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">bitlen</tt> <tt class="py-op">></tt> <tt class="py-number">8192</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-111" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-111', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server-generated gex p (don\'t ask) is out of range (%d bits)'</tt> <tt class="py-op">%</tt> <tt class="py-name">bitlen</tt><tt class="py-op">)</tt> </tt> <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-112', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-113" class="py-name"><a title="paramiko.auth_handler.DEBUG @@ -335,7 +335,7 @@ paramiko.transport.DEBUG paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-113', 'DEBUG', 'link-70');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Got server p (%d bits)'</tt> <tt class="py-op">%</tt> <tt class="py-name">bitlen</tt><tt class="py-op">)</tt> </tt> <a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generate_x</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-comment"># now compute e = g^x mod p</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> <a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-114', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-115', 'add_byte', 'link-26');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-116" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_INIT" class="py-name" href="#" onclick="return doclink('link-116', '_MSG_KEXDH_GEX_INIT', 'link-12');">_MSG_KEXDH_GEX_INIT</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-117', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> @@ -351,7 +351,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-113' <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> <a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-123', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method paramiko.Transport.get_server_key()=paramiko.Transport-class.html#get_server_key"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-124', 'get_server_key', 'link-124');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-comment"># okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K)</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-125', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-125', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-126', 'add', 'link-126');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-127', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-128', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> </tt> <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-129', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-130', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">,</tt> </tt> @@ -366,13 +366,13 @@ paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-126 <a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-139', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> <a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-140', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> <a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-141', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-142', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-142', 'new', 'link-142');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-143', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> <a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># sign it</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-143', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-144', 'get_server_key', 'link-124');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method paramiko.AgentKey.sign_ssh_data()=paramiko.AgentKey-class.html#sign_ssh_data,Method paramiko.DSSKey.sign_ssh_data()=paramiko.DSSKey-class.html#sign_ssh_data,Method paramiko.PKey.sign_ssh_data()=paramiko.PKey-class.html#sign_ssh_data,Method paramiko.RSAKey.sign_ssh_data()=paramiko.RSAKey-class.html#sign_ssh_data"><a title="paramiko.AgentKey.sign_ssh_data +<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-144', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-145', 'get_server_key', 'link-124');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method paramiko.AgentKey.sign_ssh_data()=paramiko.AgentKey-class.html#sign_ssh_data,Method paramiko.DSSKey.sign_ssh_data()=paramiko.DSSKey-class.html#sign_ssh_data,Method paramiko.PKey.sign_ssh_data()=paramiko.PKey-class.html#sign_ssh_data,Method paramiko.RSAKey.sign_ssh_data()=paramiko.RSAKey-class.html#sign_ssh_data"><a title="paramiko.AgentKey.sign_ssh_data paramiko.DSSKey.sign_ssh_data paramiko.PKey.sign_ssh_data -paramiko.RSAKey.sign_ssh_data" class="py-name" href="#" onclick="return doclink('link-145', 'sign_ssh_data', 'link-145');">sign_ssh_data</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-146', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.RSAKey.sign_ssh_data" class="py-name" href="#" onclick="return doclink('link-146', 'sign_ssh_data', 'link-146');">sign_ssh_data</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-147', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -392,42 +392,42 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-147', 'randpool', 'link-50');">randpool</a></tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-148', 'randpool', 'link-50');">randpool</a></tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> <a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-comment"># send reply</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-148', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-149', 'add_byte', 'link-26');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REPLY" class="py-name" href="#" onclick="return doclink('link-150', '_MSG_KEXDH_GEX_REPLY', 'link-13');">_MSG_KEXDH_GEX_REPLY</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-151', 'add_string', 'link-151');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-152', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-153', 'add_string', 'link-151');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-154', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-155', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-149', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-150', 'add_byte', 'link-26');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-151" class="py-name"><a title="paramiko.kex_gex._MSG_KEXDH_GEX_REPLY" class="py-name" href="#" onclick="return doclink('link-151', '_MSG_KEXDH_GEX_REPLY', 'link-13');">_MSG_KEXDH_GEX_REPLY</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-152', 'add_string', 'link-152');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-153', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-154', 'add_string', 'link-152');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-155', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-156', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> </tt> <a name="KexGex._parse_kexdh_gex_reply"></a><div id="KexGex._parse_kexdh_gex_reply-def"><a name="L220"></a><tt class="py-lineno">220</tt> <a class="py-toggle" href="#" id="KexGex._parse_kexdh_gex_reply-toggle" onclick="return toggle('KexGex._parse_kexdh_gex_reply');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_reply">_parse_kexdh_gex_reply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="KexGex._parse_kexdh_gex_reply-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGex._parse_kexdh_gex_reply-expanded"><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-156', 'get_string', 'link-156');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-157', 'get_mpint', 'link-107');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-158', 'get_string', 'link-156');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="KexGex._parse_kexdh_gex_reply-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGex._parse_kexdh_gex_reply-expanded"><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-157', 'get_string', 'link-157');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-158', 'get_mpint', 'link-107');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-159', 'get_string', 'link-157');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op"><</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-159" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-159', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server kex "f" is out of range'</tt><tt class="py-op">)</tt> </tt> +<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-160" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-160', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server kex "f" is out of range'</tt><tt class="py-op">)</tt> </tt> <a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> <a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-comment"># okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K)</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-160', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="paramiko.HostKeys.add -paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-161', 'add', 'link-126');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-162', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-163', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-164', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-165', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">,</tt> </tt> +<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-161', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.HostKeys.add +paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-162', 'add', 'link-126');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-163', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-164', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> </tt> +<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-165', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-166', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">,</tt> </tt> <a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">host_key</tt><tt class="py-op">)</tt> </tt> <a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_style</tt><tt class="py-op">:</tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-166', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-167', 'min_bits', 'link-16');">min_bits</a></tt><tt class="py-op">)</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-168', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-169', 'preferred_bits', 'link-18');">preferred_bits</a></tt><tt class="py-op">)</tt> </tt> +<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-167', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="paramiko.kex_gex.KexGex.min_bits" class="py-name" href="#" onclick="return doclink('link-168', 'min_bits', 'link-16');">min_bits</a></tt><tt class="py-op">)</tt> </tt> +<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-169', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="paramiko.kex_gex.KexGex.preferred_bits" class="py-name" href="#" onclick="return doclink('link-170', 'preferred_bits', 'link-18');">preferred_bits</a></tt><tt class="py-op">)</tt> </tt> <a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_style</tt><tt class="py-op">:</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-170', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-171', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">)</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-172', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-173', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">)</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-174', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-175', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-176', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-177', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-178', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_verify_key</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">,</tt> <tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-179', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-171', 'add_int', 'link-28');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="paramiko.kex_gex.KexGex.max_bits" class="py-name" href="#" onclick="return doclink('link-172', 'max_bits', 'link-17');">max_bits</a></tt><tt class="py-op">)</tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-173', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-174', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">g</tt><tt class="py-op">)</tt> </tt> +<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-175', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-176', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-177', 'add_mpint', 'link-75');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-178', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-179', 'new', 'link-142');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-180', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_verify_key</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">,</tt> <tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-181', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -461,7 +461,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:38 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_gex.KexGex-class.html b/docs/paramiko.kex_gex.KexGex-class.html index 02b53fc..fc65578 100644 --- a/docs/paramiko.kex_gex.KexGex-class.html +++ b/docs/paramiko.kex_gex.KexGex-class.html @@ -127,6 +127,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -134,7 +135,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -254,7 +257,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_group1-module.html b/docs/paramiko.kex_group1-module.html index 0c6b972..22ff9a1 100644 --- a/docs/paramiko.kex_group1-module.html +++ b/docs/paramiko.kex_group1-module.html @@ -451,6 +451,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -560,7 +567,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_group1-pysrc.html b/docs/paramiko.kex_group1-pysrc.html index 1d32b96..a88ede3 100644 --- a/docs/paramiko.kex_group1-pysrc.html +++ b/docs/paramiko.kex_group1-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.kex_group1-module.html" onclick="show_private();">Module paramiko.kex_group1</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">1024 bit key halves, using a known "p" prime and "g" generator.</tt> </tt> @@ -88,7 +88,7 @@ <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable paramiko.kex_group1._MSG_KEXDH_INIT=paramiko.kex_group1-module.html#_MSG_KEXDH_INIT"><a title="paramiko.kex_group1._MSG_KEXDH_INIT" class="py-name" href="#" onclick="return doclink('link-10', '_MSG_KEXDH_INIT', 'link-10');">_MSG_KEXDH_INIT</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Variable paramiko.kex_group1._MSG_KEXDH_REPLY=paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY"><a title="paramiko.kex_group1._MSG_KEXDH_REPLY" class="py-name" href="#" onclick="return doclink('link-11', '_MSG_KEXDH_REPLY', 'link-11');">_MSG_KEXDH_REPLY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> </tt> <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment"># draft-ietf-secsh-transport-09.txt, page 17</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-12" class="py-name" targets="Variable paramiko.kex_group1.P=paramiko.kex_group1-module.html#P"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-12', 'P', 'link-12');">P</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL</tt> </tt> +<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable paramiko.kex_group1.P=paramiko.kex_group1-module.html#P"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-12', 'P', 'link-12');">P</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL</tt> </tt> <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable paramiko.kex_group1.G=paramiko.kex_group1-module.html#G"><a title="paramiko.kex_group1.G" class="py-name" href="#" onclick="return doclink('link-13', 'G', 'link-13');">G</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt> <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt> @@ -107,11 +107,11 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc </div><div id="KexGroup1.start_kex-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGroup1.start_kex-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generate_x</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-17', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-comment"># compute f = g^x mod p, but don't send it yet</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="paramiko.kex_group1.G" class="py-name" href="#" onclick="return doclink('link-18', 'G', 'link-13');">G</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-19', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="paramiko.kex_group1.G" class="py-name" href="#" onclick="return doclink('link-18', 'G', 'link-13');">G</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-19', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-20', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="paramiko.kex_group1._MSG_KEXDH_INIT" class="py-name" href="#" onclick="return doclink('link-21', '_MSG_KEXDH_INIT', 'link-10');">_MSG_KEXDH_INIT</a></tt><tt class="py-op">)</tt> </tt> <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-comment"># compute e = g^x mod p (where g=2), and send it</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="paramiko.kex_group1.G" class="py-name" href="#" onclick="return doclink('link-22', 'G', 'link-13');">G</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-23" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-23', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="paramiko.kex_group1.G" class="py-name" href="#" onclick="return doclink('link-22', 'G', 'link-13');">G</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-23" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-23', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-24', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-25', 'add_byte', 'link-25');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="paramiko.kex_group1._MSG_KEXDH_INIT" class="py-name" href="#" onclick="return doclink('link-26', '_MSG_KEXDH_INIT', 'link-10');">_MSG_KEXDH_INIT</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.Message.add_mpint()=paramiko.Message-class.html#add_mpint"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-27', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> @@ -127,15 +127,15 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc </div><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt> <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt> <a name="KexGroup1._generate_x"></a><div id="KexGroup1._generate_x-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="KexGroup1._generate_x-toggle" onclick="return toggle('KexGroup1._generate_x');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_group1.KexGroup1-class.html#_generate_x">_generate_x</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="KexGroup1._generate_x-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGroup1._generate_x-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-comment"># generate an "x" (1 < x < q), where q is (p-1)/2.</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># p is a 128-byte (1024-bit) number, where the first 64 bits are 1. </tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># therefore q can be approximated as a 2^1023. we drop the subset of</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># potential x where the first 63 bits are 1, because some of those will be</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># larger than q (but this is a tiny tiny subset of potential x).</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-comment"># p is a 128-byte (1024-bit) number, where the first 64 bits are 1. </tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-comment"># therefore q can be approximated as a 2^1023. we drop the subset of</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># potential x where the first 63 bits are 1, because some of those will be</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-comment"># larger than q (but this is a tiny tiny subset of potential x).</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-36', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool @@ -187,14 +187,14 @@ paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick </div><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt> <a name="KexGroup1._parse_kexdh_reply"></a><div id="KexGroup1._parse_kexdh_reply-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="KexGroup1._parse_kexdh_reply-toggle" onclick="return toggle('KexGroup1._parse_kexdh_reply');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_reply">_parse_kexdh_reply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="KexGroup1._parse_kexdh_reply-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGroup1._parse_kexdh_reply-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-comment"># client mode</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-44', 'get_string', 'link-44');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-44', 'get_string', 'link-44');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method paramiko.Message.get_mpint()=paramiko.Message-class.html#get_mpint"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-45', 'get_mpint', 'link-45');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op"><</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt> <tt class="py-op">></tt> <tt id="link-46" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-46', 'P', 'link-12');">P</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-47" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-47', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server kex "f" is out of range'</tt><tt class="py-op">)</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-48', 'get_string', 'link-44');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-49" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-49', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-comment"># okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K)</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-50', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-50', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-51', 'add', 'link-51');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-52', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-53', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-54', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-55', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">)</tt> </tt> @@ -202,33 +202,33 @@ paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-51' <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-57', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-58', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-59', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-60', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-61', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_verify_key</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">,</tt> <tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-62', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-60', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-61', 'new', 'link-61');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-62', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_verify_key</tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">,</tt> <tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-63', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt> <a name="KexGroup1._parse_kexdh_init"></a><div id="KexGroup1._parse_kexdh_init-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="KexGroup1._parse_kexdh_init-toggle" onclick="return toggle('KexGroup1._parse_kexdh_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_init">_parse_kexdh_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="KexGroup1._parse_kexdh_init-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KexGroup1._parse_kexdh_init-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-comment"># server mode</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-63', 'get_mpint', 'link-45');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op"><</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">></tt> <tt id="link-64" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-64', 'P', 'link-12');">P</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-65" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-65', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Client kex "e" is out of range'</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-66', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-67', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method paramiko.Transport.get_server_key()=paramiko.Transport-class.html#get_server_key"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-68', 'get_server_key', 'link-68');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.Message.get_mpint" class="py-name" href="#" onclick="return doclink('link-64', 'get_mpint', 'link-45');">get_mpint</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op"><</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">></tt> <tt id="link-65" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-65', 'P', 'link-12');">P</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-66" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-66', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Client kex "e" is out of range'</tt><tt class="py-op">)</tt> </tt> +<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="paramiko.kex_group1.P" class="py-name" href="#" onclick="return doclink('link-67', 'P', 'link-12');">P</a></tt><tt class="py-op">)</tt> </tt> +<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-68', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method paramiko.Transport.get_server_key()=paramiko.Transport-class.html#get_server_key"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-69', 'get_server_key', 'link-69');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment"># okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K)</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-69', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="paramiko.HostKeys.add -paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-70', 'add', 'link-51');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-71', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-72', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-73', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-74', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">)</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-75', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-76', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-77', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-78', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-79', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">hm</tt> <tt class="py-op">=</tt> <tt id="link-70" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-70', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="paramiko.HostKeys.add +paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-71', 'add', 'link-51');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-72', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-73', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt><tt class="py-op">,</tt> </tt> +<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-74', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-75', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt><tt class="py-op">)</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-76', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-77', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> +<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-78', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">hm</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-79', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> +<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-80', 'new', 'link-61');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hm</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-81', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_set_K_H</tt><tt class="py-op">(</tt><tt class="py-name">K</tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-comment"># sign it</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-80', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-81', 'get_server_key', 'link-68');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method paramiko.AgentKey.sign_ssh_data()=paramiko.AgentKey-class.html#sign_ssh_data,Method paramiko.DSSKey.sign_ssh_data()=paramiko.DSSKey-class.html#sign_ssh_data,Method paramiko.PKey.sign_ssh_data()=paramiko.PKey-class.html#sign_ssh_data,Method paramiko.RSAKey.sign_ssh_data()=paramiko.RSAKey-class.html#sign_ssh_data"><a title="paramiko.AgentKey.sign_ssh_data +<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-82', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-83', 'get_server_key', 'link-69');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method paramiko.AgentKey.sign_ssh_data()=paramiko.AgentKey-class.html#sign_ssh_data,Method paramiko.DSSKey.sign_ssh_data()=paramiko.DSSKey-class.html#sign_ssh_data,Method paramiko.PKey.sign_ssh_data()=paramiko.PKey-class.html#sign_ssh_data,Method paramiko.RSAKey.sign_ssh_data()=paramiko.RSAKey-class.html#sign_ssh_data"><a title="paramiko.AgentKey.sign_ssh_data paramiko.DSSKey.sign_ssh_data paramiko.PKey.sign_ssh_data -paramiko.RSAKey.sign_ssh_data" class="py-name" href="#" onclick="return doclink('link-82', 'sign_ssh_data', 'link-82');">sign_ssh_data</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-83', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.RSAKey.sign_ssh_data" class="py-name" href="#" onclick="return doclink('link-84', 'sign_ssh_data', 'link-84');">sign_ssh_data</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-85', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -248,15 +248,15 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-84', 'randpool', 'link-37');">randpool</a></tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-86', 'randpool', 'link-37');">randpool</a></tt><tt class="py-op">,</tt> <tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> <a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-comment"># send reply</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-85', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-86', 'add_byte', 'link-25');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="paramiko.kex_group1._MSG_KEXDH_REPLY" class="py-name" href="#" onclick="return doclink('link-87', '_MSG_KEXDH_REPLY', 'link-11');">_MSG_KEXDH_REPLY</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-88', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-89', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-90', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-91', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-92', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-87', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-88', 'add_byte', 'link-25');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-89" class="py-name"><a title="paramiko.kex_group1._MSG_KEXDH_REPLY" class="py-name" href="#" onclick="return doclink('link-89', '_MSG_KEXDH_REPLY', 'link-11');">_MSG_KEXDH_REPLY</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-90', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-91', 'add_mpint', 'link-27');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-92', 'add_string', 'link-56');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-93', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-94', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt class="py-name">_activate_outbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -290,7 +290,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.kex_group1.KexGroup1-class.html b/docs/paramiko.kex_group1.KexGroup1-class.html index 14f5fee..dace7c4 100644 --- a/docs/paramiko.kex_group1.KexGroup1-class.html +++ b/docs/paramiko.kex_group1.KexGroup1-class.html @@ -126,6 +126,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -133,7 +134,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -232,7 +235,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.logging22-module.html b/docs/paramiko.logging22-module.html index 4788f11..700cf24 100644 --- a/docs/paramiko.logging22-module.html +++ b/docs/paramiko.logging22-module.html @@ -154,6 +154,13 @@ <a name="CRITICAL"></a><span class="summary-name">CRITICAL</span> = <code title="50">50</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code> + </td> + </tr> </table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" @@ -181,7 +188,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.logging22-pysrc.html b/docs/paramiko.logging22-pysrc.html index 32675d6..27924db 100644 --- a/docs/paramiko.logging22-pysrc.html +++ b/docs/paramiko.logging22-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.logging22-module.html">Module paramiko.logging22</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">Stub out logging on python < 2.3.</tt> </tt> <a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -280,7 +280,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:34 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.logging22.Formatter-class.html b/docs/paramiko.logging22.Formatter-class.html index a125a5d..ad2ec1d 100644 --- a/docs/paramiko.logging22.Formatter-class.html +++ b/docs/paramiko.logging22.Formatter-class.html @@ -93,6 +93,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -100,7 +101,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -184,7 +187,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.logging22.StreamHandler-class.html b/docs/paramiko.logging22.StreamHandler-class.html index b00bc52..751c755 100644 --- a/docs/paramiko.logging22.StreamHandler-class.html +++ b/docs/paramiko.logging22.StreamHandler-class.html @@ -109,6 +109,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -116,7 +117,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -199,7 +202,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.logging22.logger-class.html b/docs/paramiko.logging22.logger-class.html index 56195b7..ea85032 100644 --- a/docs/paramiko.logging22.logger-class.html +++ b/docs/paramiko.logging22.logger-class.html @@ -160,6 +160,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -167,7 +168,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -249,7 +252,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.message-module.html b/docs/paramiko.message-module.html index 0d0fa78..c00cf46 100644 --- a/docs/paramiko.message-module.html +++ b/docs/paramiko.message-module.html @@ -56,6 +56,22 @@ <h1 class="epydoc">Module message</h1><p class="nomargin-top"><span class="codelink"><a href="paramiko.message-pysrc.html">source code</a></span></p> <p>Implementation of an SSH2 "message".</p> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -82,7 +98,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.message-pysrc.html b/docs/paramiko.message-pysrc.html index a612fd0..f1e7e64 100644 --- a/docs/paramiko.message-pysrc.html +++ b/docs/paramiko.message-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.message-module.html" onclick="show_private();">Module paramiko.message</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Implementation of an SSH2 "message".</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -175,7 +175,7 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu paramiko.SFTPHandle.read paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-20', 'read', 'link-11');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> <a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-name">n</tt><tt class="py-op">:</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">*</tt><tt class="py-name">n</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">b</tt> <tt class="py-op">+</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">b</tt> </tt> </div><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt> <a name="Message.get_byte"></a><div id="Message.get_byte-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="Message.get_byte-toggle" onclick="return toggle('Message.get_byte');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.message.Message-class.html#get_byte">get_byte</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -406,7 +406,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.packet-module.html b/docs/paramiko.packet-module.html index ae7f499..31640e9 100644 --- a/docs/paramiko.packet-module.html +++ b/docs/paramiko.packet-module.html @@ -465,6 +465,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -552,7 +559,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.packet-pysrc.html b/docs/paramiko.packet-pysrc.html index 1571204..232154b 100644 --- a/docs/paramiko.packet-pysrc.html +++ b/docs/paramiko.packet-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.packet-module.html" onclick="show_private();">Module paramiko.packet</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Packetizer.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -112,8 +112,8 @@ <a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-comment"># READ the secsh RFC's before raising these values. if anything,</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># they should probably be lower.</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">REKEY_PACKETS</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-number">30</tt><tt class="py-op">)</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-comment"># they should probably be lower.</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">REKEY_PACKETS</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-number">30</tt><tt class="py-op">)</tt> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">REKEY_BYTES</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-number">30</tt><tt class="py-op">)</tt> </tt> <a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt> <a name="Packetizer.__init__"></a><div id="Packetizer.__init__-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="Packetizer.__init__-toggle" onclick="return toggle('Packetizer.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.packet.Packetizer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -126,14 +126,14 @@ <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt> <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># used for noticing when to re-key:</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_bytes</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_bytes</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_packets</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_bytes</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets_overflow</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt> <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># current inbound/outbound ciphering:</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_out</tt> <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_out</tt> <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_in</tt> <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_out</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_in</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> @@ -149,10 +149,10 @@ <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_in</tt> <tt class="py-op">=</tt> <tt class="py-number">0L</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-comment"># lock around outbound writes (packet computation)</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__write_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">RLock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__write_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">RLock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-comment"># keepalives:</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_interval</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_interval</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_last</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> </div><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt> @@ -174,7 +174,7 @@ <a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_bytes</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_packets</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-comment"># wait until the reset happens in both directions before clearing rekey flag</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">|=</tt> <tt class="py-number">1</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">|=</tt> <tt class="py-number">1</tt> </tt> <a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> @@ -192,7 +192,7 @@ <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets_overflow</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-comment"># wait until the reset happens in both directions before clearing rekey flag</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">|=</tt> <tt class="py-number">2</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">|=</tt> <tt class="py-number">2</tt> </tt> <a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> <a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__init_count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> @@ -263,7 +263,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-comment"># handle over-reading from reading the banner line</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">n</tt><tt class="py-op">]</tt> </tt> <a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt><tt class="py-op">[</tt><tt class="py-name">n</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">-=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> </tt> @@ -303,13 +303,13 @@ paramiko.win_pageant.PageantConnection.recv" class="py-name" href="#" onclick="r <a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-19', 'error', 'link-19');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> <a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-comment"># on Linux, sometimes instead of socket.timeout, we get</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># EAGAIN. this is a bug in recent (> 2.6.9) kernels but</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># we need to work around it.</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EAGAIN</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-comment"># EAGAIN. this is a bug in recent (> 2.6.9) kernels but</tt> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-comment"># we need to work around it.</tt> </tt> +<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EAGAIN</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">got_timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EINTR</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-comment"># syscall interrupted; try again</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__closed</tt><tt class="py-op">:</tt> </tt> <a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">EOFError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> @@ -337,12 +337,12 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">got_timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EINTR</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-comment"># syscall interrupted; try again</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> +<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> <a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt> <a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-comment"># could be: (32, 'Broken pipe')</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> +<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> <a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">got_timeout</tt><tt class="py-op">:</tt> </tt> <a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__closed</tt><tt class="py-op">:</tt> </tt> @@ -359,11 +359,11 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> Read a line from the socket. We assume no data is pending after the</tt> </tt> <a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> line, so it's okay to attempt large reads.</tt> </tt> <a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt> </tt> <a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'\n'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">buf</tt><tt class="py-op">:</tt> </tt> <a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_timeout</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> <a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt> <tt class="py-op">+=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-name">n</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remainder</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-name">n</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">n</tt><tt class="py-op">]</tt> </tt> <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">buf</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'\r'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> @@ -374,7 +374,7 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt class="py-docstring"> Write a block of data using the current cipher, as an SSH block.</tt> </tt> <a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-comment"># encrypt this sucka</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cmd</tt> <tt class="py-keyword">in</tt> <tt id="link-23" class="py-name" targets="Variable paramiko.auth_handler.MSG_NAMES=paramiko.auth_handler-module.html#MSG_NAMES,Variable paramiko.channel.MSG_NAMES=paramiko.channel-module.html#MSG_NAMES,Variable paramiko.client.MSG_NAMES=paramiko.client-module.html#MSG_NAMES,Variable paramiko.common.MSG_NAMES=paramiko.common-module.html#MSG_NAMES,Variable paramiko.dsskey.MSG_NAMES=paramiko.dsskey-module.html#MSG_NAMES,Variable paramiko.hostkeys.MSG_NAMES=paramiko.hostkeys-module.html#MSG_NAMES,Variable paramiko.kex_gex.MSG_NAMES=paramiko.kex_gex-module.html#MSG_NAMES,Variable paramiko.kex_group1.MSG_NAMES=paramiko.kex_group1-module.html#MSG_NAMES,Variable paramiko.packet.MSG_NAMES=paramiko.packet-module.html#MSG_NAMES,Variable paramiko.pkey.MSG_NAMES=paramiko.pkey-module.html#MSG_NAMES,Variable paramiko.rsakey.MSG_NAMES=paramiko.rsakey-module.html#MSG_NAMES,Variable paramiko.server.MSG_NAMES=paramiko.server-module.html#MSG_NAMES,Variable paramiko.sftp.MSG_NAMES=paramiko.sftp-module.html#MSG_NAMES,Variable paramiko.sftp_attr.MSG_NAMES=paramiko.sftp_attr-module.html#MSG_NAMES,Variable paramiko.sftp_client.MSG_NAMES=paramiko.sftp_client-module.html#MSG_NAMES,Variable paramiko.sftp_file.MSG_NAMES=paramiko.sftp_file-module.html#MSG_NAMES,Variable paramiko.sftp_handle.MSG_NAMES=paramiko.sftp_handle-module.html#MSG_NAMES,Variable paramiko.sftp_server.MSG_NAMES=paramiko.sftp_server-module.html#MSG_NAMES,Variable paramiko.sftp_si.MSG_NAMES=paramiko.sftp_si-module.html#MSG_NAMES,Variable paramiko.transport.MSG_NAMES=paramiko.transport-module.html#MSG_NAMES,Variable paramiko.util.MSG_NAMES=paramiko.util-module.html#MSG_NAMES"><a title="paramiko.auth_handler.MSG_NAMES paramiko.channel.MSG_NAMES @@ -476,7 +476,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-27', <a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-32', 'packet', 'link-25');">packet</a></tt> </tt> <a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-comment"># + mac</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_engine_out</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_engine_out</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_out</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-33" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-33', 'packet', 'link-25');">packet</a></tt> </tt> <a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt id="link-34" class="py-name" targets="Function paramiko.packet.compute_hmac()=paramiko.packet-module.html#compute_hmac"><a title="paramiko.packet.compute_hmac" class="py-name" href="#" onclick="return doclink('link-34', 'compute_hmac', 'link-34');">compute_hmac</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_key_out</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_engine_out</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_out</tt><tt class="py-op">]</tt> </tt> <a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_out</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_out</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt> </tt> @@ -486,7 +486,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-27', <a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_packets</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_packets</tt> <tt class="py-op">%</tt> <tt class="py-number">100</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-comment"># stirring the randpool takes 30ms on my ibook!!</tt> </tt> -<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-35" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt id="link-35" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -510,7 +510,7 @@ paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-3 <a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_packets</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">REKEY_PACKETS</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sent_bytes</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">REKEY_BYTES</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> \ </tt> <a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt><tt class="py-op">:</tt> </tt> <a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-comment"># only ask once for rekeying</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -574,7 +574,7 @@ paramiko.transport.DEBUG paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-38', 'DEBUG', 'link-26');">DEBUG</a></tt><tt class="py-op">,</tt> <tt id="link-39" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-39', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.util.format_binary" class="py-name" href="#" onclick="return doclink('link-40', 'format_binary', 'link-29');">format_binary</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">,</tt> <tt class="py-string">'IN: '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt> <a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> <a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-comment"># leftover contains decrypted bytes from the first block (after the length field)</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">leftover</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">leftover</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">packet_size</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">leftover</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_in</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-41" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-41', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid packet blocking'</tt><tt class="py-op">)</tt> </tt> <a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">read_all</tt><tt class="py-op">(</tt><tt class="py-name">packet_size</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_in</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">leftover</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> @@ -668,18 +668,18 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-58', <a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_in</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sequence_number_in</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt> </tt> <a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt> <a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-comment"># check for rekey</tt> </tt> -<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_bytes</tt> <tt class="py-op">+=</tt> <tt class="py-name">packet_size</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_in</tt> <tt class="py-op">+</tt> <tt class="py-number">4</tt> </tt> +<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_bytes</tt> <tt class="py-op">+=</tt> <tt class="py-name">packet_size</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mac_size_in</tt> <tt class="py-op">+</tt> <tt class="py-number">4</tt> </tt> <a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt><tt class="py-op">:</tt> </tt> <a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-comment"># we've asked to rekey -- give them 20 packets to comply before</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># dropping the connection</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets_overflow</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> +<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-comment"># dropping the connection</tt> </tt> +<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets_overflow</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets_overflow</tt> <tt class="py-op">>=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> <a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-60" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-60', 'SSHException', 'link-6');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Remote transport is ignoring rekey requests'</tt><tt class="py-op">)</tt> </tt> <a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_packets</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">REKEY_PACKETS</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> \ </tt> <a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__received_bytes</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">REKEY_BYTES</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-comment"># only ask once for rekeying</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -777,7 +777,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-64', </div><a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> </tt> <a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> </tt> <a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-comment">########## protected</tt> </tt> -<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> </tt> <a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> </tt> <a name="Packetizer._log"></a><div id="Packetizer._log-def"><a name="L403"></a><tt class="py-lineno">403</tt> <a class="py-toggle" href="#" id="Packetizer._log-toggle" onclick="return toggle('Packetizer._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.packet.Packetizer-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Packetizer._log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Packetizer._log-expanded"><a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__logger</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> @@ -792,7 +792,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-64', </div><div id="Packetizer._check_keepalive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Packetizer._check_keepalive-expanded"><a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_interval</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_engine_out</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> \ </tt> <a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt><tt class="py-op">:</tt> </tt> <a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-comment"># wait till we're encrypting, and not in the middle of rekeying</tt> </tt> -<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> </tt> +<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_last</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_interval</tt><tt class="py-op">:</tt> </tt> <a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__keepalive_callback</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -873,7 +873,7 @@ paramiko.win_pageant.PageantConnection.recv" class="py-name" href="#" onclick="r </div><a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> </tt> <a name="Packetizer._build_packet"></a><div id="Packetizer._build_packet-def"><a name="L472"></a><tt class="py-lineno">472</tt> <a class="py-toggle" href="#" id="Packetizer._build_packet-toggle" onclick="return toggle('Packetizer._build_packet');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.packet.Packetizer-class.html#_build_packet">_build_packet</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Packetizer._build_packet-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Packetizer._build_packet-expanded"><a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-comment"># pad up at least 4 bytes, to nearest block-size (usually 8)</tt> </tt> -<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">bsize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_out</tt> </tt> +<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">bsize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__block_size_out</tt> </tt> <a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-name">padding</tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> <tt class="py-op">+</tt> <tt class="py-name">bsize</tt> <tt class="py-op">-</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">bsize</tt><tt class="py-op">)</tt> </tt> <a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt id="link-71" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-71', 'packet', 'link-25');">packet</a></tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>IB'</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">padding</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">padding</tt><tt class="py-op">)</tt> </tt> <a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-72', 'packet', 'link-25');">packet</a></tt> <tt class="py-op">+=</tt> <tt class="py-name">payload</tt> </tt> @@ -902,13 +902,13 @@ paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-7 paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-75', 'get_bytes', 'link-75');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">padding</tt><tt class="py-op">)</tt> </tt> <a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-comment"># cute trick i caught openssh doing: if we're not encrypting,</tt> </tt> -<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># don't waste random bytes for the padding</tt> </tt> -<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-76" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-76', 'packet', 'link-25');">packet</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">padding</tt><tt class="py-op">)</tt> </tt> +<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-comment"># don't waste random bytes for the padding</tt> </tt> +<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-76', 'packet', 'link-25');">packet</a></tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">padding</tt><tt class="py-op">)</tt> </tt> <a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-77" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-77', 'packet', 'link-25');">packet</a></tt> </tt> </div><a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt> <a name="Packetizer._trigger_rekey"></a><div id="Packetizer._trigger_rekey-def"><a name="L486"></a><tt class="py-lineno">486</tt> <a class="py-toggle" href="#" id="Packetizer._trigger_rekey-toggle" onclick="return toggle('Packetizer._trigger_rekey');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.packet.Packetizer-class.html#_trigger_rekey">_trigger_rekey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="Packetizer._trigger_rekey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Packetizer._trigger_rekey-expanded"><a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-comment"># outside code should check for this flag</tt> </tt> -<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__need_rekey</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> </div></div><a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -942,7 +942,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.packet.NeedRekeyException-class.html b/docs/paramiko.packet.NeedRekeyException-class.html index fbfd820..5ecc707 100644 --- a/docs/paramiko.packet.NeedRekeyException-class.html +++ b/docs/paramiko.packet.NeedRekeyException-class.html @@ -84,15 +84,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -143,7 +148,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pipe-module.html b/docs/paramiko.pipe-module.html index 808764c..38bb8cd 100644 --- a/docs/paramiko.pipe-module.html +++ b/docs/paramiko.pipe-module.html @@ -135,6 +135,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== FUNCTION DETAILS ==================== --> <a name="section-FunctionDetails"></a> <table class="details" border="1" cellpadding="3" @@ -193,7 +209,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pipe-pysrc.html b/docs/paramiko.pipe-pysrc.html index 4a16395..ba5e45c 100644 --- a/docs/paramiko.pipe-pysrc.html +++ b/docs/paramiko.pipe-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.pipe-module.html" onclick="show_private();">Module paramiko.pipe</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Abstraction of a one-way pipe where the read end can be used in select().</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">Normally this is trivial, but Windows makes it nearly impossible.</tt> </tt> @@ -126,7 +126,7 @@ paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-4', 'close', 'link-3');">close</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_wfd</tt><tt class="py-op">)</tt> </tt> <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-comment"># used for unit tests:</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> </div><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt> <a name="PosixPipe.fileno"></a><div id="PosixPipe.fileno-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="PosixPipe.fileno-toggle" onclick="return toggle('PosixPipe.fileno');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pipe.PosixPipe-class.html#fileno">fileno</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="PosixPipe.fileno-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PosixPipe.fileno-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rfd</tt> </tt> @@ -164,7 +164,7 @@ paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink( <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">serv</tt><tt class="py-op">.</tt><tt class="py-name">listen</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt> <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-comment"># need to save sockets in _rsock/_wsock so they don't get closed</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rsock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> +<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rsock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rsock</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method paramiko.SSHClient.connect()=paramiko.SSHClient-class.html#connect,Method paramiko.Transport.connect()=paramiko.Transport-class.html#connect"><a title="paramiko.SSHClient.connect paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-8', 'connect', 'link-8');">connect</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'127.0.0.1'</tt><tt class="py-op">,</tt> <tt class="py-name">serv</tt><tt class="py-op">.</tt><tt class="py-name">getsockname</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> @@ -211,7 +211,7 @@ paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-12', 'close', 'link-3');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-comment"># used for unit tests:</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> </div><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt> <a name="WindowsPipe.fileno"></a><div id="WindowsPipe.fileno-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="WindowsPipe.fileno-toggle" onclick="return toggle('WindowsPipe.fileno');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pipe.WindowsPipe-class.html#fileno">fileno</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="WindowsPipe.fileno-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="WindowsPipe.fileno-expanded"><a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rsock</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno @@ -305,7 +305,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pipe.OrPipe-class.html b/docs/paramiko.pipe.OrPipe-class.html index 225310f..22f5f99 100644 --- a/docs/paramiko.pipe.OrPipe-class.html +++ b/docs/paramiko.pipe.OrPipe-class.html @@ -124,6 +124,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -131,7 +132,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -214,7 +217,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pipe.PosixPipe-class.html b/docs/paramiko.pipe.PosixPipe-class.html index b0b67eb..4491515 100644 --- a/docs/paramiko.pipe.PosixPipe-class.html +++ b/docs/paramiko.pipe.PosixPipe-class.html @@ -171,6 +171,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -178,7 +179,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -260,7 +263,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pipe.WindowsPipe-class.html b/docs/paramiko.pipe.WindowsPipe-class.html index 7e20560..50e4f2e 100644 --- a/docs/paramiko.pipe.WindowsPipe-class.html +++ b/docs/paramiko.pipe.WindowsPipe-class.html @@ -174,6 +174,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -181,7 +182,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -263,7 +266,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pkey-module.html b/docs/paramiko.pkey-module.html index baa61f7..3aae4f7 100644 --- a/docs/paramiko.pkey-module.html +++ b/docs/paramiko.pkey-module.html @@ -415,6 +415,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -502,7 +509,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.pkey-pysrc.html b/docs/paramiko.pkey-pysrc.html index 8a9e368..ef16bb0 100644 --- a/docs/paramiko.pkey-pysrc.html +++ b/docs/paramiko.pkey-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.pkey-module.html" onclick="show_private();">Module paramiko.pkey</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Common API for all public keys.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -95,7 +95,7 @@ <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt> <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-comment"># known encryption types for private key files:</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-11" class="py-name" targets="Variable paramiko.PKey._CIPHER_TABLE=paramiko.PKey-class.html#_CIPHER_TABLE"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-11', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable paramiko.PKey._CIPHER_TABLE=paramiko.PKey-class.html#_CIPHER_TABLE"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-11', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> <a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-string">'DES-EDE3-CBC'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'cipher'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">,</tt> <tt class="py-string">'keysize'</tt><tt class="py-op">:</tt> <tt class="py-number">24</tt><tt class="py-op">,</tt> <tt class="py-string">'blocksize'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt> <tt class="py-op">}</tt> </tt> <a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt> @@ -186,7 +186,7 @@ <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> format.</tt> </tt> <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">MD5</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">MD5</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-12', 'new', 'link-12');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt> <a name="PKey.get_base64"></a><div id="PKey.get_base64-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="PKey.get_base64-toggle" onclick="return toggle('PKey.get_base64');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#get_base64">get_base64</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="PKey.get_base64-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey.get_base64-expanded"><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -252,7 +252,7 @@ <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">=</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">=</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt id="link-12" class="py-name" targets="Class Method paramiko.PKey.from_private_key_file()=paramiko.PKey-class.html#from_private_key_file"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-12', 'from_private_key_file', 'link-12');">from_private_key_file</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-13" class="py-name"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-13', 'from_private_key_file', 'link-12');">from_private_key_file</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt id="link-13" class="py-name" targets="Class Method paramiko.PKey.from_private_key_file()=paramiko.PKey-class.html#from_private_key_file"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-13', 'from_private_key_file', 'link-13');">from_private_key_file</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="paramiko.PKey.from_private_key_file" class="py-name" href="#" onclick="return doclink('link-14', 'from_private_key_file', 'link-13');">from_private_key_file</a></tt><tt class="py-op">)</tt> </tt> <a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt> <a name="PKey.from_private_key"></a><div id="PKey.from_private_key-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="PKey.from_private_key-toggle" onclick="return toggle('PKey.from_private_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#from_private_key">from_private_key</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">file_obj</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="PKey.from_private_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey.from_private_key-expanded"><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -276,7 +276,7 @@ <a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">file_obj</tt><tt class="py-op">=</tt><tt class="py-name">file_obj</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">=</tt><tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt id="link-14" class="py-name" targets="Class Method paramiko.PKey.from_private_key()=paramiko.PKey-class.html#from_private_key"><a title="paramiko.PKey.from_private_key" class="py-name" href="#" onclick="return doclink('link-14', 'from_private_key', 'link-14');">from_private_key</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="paramiko.PKey.from_private_key" class="py-name" href="#" onclick="return doclink('link-15', 'from_private_key', 'link-14');">from_private_key</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt id="link-15" class="py-name" targets="Class Method paramiko.PKey.from_private_key()=paramiko.PKey-class.html#from_private_key"><a title="paramiko.PKey.from_private_key" class="py-name" href="#" onclick="return doclink('link-15', 'from_private_key', 'link-15');">from_private_key</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="paramiko.PKey.from_private_key" class="py-name" href="#" onclick="return doclink('link-16', 'from_private_key', 'link-15');">from_private_key</a></tt><tt class="py-op">)</tt> </tt> <a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt> <a name="PKey.write_private_key_file"></a><div id="PKey.write_private_key_file-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="PKey.write_private_key_file-toggle" onclick="return toggle('PKey.write_private_key_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#write_private_key_file">write_private_key_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="PKey.write_private_key_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey.write_private_key_file-expanded"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -331,9 +331,9 @@ <a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> encrypted, and C{password} is C{None}.</tt> </tt> <a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the key file is invalid.</tt> </tt> <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-16', 'open', 'link-16');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt> +<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-17', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt> <a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_private_key</tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -344,18 +344,18 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-17', 'close', 'link-17');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-18', 'close', 'link-18');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">data</tt> </tt> </div><a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt> <a name="PKey._read_private_key"></a><div id="PKey._read_private_key-def"><a name="L283"></a><tt class="py-lineno">283</tt> <a class="py-toggle" href="#" id="PKey._read_private_key-toggle" onclick="return toggle('PKey._read_private_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#_read_private_key">_read_private_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">f</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="PKey._read_private_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey._read_private_key-expanded"><a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method paramiko.BufferedFile.readlines()=paramiko.BufferedFile-class.html#readlines"><a title="paramiko.BufferedFile.readlines" class="py-name" href="#" onclick="return doclink('link-18', 'readlines', 'link-18');">readlines</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="PKey._read_private_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey._read_private_key-expanded"><a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method paramiko.BufferedFile.readlines()=paramiko.BufferedFile-class.html#readlines"><a title="paramiko.BufferedFile.readlines" class="py-name" href="#" onclick="return doclink('link-19', 'readlines', 'link-19');">readlines</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> <a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">start</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'-----BEGIN '</tt> <tt class="py-op">+</tt> <tt class="py-name">tag</tt> <tt class="py-op">+</tt> <tt class="py-string">' PRIVATE KEY-----'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">start</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-19" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-19', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'not a valid '</tt> <tt class="py-op">+</tt> <tt class="py-name">tag</tt> <tt class="py-op">+</tt> <tt class="py-string">' private key file'</tt><tt class="py-op">)</tt> </tt> +<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-20" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-20', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'not a valid '</tt> <tt class="py-op">+</tt> <tt class="py-name">tag</tt> <tt class="py-op">+</tt> <tt class="py-string">' private key file'</tt><tt class="py-op">)</tt> </tt> <a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-comment"># parse any headers first</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> <a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">start</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">': '</tt><tt class="py-op">)</tt> </tt> @@ -364,35 +364,35 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-name">l</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">l</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-comment"># find end</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> </tt> +<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">start</tt> </tt> <a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">end</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'-----END '</tt> <tt class="py-op">+</tt> <tt class="py-name">tag</tt> <tt class="py-op">+</tt> <tt class="py-string">' PRIVATE KEY-----'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">end</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">end</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> <a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-comment"># if we trudged to the end of the file, just try to cope.</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">decodestring</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">[</tt><tt class="py-name">start</tt><tt class="py-op">:</tt><tt class="py-name">end</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">binascii</tt><tt class="py-op">.</tt><tt class="py-name">Error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-20" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-20', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'base64 decoding error: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-21', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'base64 decoding error: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'proc-type'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt> <a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-comment"># unencryped: done</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">data</tt> </tt> +<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">data</tt> </tt> <a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-comment"># encrypted keyfile: will need a password</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'proc-type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'4,ENCRYPTED'</tt><tt class="py-op">:</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-21', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown private key structure "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'proc-type'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'proc-type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'4,ENCRYPTED'</tt><tt class="py-op">:</tt> </tt> +<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-22', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown private key structure "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'proc-type'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-name">encryption_type</tt><tt class="py-op">,</tt> <tt class="py-name">saltstr</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'dek-info'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">','</tt><tt class="py-op">)</tt> </tt> <a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> -<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-22', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse DEK-info in private key file'</tt><tt class="py-op">)</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">encryption_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-23', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-24" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-24', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown private key cipher "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">encryption_type</tt><tt class="py-op">)</tt> </tt> +<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-23" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-23', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse DEK-info in private key file'</tt><tt class="py-op">)</tt> </tt> +<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">encryption_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-24', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-25" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-25', 'SSHException', 'link-9');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown private key cipher "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">encryption_type</tt><tt class="py-op">)</tt> </tt> <a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-comment"># if no password was passed in, raise an exception pointing out that we need one</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-25" class="py-name"><a title="paramiko.PasswordRequiredException" class="py-name" href="#" onclick="return doclink('link-25', 'PasswordRequiredException', 'link-10');">PasswordRequiredException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Private key file is encrypted'</tt><tt class="py-op">)</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-26', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'cipher'</tt><tt class="py-op">]</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">keysize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-27', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'keysize'</tt><tt class="py-op">]</tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-28', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt> </tt> +<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-26" class="py-name"><a title="paramiko.PasswordRequiredException" class="py-name" href="#" onclick="return doclink('link-26', 'PasswordRequiredException', 'link-10');">PasswordRequiredException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Private key file is encrypted'</tt><tt class="py-op">)</tt> </tt> +<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-27', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'cipher'</tt><tt class="py-op">]</tt> </tt> +<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">keysize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-28', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'keysize'</tt><tt class="py-op">]</tt> </tt> +<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-29', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">encryption_type</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt> </tt> <a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">unhexlify</tt><tt class="py-op">(</tt><tt class="py-name">saltstr</tt><tt class="py-op">)</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-29', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Function paramiko.util.generate_key_bytes()=paramiko.util-module.html#generate_key_bytes"><a title="paramiko.util.generate_key_bytes" class="py-name" href="#" onclick="return doclink('link-30', 'generate_key_bytes', 'link-30');">generate_key_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">keysize</tt><tt class="py-op">)</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cipher</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decrypt</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-30', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Function paramiko.util.generate_key_bytes()=paramiko.util-module.html#generate_key_bytes"><a title="paramiko.util.generate_key_bytes" class="py-name" href="#" onclick="return doclink('link-31', 'generate_key_bytes', 'link-31');">generate_key_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">keysize</tt><tt class="py-op">)</tt> </tt> +<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cipher</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-32', 'new', 'link-12');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decrypt</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> </div><a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> </tt> <a name="PKey._write_private_key_file"></a><div id="PKey._write_private_key_file-def"><a name="L330"></a><tt class="py-lineno">330</tt> <a class="py-toggle" href="#" id="PKey._write_private_key_file-toggle" onclick="return toggle('PKey._write_private_key_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#_write_private_key_file">_write_private_key_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="PKey._write_private_key_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey._write_private_key_file-expanded"><a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -412,12 +412,12 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> <a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if there was an error writing the file.</tt> </tt> <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-31', 'open', 'link-16');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">,</tt> <tt class="py-number">0600</tt><tt class="py-op">)</tt> </tt> +<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-33', 'open', 'link-17');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">,</tt> <tt class="py-number">0600</tt><tt class="py-op">)</tt> </tt> <a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-comment"># grrr... the mode doesn't always take hold</tt> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.SFTPClient.chmod()=paramiko.SFTPClient-class.html#chmod,Method paramiko.SFTPFile.chmod()=paramiko.SFTPFile-class.html#chmod"><a title="paramiko.SFTPClient.chmod -paramiko.SFTPFile.chmod" class="py-name" href="#" onclick="return doclink('link-32', 'chmod', 'link-32');">chmod</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-number">0600</tt><tt class="py-op">)</tt> </tt> +<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.SFTPClient.chmod()=paramiko.SFTPClient-class.html#chmod,Method paramiko.SFTPFile.chmod()=paramiko.SFTPFile-class.html#chmod"><a title="paramiko.SFTPClient.chmod +paramiko.SFTPFile.chmod" class="py-name" href="#" onclick="return doclink('link-34', 'chmod', 'link-34');">chmod</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-number">0600</tt><tt class="py-op">)</tt> </tt> <a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_write_private_key</tt><tt class="py-op">(</tt><tt class="py-name">tag</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.Agent.close +<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -428,19 +428,19 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-33', 'close', 'link-17');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-35', 'close', 'link-18');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt> <a name="PKey._write_private_key"></a><div id="PKey._write_private_key-def"><a name="L354"></a><tt class="py-lineno">354</tt> <a class="py-toggle" href="#" id="PKey._write_private_key-toggle" onclick="return toggle('PKey._write_private_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.pkey.PKey-class.html#_write_private_key">_write_private_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">f</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="PKey._write_private_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey._write_private_key-expanded"><a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-34', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'-----BEGIN %s PRIVATE KEY-----\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt> +</div><div id="PKey._write_private_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PKey._write_private_key-expanded"><a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-36', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'-----BEGIN %s PRIVATE KEY-----\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt> <a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-comment"># since we only support one cipher here, use it</tt> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">cipher_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-35', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-36', 'keys', 'link-36');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-37', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'cipher'</tt><tt class="py-op">]</tt> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">keysize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-38', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'keysize'</tt><tt class="py-op">]</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">blocksize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-39', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'blocksize'</tt><tt class="py-op">]</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-40', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-name">cipher_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-37', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-38', 'keys', 'link-38');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-39', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'cipher'</tt><tt class="py-op">]</tt> </tt> +<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">keysize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-40', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'keysize'</tt><tt class="py-op">]</tt> </tt> +<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">blocksize</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-41', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'blocksize'</tt><tt class="py-op">]</tt> </tt> +<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.PKey._CIPHER_TABLE" class="py-name" href="#" onclick="return doclink('link-42', '_CIPHER_TABLE', 'link-11');">_CIPHER_TABLE</a></tt><tt class="py-op">[</tt><tt class="py-name">cipher_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt> </tt> +<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -460,31 +460,31 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-41', 'randpool', 'link-41');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-42', 'get_bytes', 'link-42');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-43', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.util.generate_key_bytes" class="py-name" href="#" onclick="return doclink('link-44', 'generate_key_bytes', 'link-30');">generate_key_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">keysize</tt><tt class="py-op">)</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-43', 'randpool', 'link-43');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-44', 'get_bytes', 'link-44');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt> +<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-45', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="paramiko.util.generate_key_bytes" class="py-name" href="#" onclick="return doclink('link-46', 'generate_key_bytes', 'link-31');">generate_key_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">keysize</tt><tt class="py-op">)</tt> </tt> <a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">blocksize</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">blocksize</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">blocksize</tt> </tt> <a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-comment">#data += randpool.get_bytes(n)</tt> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># that would make more sense ^, but it confuses openssh.</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">data</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\0'</tt> <tt class="py-op">*</tt> <tt class="py-name">n</tt> </tt> -<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">cipher</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encrypt</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-45', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'Proc-Type: 4,ENCRYPTED\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-46', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'DEK-Info: %s,%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">cipher_name</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-47', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-comment"># that would make more sense ^, but it confuses openssh.</tt> </tt> +<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\0'</tt> <tt class="py-op">*</tt> <tt class="py-name">n</tt> </tt> +<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">cipher</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-47', 'new', 'link-12');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encrypt</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-48', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'Proc-Type: 4,ENCRYPTED\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-49', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'DEK-Info: %s,%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">cipher_name</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-50', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> <a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-comment"># re-wrap to 64-char lines</tt> </tt> -<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt> <tt class="py-op">:</tt> <tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">64</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">64</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-48', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-49', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-50', 'write', 'link-34');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'-----END %s PRIVATE KEY-----\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt> +<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-51', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-52', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-53', 'write', 'link-36');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'-----END %s PRIVATE KEY-----\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">tag</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -518,7 +518,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.primes-module.html b/docs/paramiko.primes-module.html index 8ce7a25..9dcef85 100644 --- a/docs/paramiko.primes-module.html +++ b/docs/paramiko.primes-module.html @@ -74,6 +74,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -100,7 +116,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.primes-pysrc.html b/docs/paramiko.primes-pysrc.html index 41800d7..dee92dc 100644 --- a/docs/paramiko.primes-pysrc.html +++ b/docs/paramiko.primes-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.primes-module.html" onclick="show_private();">Module paramiko.primes</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Utility functions for dealing with primes.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -87,7 +87,7 @@ <a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-name">hbyte_mask</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">bits</tt> <tt class="py-op">%</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-comment"># loop catches the case where we increment n into a higher bit-range</tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -127,12 +127,12 @@ paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">hbyte_mask</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">bits</tt> <tt class="py-op">%</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-comment"># so here's the plan:</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># we fetch as many random bits as we'd need to fit N-1, and if the</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># generated number is >= N, we try again. in the worst case (N-1 is a</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># power of 2), we have slightly better than 50% odds of getting one that</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># fits, so i can't guarantee that this loop will ever finish, but the odds</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># of it looping forever should be infinitesimal.</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-comment"># we fetch as many random bits as we'd need to fit N-1, and if the</tt> </tt> +<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-comment"># generated number is >= N, we try again. in the worst case (N-1 is a</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-comment"># power of 2), we have slightly better than 50% odds of getting one that</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-comment"># fits, so i can't guarantee that this loop will ever finish, but the odds</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-comment"># of it looping forever should be infinitesimal.</tt> </tt> +<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">rpool</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="paramiko.Message.get_bytes paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-13', 'get_bytes', 'link-6');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">bytes</tt><tt class="py-op">)</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hbyte_mask</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> @@ -151,7 +151,7 @@ paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt> <a name="ModulusPack.__init__"></a><div id="ModulusPack.__init__-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="ModulusPack.__init__-toggle" onclick="return toggle('ModulusPack.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.primes.ModulusPack-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">rpool</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="ModulusPack.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ModulusPack.__init__-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-comment"># pack is a hash of: bits -> [ (generator, modulus) ... ]</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">discarded</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool @@ -185,19 +185,19 @@ paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-1 <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">modulus</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">modulus</tt><tt class="py-op">,</tt> <tt class="py-number">16</tt><tt class="py-op">)</tt> </tt> <a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-comment"># weed out primes that aren't at least:</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># type 2 (meets basic structural requirements)</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># test 4 (more than just a small-prime sieve)</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># tries < 100 if test & 4 (at least 100 tries of miller-rabin)</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">mod_type</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op"><</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op">&</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op"><</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">tries</tt> <tt class="py-op"><</tt> <tt class="py-number">100</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-comment"># type 2 (meets basic structural requirements)</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-comment"># test 4 (more than just a small-prime sieve)</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-comment"># tries < 100 if test & 4 (at least 100 tries of miller-rabin)</tt> </tt> +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">mod_type</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op"><</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op">&</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">tests</tt> <tt class="py-op"><</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">tries</tt> <tt class="py-op"><</tt> <tt class="py-number">100</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">discarded</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">modulus</tt><tt class="py-op">,</tt> <tt class="py-string">'does not meet basic requirements'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">generator</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">generator</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt> <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-comment"># there's a bug in the ssh "moduli" file (yeah, i know: shock! dismay!</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># call cnn!) where it understates the bit lengths of these primes by 1.</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># this is okay.</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">bl</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-17', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-18', 'bit_length', 'link-10');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">modulus</tt><tt class="py-op">)</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># call cnn!) where it understates the bit lengths of these primes by 1.</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-comment"># this is okay.</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">bl</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-17', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-18', 'bit_length', 'link-10');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">modulus</tt><tt class="py-op">)</tt> </tt> <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">bl</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">bl</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">discarded</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">modulus</tt><tt class="py-op">,</tt> <tt class="py-string">'incorrectly reported bit length %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> @@ -239,24 +239,24 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-22', 'SSHException', 'link-4');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'no moduli available'</tt><tt class="py-op">)</tt> </tt> <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-comment"># find nearest bitsize >= preferred</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">:</tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">:</tt> </tt> <a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op">>=</tt> <tt class="py-name">prefer</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op"><</tt> <tt class="py-name">max</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op"><</tt> <tt class="py-name">good</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">good</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt> </tt> <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-comment"># if that failed, find greatest bitsize >= min</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">good</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">good</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">:</tt> </tt> <a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op">>=</tt> <tt class="py-name">min</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op"><</tt> <tt class="py-name">max</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">b</tt> <tt class="py-op">></tt> <tt class="py-name">good</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt> </tt> <a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">good</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> <a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-comment"># their entire (min, max) range has no intersection with our range.</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># if their range is below ours, pick the smallest. otherwise pick</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># the largest. it'll be out of their range requirement either way,</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># but we'll be sending them the closest one we have.</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># if their range is below ours, pick the smallest. otherwise pick</tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-comment"># the largest. it'll be out of their range requirement either way,</tt> </tt> +<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-comment"># but we'll be sending them the closest one we have.</tt> </tt> +<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> <a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">min</tt> <tt class="py-op">></tt> <tt class="py-name">good</tt><tt class="py-op">:</tt> </tt> <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">good</tt> <tt class="py-op">=</tt> <tt class="py-name">bitsizes</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> <a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-comment"># now pick a random modulus of this bitsize</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">_roll_random</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="paramiko.auth_handler.randpool +<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">_roll_random</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -311,7 +311,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.primes.ModulusPack-class.html b/docs/paramiko.primes.ModulusPack-class.html index 6789760..7f7c2f0 100644 --- a/docs/paramiko.primes.ModulusPack-class.html +++ b/docs/paramiko.primes.ModulusPack-class.html @@ -131,6 +131,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -138,7 +139,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -245,7 +248,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:30 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.resource-module.html b/docs/paramiko.resource-module.html index 2219925..ae3da65 100644 --- a/docs/paramiko.resource-module.html +++ b/docs/paramiko.resource-module.html @@ -71,6 +71,13 @@ <a name="ResourceManager"></a><span class="summary-name">ResourceManager</span> = <code title="ResourceManager()">ResourceManager()</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> </table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" @@ -98,7 +105,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.resource-pysrc.html b/docs/paramiko.resource-pysrc.html index 86d5279..ef18bc3 100644 --- a/docs/paramiko.resource-pysrc.html +++ b/docs/paramiko.resource-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.resource-module.html" onclick="show_private();">Module paramiko.resource</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">Resource manager.</tt> </tt> <a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -131,12 +131,12 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_table</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt id="link-2" class="py-name"><a title="paramiko.resource" class="py-name" href="#" onclick="return doclink('link-2', 'resource', 'link-0');">resource</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> </div><a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> </tt> <a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"> <tt class="py-comment"># keep the weakref in a table so it sticks around long enough to get</tt> </tt> -<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># its callback called. :)</tt> </tt> -<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_table</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name"><a title="paramiko.resource" class="py-name" href="#" onclick="return doclink('link-3', 'resource', 'link-0');">resource</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">ref</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt> +<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"> <tt class="py-comment"># its callback called. :)</tt> </tt> +<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_table</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name"><a title="paramiko.resource" class="py-name" href="#" onclick="return doclink('link-3', 'resource', 'link-0');">resource</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">ref</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> </tt> <a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> </tt> <a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"><tt class="py-comment"># singleton</tt> </tt> -<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-4" class="py-name" targets="Variable paramiko.resource.ResourceManager=paramiko.resource-module.html#ResourceManager"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-4', 'ResourceManager', 'link-4');">ResourceManager</a></tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-5', 'ResourceManager', 'link-4');">ResourceManager</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable paramiko.resource.ResourceManager=paramiko.resource-module.html#ResourceManager"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-4', 'ResourceManager', 'link-4');">ResourceManager</a></tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name"><a title="paramiko.resource.ResourceManager" class="py-name" href="#" onclick="return doclink('link-5', 'ResourceManager', 'link-4');">ResourceManager</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -170,7 +170,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng-module.html b/docs/paramiko.rng-module.html index bb81ec3..6cf9430 100644 --- a/docs/paramiko.rng-module.html +++ b/docs/paramiko.rng-module.html @@ -86,6 +86,13 @@ <a name="rng_device"></a><span class="summary-name">rng_device</span> = <code title="rng_posix.open_rng_device()">rng_posix.open_rng_device()</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> </table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" @@ -113,7 +120,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng-pysrc.html b/docs/paramiko.rng-pysrc.html index 1e91cb8..4555c63 100644 --- a/docs/paramiko.rng-pysrc.html +++ b/docs/paramiko.rng-pysrc.html @@ -55,25 +55,25 @@ <h1 class="epydoc">Source Code for <a href="paramiko.rng-module.html" onclick="show_private();">Module paramiko.rng</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#!/usr/bin/python</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> +<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt> <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt> <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Util</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool @@ -108,24 +108,24 @@ paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-0 <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">^</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> </div><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Find a strong random entropy source, depending on the detected platform.</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## WARNING TO DEVELOPERS: This will fail on some systems, but do NOT use</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Crypto.Util.randpool.RandomPool as a fall-back. RandomPool will happily run</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## with very little entropy, thus _silently_ defeating any security that</tt> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Paramiko attempts to provide. (This is current as of PyCrypto 2.0.1).</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## See http://www.lag.net/pipermail/paramiko/2008-January/000599.html</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## and http://www.lag.net/pipermail/paramiko/2008-April/000678.html</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment">## Find a strong random entropy source, depending on the detected platform.</tt> </tt> +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment">## WARNING TO DEVELOPERS: This will fail on some systems, but do NOT use</tt> </tt> +<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-comment">## Crypto.Util.randpool.RandomPool as a fall-back. RandomPool will happily run</tt> </tt> +<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-comment">## with very little entropy, thus _silently_ defeating any security that</tt> </tt> +<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-comment">## Paramiko attempts to provide. (This is current as of PyCrypto 2.0.1).</tt> </tt> +<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-comment">## See http://www.lag.net/pipermail/paramiko/2008-January/000599.html</tt> </tt> +<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-comment">## and http://www.lag.net/pipermail/paramiko/2008-April/000678.html</tt> </tt> +<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-comment">##</tt> </tt> +<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt> <a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">platform</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">system</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'windows'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt> <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-comment"># MS Windows</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-1', 'paramiko', 'link-1');">paramiko</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module paramiko.rng_win32=paramiko.rng_win32-module.html"><a title="paramiko.rng_win32" class="py-name" href="#" onclick="return doclink('link-2', 'rng_win32', 'link-2');">rng_win32</a></tt> </tt> +<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-1', 'paramiko', 'link-1');">paramiko</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module paramiko.rng_win32=paramiko.rng_win32-module.html"><a title="paramiko.rng_win32" class="py-name" href="#" onclick="return doclink('link-2', 'rng_win32', 'link-2');">rng_win32</a></tt> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt id="link-3" class="py-name" targets="Variable paramiko.rng.rng_device=paramiko.rng-module.html#rng_device"><a title="paramiko.rng.rng_device" class="py-name" href="#" onclick="return doclink('link-3', 'rng_device', 'link-3');">rng_device</a></tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="paramiko.rng_win32" class="py-name" href="#" onclick="return doclink('link-4', 'rng_win32', 'link-2');">rng_win32</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Function paramiko.rng_posix.open_rng_device()=paramiko.rng_posix-module.html#open_rng_device,Function paramiko.rng_win32.open_rng_device()=paramiko.rng_win32-module.html#open_rng_device"><a title="paramiko.rng_posix.open_rng_device paramiko.rng_win32.open_rng_device" class="py-name" href="#" onclick="return doclink('link-5', 'open_rng_device', 'link-5');">open_rng_device</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-comment"># Assume POSIX (any system where /dev/urandom exists)</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-6', 'paramiko', 'link-1');">paramiko</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module paramiko.rng_posix=paramiko.rng_posix-module.html"><a title="paramiko.rng_posix" class="py-name" href="#" onclick="return doclink('link-7', 'rng_posix', 'link-7');">rng_posix</a></tt> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-6', 'paramiko', 'link-1');">paramiko</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module paramiko.rng_posix=paramiko.rng_posix-module.html"><a title="paramiko.rng_posix" class="py-name" href="#" onclick="return doclink('link-7', 'rng_posix', 'link-7');">rng_posix</a></tt> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="paramiko.rng.rng_device" class="py-name" href="#" onclick="return doclink('link-8', 'rng_device', 'link-3');">rng_device</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="paramiko.rng_posix" class="py-name" href="#" onclick="return doclink('link-9', 'rng_posix', 'link-7');">rng_posix</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="paramiko.rng_posix.open_rng_device paramiko.rng_win32.open_rng_device" class="py-name" href="#" onclick="return doclink('link-10', 'open_rng_device', 'link-5');">open_rng_device</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt> @@ -170,7 +170,7 @@ paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-1 <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entropy</tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="paramiko.rng.rng_device" class="py-name" href="#" onclick="return doclink('link-12', 'rng_device', 'link-3');">rng_device</a></tt> </tt> <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-comment"># Stir 256 bits of entropy from the RNG device into the RandomPool.</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="paramiko.auth_handler.randpool +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -313,7 +313,7 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu <a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> </div></div><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-comment"># vim:set ts=4 sw=4 sts=4 expandtab:</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript"> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -346,7 +346,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng.StrongLockingRandomPool-class.html b/docs/paramiko.rng.StrongLockingRandomPool-class.html index a1d792a..845bde6 100644 --- a/docs/paramiko.rng.StrongLockingRandomPool-class.html +++ b/docs/paramiko.rng.StrongLockingRandomPool-class.html @@ -169,6 +169,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -176,7 +177,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -259,7 +262,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_posix-module.html b/docs/paramiko.rng_posix-module.html index cb912ad..7697c55 100644 --- a/docs/paramiko.rng_posix-module.html +++ b/docs/paramiko.rng_posix-module.html @@ -96,6 +96,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -122,7 +138,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_posix-pysrc.html b/docs/paramiko.rng_posix-pysrc.html index 108ba64..a116ea8 100644 --- a/docs/paramiko.rng_posix-pysrc.html +++ b/docs/paramiko.rng_posix-pysrc.html @@ -55,26 +55,26 @@ <h1 class="epydoc">Source Code for <a href="paramiko.rng_posix-module.html" onclick="show_private();">Module paramiko.rng_posix</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#!/usr/bin/python</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 Open Systems Canada Limited</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> -<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2008 Open Systems Canada Limited</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> +<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"> </tt> <a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> <a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Method paramiko.SFTPClient.stat()=paramiko.SFTPClient-class.html#stat,Method paramiko.SFTPFile.stat()=paramiko.SFTPFile-class.html#stat,Method paramiko.SFTPHandle.stat()=paramiko.SFTPHandle-class.html#stat,Method paramiko.SFTPServerInterface.stat()=paramiko.SFTPServerInterface-class.html#stat"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat @@ -119,28 +119,28 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> </tt> <a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> </tt> +<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> </tt> <a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">device_path</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-name">device_path</tt> <tt class="py-op">=</tt> <tt class="py-string">"/dev/urandom"</tt> </tt> <a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> </tt> <a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt class="py-comment"># Try to open /dev/urandom now so that paramiko will be able to access</tt> </tt> -<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># it even if os.chroot() is invoked later.</tt> </tt> -<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> <tt class="py-comment"># it even if os.chroot() is invoked later.</tt> </tt> +<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-7', 'open', 'link-7');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">device_path</tt><tt class="py-op">,</tt> <tt class="py-string">"rb"</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> <a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EnvironmentError</tt><tt class="py-op">:</tt> </tt> <a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-8" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-8', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to open /dev/urandom"</tt><tt class="py-op">)</tt> </tt> -<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> </tt> +<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> </tt> <a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> <tt class="py-comment"># Open a second file descriptor for sanity checking later.</tt> </tt> -<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-9', 'open', 'link-7');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">device_path</tt><tt class="py-op">,</tt> <tt class="py-string">"rb"</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> <a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EnvironmentError</tt><tt class="py-op">:</tt> </tt> <a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-10" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-10', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to open /dev/urandom"</tt><tt class="py-op">)</tt> </tt> <a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"> </tt> <a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-comment"># Check that /dev/urandom is a character special device, not a regular file.</tt> </tt> -<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">fstat</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno +<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">fstat</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno paramiko.pipe.PosixPipe.fileno paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-11', 'fileno', 'link-11');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># f</tt> </tt> <a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-12" class="py-name"><a title="paramiko.SFTPClient.stat @@ -152,7 +152,7 @@ paramiko.SFTPHandle.stat paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-13', 'stat', 'link-0');">stat</a></tt><tt class="py-op">.</tt><tt class="py-name">S_ISCHR</tt><tt class="py-op">(</tt><tt class="py-name">st</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-14" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-14', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"/dev/urandom is not a character special device"</tt><tt class="py-op">)</tt> </tt> -<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> </tt> +<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> </tt> <a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">fstat</tt><tt class="py-op">(</tt><tt class="py-name">g</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="paramiko.Channel.fileno paramiko.pipe.PosixPipe.fileno paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-15', 'fileno', 'link-11');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># g</tt> </tt> @@ -165,9 +165,9 @@ paramiko.SFTPHandle.stat paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-17', 'stat', 'link-0');">stat</a></tt><tt class="py-op">.</tt><tt class="py-name">S_ISCHR</tt><tt class="py-op">(</tt><tt class="py-name">st</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-18" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-18', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"/dev/urandom is not a character special device"</tt><tt class="py-op">)</tt> </tt> -<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> </tt> +<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> </tt> <a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-comment"># Check that /dev/urandom always returns the number of bytes requested</tt> </tt> -<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="paramiko.BufferedFile.read +<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-19', 'read', 'link-4');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> <a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="paramiko.BufferedFile.read @@ -176,14 +176,14 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu <a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> <a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-21', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error reading from /dev/urandom: input truncated"</tt><tt class="py-op">)</tt> </tt> -<a name="L78"></a><tt class="py-lineno">78</tt> <tt class="py-line"> </tt> +<a name="L78"></a><tt class="py-lineno">78</tt> <tt class="py-line"> </tt> <a name="L79"></a><tt class="py-lineno">79</tt> <tt class="py-line"> <tt class="py-comment"># Check that different reads return different data</tt> </tt> -<a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> +<a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> <a name="L81"></a><tt class="py-lineno">81</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-22" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-22', 'error', 'link-8');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"/dev/urandom is broken; returning identical data: %r == %r"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L82"></a><tt class="py-lineno">82</tt> <tt class="py-line"> </tt> <a name="L83"></a><tt class="py-lineno">83</tt> <tt class="py-line"> <tt class="py-comment"># Close the duplicate file object</tt> </tt> -<a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="paramiko.Agent.close +<a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -197,7 +197,7 @@ paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-23', 'close', 'link-6');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L85"></a><tt class="py-lineno">85</tt> <tt class="py-line"> </tt> <a name="L86"></a><tt class="py-lineno">86</tt> <tt class="py-line"> <tt class="py-comment"># Return the first file object</tt> </tt> -<a name="L87"></a><tt class="py-lineno">87</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">_RNG</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L87"></a><tt class="py-lineno">87</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_RNG</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> <a name="L88"></a><tt class="py-lineno">88</tt> <tt class="py-line"> </tt> <a name="L89"></a><tt class="py-lineno">89</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-24" class="py-name"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-24', 'error', 'link-8');">error</a></tt><tt class="py-op">:</tt> </tt> @@ -230,7 +230,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L94"></a><tt class="py-lineno">94</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt> </div><a name="L95"></a><tt class="py-lineno">95</tt> <tt class="py-line"> </tt> <a name="L96"></a><tt class="py-lineno">96</tt> <tt class="py-line"><tt class="py-comment"># vim:set ts=4 sw=4 sts=4 expandtab:</tt> </tt> -<a name="L97"></a><tt class="py-lineno">97</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript"> +<a name="L97"></a><tt class="py-lineno">97</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -263,7 +263,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_posix.error-class.html b/docs/paramiko.rng_posix.error-class.html index 6224757..73d00b0 100644 --- a/docs/paramiko.rng_posix.error-class.html +++ b/docs/paramiko.rng_posix.error-class.html @@ -84,15 +84,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -143,7 +148,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_win32-module.html b/docs/paramiko.rng_win32-module.html index 3bbbfa8..55143af 100644 --- a/docs/paramiko.rng_win32-module.html +++ b/docs/paramiko.rng_win32-module.html @@ -95,6 +95,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -121,7 +137,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_win32-pysrc.html b/docs/paramiko.rng_win32-pysrc.html index 450e713..c20c79b 100644 --- a/docs/paramiko.rng_win32-pysrc.html +++ b/docs/paramiko.rng_win32-pysrc.html @@ -55,37 +55,37 @@ <h1 class="epydoc">Source Code for <a href="paramiko.rng_win32-module.html">Module paramiko.rng_win32</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#!/usr/bin/python</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 Open Systems Canada Limited</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: ascii -*-</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net></tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2008 Open Systems Canada Limited</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</tt> </tt> +<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> </tt> <a name="error"></a><div id="error-def"><a name="L22"></a><tt class="py-lineno"> 22</tt> <a class="py-toggle" href="#" id="error-toggle" onclick="return toggle('error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.rng_win32.error-class.html">error</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="error-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="error-expanded"><a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> </div><a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt> <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-comment"># Try to import the "winrandom" module</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Util</tt> <tt class="py-keyword">import</tt> <tt class="py-name">winrandom</tt> <tt class="py-keyword">as</tt> <tt id="link-0" class="py-name" targets="Variable paramiko.rng_win32._winrandom=paramiko.rng_win32-module.html#_winrandom"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-0', '_winrandom', 'link-0');">_winrandom</a></tt> </tt> <a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> <a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt id="link-1" class="py-name"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-1', '_winrandom', 'link-0');">_winrandom</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt> <a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-comment"># Try to import the "urandom" module</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">os</tt> <tt class="py-keyword">import</tt> <tt class="py-name">urandom</tt> <tt class="py-keyword">as</tt> <tt class="py-name">_urandom</tt> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-name">_urandom</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> @@ -99,11 +99,11 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu </div><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt> <a name="_RNG.randomize"></a><div id="_RNG.randomize-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="_RNG.randomize-toggle" onclick="return toggle('_RNG.randomize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rng_win32._RNG-class.html#randomize">randomize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="_RNG.randomize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_RNG.randomize-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-comment"># According to "Cryptanalysis of the Random Number Generator of the</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># Windows Operating System", by Leo Dorrendorf and Zvi Gutterman</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># and Benny Pinkas <http://eprint.iacr.org/2007/419>,</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># CryptGenRandom only updates its internal state using kernel-provided</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># random data every 128KiB of output.</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="paramiko.BufferedFile.read +<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-comment"># Windows Operating System", by Leo Dorrendorf and Zvi Gutterman</tt> </tt> +<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-comment"># and Benny Pinkas <http://eprint.iacr.org/2007/419>,</tt> </tt> +<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-comment"># CryptGenRandom only updates its internal state using kernel-provided</tt> </tt> +<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-comment"># random data every 128KiB of output.</tt> </tt> +<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-3', 'read', 'link-2');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">128</tt><tt class="py-op">*</tt><tt class="py-number">1024</tt><tt class="py-op">)</tt> <tt class="py-comment"># discard 128 KiB of output</tt> </tt> </div></div><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt> @@ -113,88 +113,88 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-5', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Crypto.Util.winrandom module not found"</tt><tt class="py-op">)</tt> </tt> <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-comment"># Check that we can open the winrandom module</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">r0</tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-6', '_winrandom', 'link-0');">_winrandom</a></tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">r1</tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-7', '_winrandom', 'link-0');">_winrandom</a></tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">r0</tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-6', '_winrandom', 'link-0');">_winrandom</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-7', 'new', 'link-7');">new</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">r1</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="paramiko.rng_win32._winrandom" class="py-name" href="#" onclick="return doclink('link-8', '_winrandom', 'link-0');">_winrandom</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-9', 'new', 'link-7');">new</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-8" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-8', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom.new() failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-10" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-10', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom.new() failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-comment"># Check that we can read from the winrandom module</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">r0</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-9', 'get_bytes', 'link-9');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">r1</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-10', 'get_bytes', 'link-9');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">r0</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-11', 'get_bytes', 'link-11');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">r1</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-12', 'get_bytes', 'link-11');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-11" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-11', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom get_bytes failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-13" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-13', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom get_bytes failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-comment"># Check that the requested number of bytes are returned</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-12" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-12', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error reading from winrandom: input truncated"</tt><tt class="py-op">)</tt> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-14" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-14', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error reading from winrandom: input truncated"</tt><tt class="py-op">)</tt> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt> <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># Check that different reads return different data</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-13" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-13', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom broken: returning identical data"</tt><tt class="py-op">)</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-15" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-15', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"winrandom broken: returning identical data"</tt><tt class="py-op">)</tt> </tt> <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_RNG</tt><tt class="py-op">(</tt><tt class="py-name">r0</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-14', 'get_bytes', 'link-9');">get_bytes</a></tt><tt class="py-op">)</tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_RNG</tt><tt class="py-op">(</tt><tt class="py-name">r0</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-16', 'get_bytes', 'link-11');">get_bytes</a></tt><tt class="py-op">)</tt> </tt> </div><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt> <a name="_open_urandom"></a><div id="_open_urandom-def"><a name="L78"></a><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="_open_urandom-toggle" onclick="return toggle('_open_urandom');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rng_win32-module.html#_open_urandom">_open_urandom</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="_open_urandom-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_open_urandom-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_urandom</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-15" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-15', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom function not found"</tt><tt class="py-op">)</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-17" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-17', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom function not found"</tt><tt class="py-op">)</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-comment"># Check that we can read from os.urandom()</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">_urandom</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">_urandom</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt> <a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">:</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-16" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-16', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> +<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-18" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-18', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">exc</tt><tt class="py-op">)</tt> </tt> <a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-comment"># Check that the requested number of bytes are returned</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-17" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-17', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: input truncated"</tt><tt class="py-op">)</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt> <tt class="py-keyword">or</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">20</tt><tt class="py-op">:</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-19" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-19', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: input truncated"</tt><tt class="py-op">)</tt> </tt> <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt> <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-comment"># Check that different reads return different data</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-18" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-18', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: returning identical data"</tt><tt class="py-op">)</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op">==</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-20" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-20', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"os.urandom failed: returning identical data"</tt><tt class="py-op">)</tt> </tt> <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_RNG</tt><tt class="py-op">(</tt><tt class="py-name">_urandom</tt><tt class="py-op">)</tt> </tt> </div><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt> <a name="open_rng_device"></a><div id="open_rng_device-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="open_rng_device-toggle" onclick="return toggle('open_rng_device');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rng_win32-module.html#open_rng_device">open_rng_device</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="open_rng_device-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="open_rng_device-expanded"><a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># Try using the Crypto.Util.winrandom module</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_open_winrandom</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-19" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-19', 'error', 'link-5');">error</a></tt><tt class="py-op">:</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-21" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-21', 'error', 'link-5');">error</a></tt><tt class="py-op">:</tt> </tt> <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt> <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-comment"># Several versions of PyCrypto do not contain the winrandom module, but</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># Python >= 2.4 has os.urandom, so try to use that.</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-comment"># Python >= 2.4 has os.urandom, so try to use that.</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_open_urandom</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-20" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-20', 'error', 'link-5');">error</a></tt><tt class="py-op">:</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-22" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-22', 'error', 'link-5');">error</a></tt><tt class="py-op">:</tt> </tt> <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt> <a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-comment"># SECURITY NOTE: DO NOT USE Crypto.Util.randpool.RandomPool HERE!</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># If we got to this point, RandomPool will silently run with very little</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># entropy. (This is current as of PyCrypto 2.0.1).</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># See http://www.lag.net/pipermail/paramiko/2008-January/000599.html</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># and http://www.lag.net/pipermail/paramiko/2008-April/000678.html</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-21', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to find a strong random entropy source. You cannot run this software securely under the current configuration."</tt><tt class="py-op">)</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-comment"># If we got to this point, RandomPool will silently run with very little</tt> </tt> +<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-comment"># entropy. (This is current as of PyCrypto 2.0.1).</tt> </tt> +<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-comment"># See http://www.lag.net/pipermail/paramiko/2008-January/000599.html</tt> </tt> +<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment"># and http://www.lag.net/pipermail/paramiko/2008-April/000678.html</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-23" class="py-name"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-23', 'error', 'link-5');">error</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unable to find a strong random entropy source. You cannot run this software securely under the current configuration."</tt><tt class="py-op">)</tt> </tt> </div><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt> <a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-comment"># vim:set ts=4 sw=4 sts=4 expandtab:</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt><script type="text/javascript"> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -227,7 +227,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rng_win32.error-class.html b/docs/paramiko.rng_win32.error-class.html index 6f5c6a7..cfe09e4 100644 --- a/docs/paramiko.rng_win32.error-class.html +++ b/docs/paramiko.rng_win32.error-class.html @@ -84,15 +84,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -143,7 +148,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rsakey-module.html b/docs/paramiko.rsakey-module.html index 3c810da..a54d794 100644 --- a/docs/paramiko.rsakey-module.html +++ b/docs/paramiko.rsakey-module.html @@ -415,6 +415,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -502,7 +509,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.rsakey-pysrc.html b/docs/paramiko.rsakey-pysrc.html index 8e1c42b..d1dd96a 100644 --- a/docs/paramiko.rsakey-pysrc.html +++ b/docs/paramiko.rsakey-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.rsakey-module.html" onclick="show_private();">Module paramiko.rsakey</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{RSAKey}</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -146,36 +146,36 @@ paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link </div><div id="RSAKey.can_sign-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey.can_sign-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt> </div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> <a name="RSAKey.sign_ssh_data"></a><div id="RSAKey.sign_ssh_data-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="RSAKey.sign_ssh_data-toggle" onclick="return toggle('RSAKey.sign_ssh_data');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#sign_ssh_data">sign_ssh_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">rpool</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RSAKey.sign_ssh_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey.sign_ssh_data-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><div id="RSAKey.sign_ssh_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey.sign_ssh_data-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-30', 'new', 'link-30');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">rsa</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">construct</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-30', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-31', 'deflate_long', 'link-31');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pkcs1imify</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-32', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-33', 'add_string', 'link-26');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'ssh-rsa'</tt><tt class="py-op">)</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-34', 'add_string', 'link-26');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-31', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-32', 'deflate_long', 'link-32');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pkcs1imify</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-33', 'Message', 'link-6');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-34', 'add_string', 'link-26');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'ssh-rsa'</tt><tt class="py-op">)</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-35', 'add_string', 'link-26');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">m</tt> </tt> </div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> <a name="RSAKey.verify_ssh_sig"></a><div id="RSAKey.verify_ssh_sig-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="RSAKey.verify_ssh_sig-toggle" onclick="return toggle('RSAKey.verify_ssh_sig');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#verify_ssh_sig">verify_ssh_sig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RSAKey.verify_ssh_sig-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey.verify_ssh_sig-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-35', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> </tt> +</div><div id="RSAKey.verify_ssh_sig-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey.verify_ssh_sig-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-36', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> </tt> <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-36', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-37', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-38', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-37', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-38', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-39', 'get_string', 'link-19');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-comment"># verify the signature by SHA'ing the data and encrypting it using the</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># public key. some wackiness ensues where we "pkcs1imify" the 20-byte</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># hash into a string as long as the RSA key.</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-39', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-40', 'inflate_long', 'link-37');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pkcs1imify</tt><tt class="py-op">(</tt><tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-comment"># public key. some wackiness ensues where we "pkcs1imify" the 20-byte</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-comment"># hash into a string as long as the RSA key.</tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-40', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-41', 'inflate_long', 'link-38');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pkcs1imify</tt><tt class="py-op">(</tt><tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-42', 'new', 'link-30');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">rsa</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">construct</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">verify</tt><tt class="py-op">(</tt><tt class="py-name">hash_obj</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> </div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt> <a name="RSAKey._encode_key"></a><div id="RSAKey._encode_key-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="RSAKey._encode_key-toggle" onclick="return toggle('RSAKey._encode_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#_encode_key">_encode_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="RSAKey._encode_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey._encode_key-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-41" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-41', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not enough key info to write private key file'</tt><tt class="py-op">)</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-43" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-43', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not enough key info to write private key file'</tt><tt class="py-op">)</tt> </tt> <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-42', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Function paramiko.util.mod_inverse()=paramiko.util-module.html#mod_inverse"><a title="paramiko.util.mod_inverse" class="py-name" href="#" onclick="return doclink('link-43', 'mod_inverse', 'link-43');">mod_inverse</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt id="link-44" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-44', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Function paramiko.util.mod_inverse()=paramiko.util-module.html#mod_inverse"><a title="paramiko.util.mod_inverse" class="py-name" href="#" onclick="return doclink('link-45', 'mod_inverse', 'link-45');">mod_inverse</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt> <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-44', 'BER', 'link-9');">BER</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-45', 'encode', 'link-45');">encode</a></tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-46" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-46', 'BERException', 'link-10');">BERException</a></tt><tt class="py-op">:</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-47" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-47', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to create ber encoding of key'</tt><tt class="py-op">)</tt> </tt> +<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-46', 'BER', 'link-9');">BER</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-47', 'encode', 'link-47');">encode</a></tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> </tt> +<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-48" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-48', 'BERException', 'link-10');">BERException</a></tt><tt class="py-op">:</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-49" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-49', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to create ber encoding of key'</tt><tt class="py-op">)</tt> </tt> <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt> </div><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt> <a name="RSAKey.write_private_key_file"></a><div id="RSAKey.write_private_key_file-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="RSAKey.write_private_key_file-toggle" onclick="return toggle('RSAKey.write_private_key_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#write_private_key_file">write_private_key_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -197,7 +197,7 @@ paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> @return: new private key</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{RSAKey}</tt> </tt> <a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt id="link-48" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt id="link-50" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -217,9 +217,9 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-48', 'randpool', 'link-48');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-49', 'stir', 'link-49');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">rsa</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Static Method paramiko.DSSKey.generate()=paramiko.DSSKey-class.html#generate,Static Method paramiko.RSAKey.generate()=paramiko.RSAKey-class.html#generate"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-50', 'generate', 'link-50');">generate</a></tt><tt class="py-op">(</tt><tt class="py-name">bits</tt><tt class="py-op">,</tt> <tt id="link-51" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-50', 'randpool', 'link-50');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-51', 'stir', 'link-51');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">rsa</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Static Method paramiko.DSSKey.generate()=paramiko.DSSKey-class.html#generate,Static Method paramiko.RSAKey.generate()=paramiko.RSAKey-class.html#generate"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-52', 'generate', 'link-52');">generate</a></tt><tt class="py-op">(</tt><tt class="py-name">bits</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -239,20 +239,20 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-51', 'randpool', 'link-48');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-52', 'get_bytes', 'link-52');">get_bytes</a></tt><tt class="py-op">,</tt> <tt class="py-name">progress_func</tt><tt class="py-op">)</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name" targets="Class paramiko.RSAKey=paramiko.RSAKey-class.html"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-53', 'RSAKey', 'link-53');">RSAKey</a></tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-53', 'randpool', 'link-50');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-54', 'get_bytes', 'link-54');">get_bytes</a></tt><tt class="py-op">,</tt> <tt class="py-name">progress_func</tt><tt class="py-op">)</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name" targets="Class paramiko.RSAKey=paramiko.RSAKey-class.html"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-55', 'RSAKey', 'link-55');">RSAKey</a></tt><tt class="py-op">(</tt><tt class="py-name">vals</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> </tt> <a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> </tt> <a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">rsa</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> </tt> <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-54', 'generate', 'link-50');">generate</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="paramiko.DSSKey.generate -paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-55', 'generate', 'link-50');">generate</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt id="link-56" class="py-name"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-56', 'generate', 'link-52');">generate</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="paramiko.DSSKey.generate +paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link-57', 'generate', 'link-52');">generate</a></tt><tt class="py-op">)</tt> </tt> <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> </tt> <a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt> <a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt> <a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> </tt> <a name="RSAKey._pkcs1imify"></a><div id="RSAKey._pkcs1imify-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="RSAKey._pkcs1imify-toggle" onclick="return toggle('RSAKey._pkcs1imify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#_pkcs1imify">_pkcs1imify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="RSAKey._pkcs1imify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey._pkcs1imify-expanded"><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -260,7 +260,7 @@ paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> using PKCS1's \"emsa-pkcs1-v1_5\" encoding. totally bizarre.</tt> </tt> <a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">SHA1_DIGESTINFO</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14'</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-56" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-56', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-57', 'deflate_long', 'link-31');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-58', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-59', 'deflate_long', 'link-32');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">filler</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-name">size</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">SHA1_DIGESTINFO</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt> <a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'\x00\x01'</tt> <tt class="py-op">+</tt> <tt class="py-name">filler</tt> <tt class="py-op">+</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">+</tt> <tt class="py-name">SHA1_DIGESTINFO</tt> <tt class="py-op">+</tt> <tt class="py-name">data</tt> </tt> </div><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt> @@ -274,20 +274,20 @@ paramiko.RSAKey.generate" class="py-name" href="#" onclick="return doclink('link </div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt> <a name="RSAKey._decode_key"></a><div id="RSAKey._decode_key-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="RSAKey._decode_key-toggle" onclick="return toggle('RSAKey._decode_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.rsakey.RSAKey-class.html#_decode_key">_decode_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="RSAKey._decode_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RSAKey._decode_key-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-comment"># private key file contains:</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># RSAPrivateKey = { version = 0, n, e, d, p, q, d mod p-1, d mod q-1, q**-1 mod p }</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-58', 'BER', 'link-9');">BER</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-59', 'decode', 'link-59');">decode</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-60" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-60', 'BERException', 'link-10');">BERException</a></tt><tt class="py-op">:</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-61" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-61', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to parse key file'</tt><tt class="py-op">)</tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-comment"># RSAPrivateKey = { version = 0, n, e, d, p, q, d mod p-1, d mod q-1, q**-1 mod p }</tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">keylist</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="paramiko.ber.BER" class="py-name" href="#" onclick="return doclink('link-60', 'BER', 'link-9');">BER</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-61', 'decode', 'link-61');">decode</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-62" class="py-name"><a title="paramiko.ber.BERException" class="py-name" href="#" onclick="return doclink('link-62', 'BERException', 'link-10');">BERException</a></tt><tt class="py-op">:</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-63" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-63', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to parse key file'</tt><tt class="py-op">)</tt> </tt> <a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-62" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-62', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not a valid RSA private key file (bad ber encoding)'</tt><tt class="py-op">)</tt> </tt> +<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-64" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-64', 'SSHException', 'link-16');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Not a valid RSA private key file (bad ber encoding)'</tt><tt class="py-op">)</tt> </tt> <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt> <a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-comment"># not really needed</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt> +<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt> <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">keylist</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">]</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-63', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-64', 'bit_length', 'link-24');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-65', 'util', 'link-3');">util</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="paramiko.util.bit_length" class="py-name" href="#" onclick="return doclink('link-66', 'bit_length', 'link-24');">bit_length</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> </div></div><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -321,7 +321,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.server-module.html b/docs/paramiko.server-module.html index 7f452ac..9418c7e 100644 --- a/docs/paramiko.server-module.html +++ b/docs/paramiko.server-module.html @@ -417,6 +417,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -504,7 +511,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.server-pysrc.html b/docs/paramiko.server-pysrc.html index 56ce4b9..af1de27 100644 --- a/docs/paramiko.server-pysrc.html +++ b/docs/paramiko.server-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.server-module.html" onclick="show_private();">Module paramiko.server</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{ServerInterface} is an interface to override for server support.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -524,7 +524,7 @@ paramiko.util.AUTH_FAILED" class="py-name" href="#" onclick="return doclink('lin </div><a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> </tt> <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> </tt> <a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-comment">### Channel requests</tt> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt> <a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt> <a name="ServerInterface.check_channel_pty_request"></a><div id="ServerInterface.check_channel_pty_request-def"><a name="L351"></a><tt class="py-lineno">351</tt> <a class="py-toggle" href="#" id="ServerInterface.check_channel_pty_request-toggle" onclick="return toggle('ServerInterface.check_channel_pty_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.server.ServerInterface-class.html#check_channel_pty_request">check_channel_pty_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">term</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">,</tt> <tt class="py-param">pixelwidth</tt><tt class="py-op">,</tt> <tt class="py-param">pixelheight</tt><tt class="py-op">,</tt> </tt> <a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-param">modes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -768,7 +768,7 @@ paramiko.util.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED" class="py-name" href="#" <a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"><tt class="py-docstring"> subsystem</tt> </tt> <a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"><tt class="py-docstring"> @type server: L{ServerInterface}</tt> </tt> <a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -809,6 +809,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-18', '__init__', 'link-18');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">target</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_run</tt><tt class="py-op">)</tt> </tt> <a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__channel</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-19', 'channel', 'link-12');">channel</a></tt> </tt> @@ -984,7 +985,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:38 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:19 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp-module.html b/docs/paramiko.sftp-module.html index f65cd15..a27c924 100644 --- a/docs/paramiko.sftp-module.html +++ b/docs/paramiko.sftp-module.html @@ -737,6 +737,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -876,7 +883,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp-pysrc.html b/docs/paramiko.sftp-pysrc.html index a1b987c..c948e27 100644 --- a/docs/paramiko.sftp-pysrc.html +++ b/docs/paramiko.sftp-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp-module.html" onclick="show_private();">Module paramiko.sftp</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">select</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt> </tt> @@ -372,7 +372,7 @@ paramiko.sftp_si.SFTP_FLAG_EXCL" class="py-name" href="#" onclick="return doclin <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt> <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-comment"># for debugging</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-54" class="py-name" targets="Variable paramiko.sftp.CMD_NAMES=paramiko.sftp-module.html#CMD_NAMES,Variable paramiko.sftp_attr.CMD_NAMES=paramiko.sftp_attr-module.html#CMD_NAMES,Variable paramiko.sftp_client.CMD_NAMES=paramiko.sftp_client-module.html#CMD_NAMES,Variable paramiko.sftp_file.CMD_NAMES=paramiko.sftp_file-module.html#CMD_NAMES,Variable paramiko.sftp_handle.CMD_NAMES=paramiko.sftp_handle-module.html#CMD_NAMES,Variable paramiko.sftp_server.CMD_NAMES=paramiko.sftp_server-module.html#CMD_NAMES,Variable paramiko.sftp_si.CMD_NAMES=paramiko.sftp_si-module.html#CMD_NAMES"><a title="paramiko.sftp.CMD_NAMES +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt id="link-54" class="py-name" targets="Variable paramiko.sftp.CMD_NAMES=paramiko.sftp-module.html#CMD_NAMES,Variable paramiko.sftp_attr.CMD_NAMES=paramiko.sftp_attr-module.html#CMD_NAMES,Variable paramiko.sftp_client.CMD_NAMES=paramiko.sftp_client-module.html#CMD_NAMES,Variable paramiko.sftp_file.CMD_NAMES=paramiko.sftp_file-module.html#CMD_NAMES,Variable paramiko.sftp_handle.CMD_NAMES=paramiko.sftp_handle-module.html#CMD_NAMES,Variable paramiko.sftp_server.CMD_NAMES=paramiko.sftp_server-module.html#CMD_NAMES,Variable paramiko.sftp_si.CMD_NAMES=paramiko.sftp_si-module.html#CMD_NAMES"><a title="paramiko.sftp.CMD_NAMES paramiko.sftp_attr.CMD_NAMES paramiko.sftp_client.CMD_NAMES paramiko.sftp_file.CMD_NAMES @@ -583,7 +583,7 @@ paramiko.sftp_si.CMD_EXTENDED_REPLY" class="py-name" href="#" onclick="return do </div><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> </tt> <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt> <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt> <a name="BaseSFTP._send_version"></a><div id="BaseSFTP._send_version-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="BaseSFTP._send_version-toggle" onclick="return toggle('BaseSFTP._send_version');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp.BaseSFTP-class.html#_send_version">_send_version</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BaseSFTP._send_version-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BaseSFTP._send_version-expanded"><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_packet</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name"><a title="paramiko.sftp.CMD_INIT @@ -604,13 +604,13 @@ paramiko.sftp_si.CMD_VERSION" class="py-name" href="#" onclick="return doclink(' <a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-88" class="py-name" targets="Class paramiko.SFTPError=paramiko.SFTPError-class.html"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-88', 'SFTPError', 'link-88');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible sftp protocol'</tt><tt class="py-op">)</tt> </tt> <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-comment"># if version != _VERSION:</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># raise SFTPError('Incompatible sftp protocol')</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">version</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-comment"># raise SFTPError('Incompatible sftp protocol')</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">version</tt> </tt> </div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> <a name="BaseSFTP._send_server_version"></a><div id="BaseSFTP._send_server_version-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="BaseSFTP._send_server_version-toggle" onclick="return toggle('BaseSFTP._send_server_version');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp.BaseSFTP-class.html#_send_server_version">_send_server_version</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BaseSFTP._send_server_version-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BaseSFTP._send_server_version-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment"># winscp will freak out if the server sends version info before the</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># client finishes sending INIT.</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-comment"># client finishes sending INIT.</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-89" class="py-name"><a title="paramiko.sftp.CMD_INIT paramiko.sftp_attr.CMD_INIT paramiko.sftp_client.CMD_INIT @@ -621,7 +621,7 @@ paramiko.sftp_si.CMD_INIT" class="py-name" href="#" onclick="return doclink('lin <a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-90" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-90', 'SFTPError', 'link-88');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible sftp protocol'</tt><tt class="py-op">)</tt> </tt> <a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-comment"># advertise that we support "check-file"</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">extension_pairs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'check-file'</tt><tt class="py-op">,</tt> <tt class="py-string">'md5,sha1'</tt> <tt class="py-op">]</tt> </tt> +<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">extension_pairs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'check-file'</tt><tt class="py-op">,</tt> <tt class="py-string">'md5,sha1'</tt> <tt class="py-op">]</tt> </tt> <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-91', 'Message', 'link-9');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-92', 'add_int', 'link-92');">add_int</a></tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="paramiko.sftp._VERSION" class="py-name" href="#" onclick="return doclink('link-93', '_VERSION', 'link-53');">_VERSION</a></tt><tt class="py-op">)</tt> </tt> <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add @@ -654,11 +654,11 @@ paramiko.win_pageant.PageantConnection.send" class="py-name" href="#" onclick="r <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">n</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># sometimes sftp is used directly over a socket instead of</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># through a paramiko channel. in this case, check periodically</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># if the socket is closed. (for some reason, recv() won't ever</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># return or raise an exception, but calling select on a closed</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># socket will.)</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-comment"># through a paramiko channel. in this case, check periodically</tt> </tt> +<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-comment"># if the socket is closed. (for some reason, recv() won't ever</tt> </tt> +<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-comment"># return or raise an exception, but calling select on a closed</tt> </tt> +<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-comment"># socket will.)</tt> </tt> +<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> <a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt id="link-99" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-99', 'read', 'link-99');">read</a></tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write @@ -681,7 +681,7 @@ paramiko.win_pageant.PageantConnection.recv" class="py-name" href="#" onclick="r </div><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt> <a name="BaseSFTP._send_packet"></a><div id="BaseSFTP._send_packet-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="BaseSFTP._send_packet-toggle" onclick="return toggle('BaseSFTP._send_packet');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp.BaseSFTP-class.html#_send_packet">_send_packet</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-param">packet</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BaseSFTP._send_packet-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BaseSFTP._send_packet-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-comment">#self._log(DEBUG2, 'write: %s (len=%d)' % (CMD_NAMES.get(t, '0x%02x' % t), len(packet)))</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-104" class="py-name" targets="Module paramiko.packet=paramiko.packet-module.html"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-104', 'packet', 'link-104');">packet</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-105" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-105', 'packet', 'link-104');">packet</a></tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-104" class="py-name" targets="Module paramiko.packet=paramiko.packet-module.html"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-104', 'packet', 'link-104');">packet</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-105" class="py-name"><a title="paramiko.packet" class="py-name" href="#" onclick="return doclink('link-105', 'packet', 'link-104');">packet</a></tt> </tt> <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt><tt class="py-op">:</tt> </tt> <a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG @@ -710,8 +710,8 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-106' <a name="BaseSFTP._read_packet"></a><div id="BaseSFTP._read_packet-def"><a name="L174"></a><tt class="py-lineno">174</tt> <a class="py-toggle" href="#" id="BaseSFTP._read_packet-toggle" onclick="return toggle('BaseSFTP._read_packet');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp.BaseSFTP-class.html#_read_packet">_read_packet</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="BaseSFTP._read_packet-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BaseSFTP._read_packet-expanded"><a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_all</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt> <a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-comment"># most sftp servers won't accept packets larger than about 32k, so</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># anything with the high byte set (> 16MB) is just garbage.</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">:</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-comment"># anything with the high byte set (> 16MB) is just garbage.</tt> </tt> +<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">:</tt> </tt> <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-109" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-109', 'SFTPError', 'link-88');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Garbage packet received'</tt><tt class="py-op">)</tt> </tt> <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_all</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">)</tt> </tt> @@ -741,7 +741,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-110' <a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">size</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-comment">#self._log(DEBUG2, 'read: %s (len=%d)' % (CMD_NAMES.get(t), '0x%02x' % t, len(data)-1))</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> <a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt> </tt> </div></div><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- @@ -776,7 +776,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:38 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:21 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_attr-module.html b/docs/paramiko.sftp_attr-module.html index f13bc2f..fe77270 100644 --- a/docs/paramiko.sftp_attr-module.html +++ b/docs/paramiko.sftp_attr-module.html @@ -737,6 +737,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -876,7 +883,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_attr-pysrc.html b/docs/paramiko.sftp_attr-pysrc.html index b1f7411..b1a55b1 100644 --- a/docs/paramiko.sftp_attr-pysrc.html +++ b/docs/paramiko.sftp_attr-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_attr-module.html" onclick="show_private();">Module paramiko.sftp_attr</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2006 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2006 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Method paramiko.SFTPClient.stat()=paramiko.SFTPClient-class.html#stat,Method paramiko.SFTPFile.stat()=paramiko.SFTPFile-class.html#stat,Method paramiko.SFTPHandle.stat()=paramiko.SFTPHandle-class.html#stat,Method paramiko.SFTPServerInterface.stat()=paramiko.SFTPServerInterface-class.html#stat"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat @@ -147,7 +147,7 @@ paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return docl </div><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt> <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt> <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt> <a name="SFTPAttributes._from_msg"></a><div id="SFTPAttributes._from_msg-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="SFTPAttributes._from_msg-toggle" onclick="return toggle('SFTPAttributes._from_msg');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_attr.SFTPAttributes-class.html#_from_msg">_from_msg</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">longname</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPAttributes._from_msg-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPAttributes._from_msg-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -198,7 +198,7 @@ paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return docl <a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-39', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt><tt class="py-op">)</tt> </tt> <a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="paramiko.SFTPAttributes.FLAG_AMTIME" class="py-name" href="#" onclick="return doclink('link-40', 'FLAG_AMTIME', 'link-8');">FLAG_AMTIME</a></tt><tt class="py-op">:</tt> </tt> <a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-comment"># throw away any fractional seconds</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-41', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_atime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-41', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_atime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-42', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="paramiko.SFTPAttributes.FLAG_EXTENDED" class="py-name" href="#" onclick="return doclink('link-43', 'FLAG_EXTENDED', 'link-9');">FLAG_EXTENDED</a></tt><tt class="py-op">:</tt> </tt> <a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-44', 'add_int', 'link-32');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> @@ -292,19 +292,19 @@ paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return docl <a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">ks</tt> <tt class="py-op">=</tt> <tt class="py-string">'?---------'</tt> </tt> <a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-comment"># compute display date</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-op">==</tt> <tt class="py-number">0xffffffff</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-op">==</tt> <tt class="py-number">0xffffffff</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment"># shouldn't really happen</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">datestr</tt> <tt class="py-op">=</tt> <tt class="py-string">'(unknown date)'</tt> </tt> +<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">datestr</tt> <tt class="py-op">=</tt> <tt class="py-string">'(unknown date)'</tt> </tt> <a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">15552000</tt><tt class="py-op">:</tt> </tt> <a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment"># (15552000 = 6 months)</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">datestr</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%d %b %Y'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">localtime</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">datestr</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%d %b %Y'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">localtime</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">datestr</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">strftime</tt><tt class="py-op">(</tt><tt class="py-string">'%d %b %H:%M'</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">localtime</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'filename'</tt><tt class="py-op">,</tt> <tt class="py-string">'?'</tt><tt class="py-op">)</tt> </tt> <a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt> <a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-comment"># not all servers support uid/gid</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_uid</tt> </tt> +<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_uid</tt> </tt> <a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">gid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">st_gid</tt> </tt> <a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">uid</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">uid</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> @@ -345,7 +345,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:33 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_client-module.html b/docs/paramiko.sftp_client-module.html index 8f975d6..a567486 100644 --- a/docs/paramiko.sftp_client-module.html +++ b/docs/paramiko.sftp_client-module.html @@ -739,6 +739,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -878,7 +885,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_client-pysrc.html b/docs/paramiko.sftp_client-pysrc.html index 0b17480..cb1c6ea 100644 --- a/docs/paramiko.sftp_client-pysrc.html +++ b/docs/paramiko.sftp_client-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_client-module.html" onclick="show_private();">Module paramiko.sftp_client</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Client-mode SFTP support.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -79,52 +79,56 @@ <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">binascii</tt> <tt class="py-keyword">import</tt> <tt class="py-name">hexlify</tt> </tt> <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt> <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">weakref</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-0', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module paramiko.sftp=paramiko.sftp-module.html"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-1', 'sftp', 'link-1');">sftp</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-2', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module paramiko.sftp_attr=paramiko.sftp_attr-module.html"><a title="paramiko.sftp_attr" class="py-name" href="#" onclick="return doclink('link-3', 'sftp_attr', 'link-3');">sftp_attr</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class paramiko.SFTPAttributes=paramiko.SFTPAttributes-class.html"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-4', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-5', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module paramiko.ssh_exception=paramiko.ssh_exception-module.html"><a title="paramiko.ssh_exception" class="py-name" href="#" onclick="return doclink('link-6', 'ssh_exception', 'link-6');">ssh_exception</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Class paramiko.SSHException=paramiko.SSHException-class.html"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-7', 'SSHException', 'link-7');">SSHException</a></tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-8', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module paramiko.sftp_file=paramiko.sftp_file-module.html"><a title="paramiko.sftp_file" class="py-name" href="#" onclick="return doclink('link-9', 'sftp_file', 'link-9');">sftp_file</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class paramiko.SFTPFile=paramiko.SFTPFile-class.html"><a title="paramiko.SFTPFile" class="py-name" href="#" onclick="return doclink('link-10', 'SFTPFile', 'link-10');">SFTPFile</a></tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt> +<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Method paramiko.SFTPClient.stat()=paramiko.SFTPClient-class.html#stat,Method paramiko.SFTPFile.stat()=paramiko.SFTPFile-class.html#stat,Method paramiko.SFTPHandle.stat()=paramiko.SFTPHandle-class.html#stat,Method paramiko.SFTPServerInterface.stat()=paramiko.SFTPServerInterface-class.html#stat"><a title="paramiko.SFTPClient.stat +paramiko.SFTPFile.stat +paramiko.SFTPHandle.stat +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-0', 'stat', 'link-0');">stat</a></tt> </tt> +<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt> +<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt> +<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">weakref</tt> </tt> +<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt> +<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-1', 'paramiko', 'link-1');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module paramiko.sftp=paramiko.sftp-module.html"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-2', 'sftp', 'link-2');">sftp</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> +<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-3', 'paramiko', 'link-1');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module paramiko.sftp_attr=paramiko.sftp_attr-module.html"><a title="paramiko.sftp_attr" class="py-name" href="#" onclick="return doclink('link-4', 'sftp_attr', 'link-4');">sftp_attr</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class paramiko.SFTPAttributes=paramiko.SFTPAttributes-class.html"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-5', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt> </tt> +<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-6', 'paramiko', 'link-1');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module paramiko.ssh_exception=paramiko.ssh_exception-module.html"><a title="paramiko.ssh_exception" class="py-name" href="#" onclick="return doclink('link-7', 'ssh_exception', 'link-7');">ssh_exception</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Class paramiko.SSHException=paramiko.SSHException-class.html"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-8', 'SSHException', 'link-8');">SSHException</a></tt> </tt> +<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-9', 'paramiko', 'link-1');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module paramiko.sftp_file=paramiko.sftp_file-module.html"><a title="paramiko.sftp_file" class="py-name" href="#" onclick="return doclink('link-10', 'sftp_file', 'link-10');">sftp_file</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Class paramiko.SFTPFile=paramiko.SFTPFile-class.html"><a title="paramiko.SFTPFile" class="py-name" href="#" onclick="return doclink('link-11', 'SFTPFile', 'link-11');">SFTPFile</a></tt> </tt> <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt> -<a name="_to_unicode"></a><div id="_to_unicode-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="_to_unicode-toggle" onclick="return toggle('_to_unicode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_to_unicode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_to_unicode-expanded"><a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> decode a string as ascii or utf8 if possible (as required by the sftp</tt> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> protocol). if neither works, just return a byte string because the server</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> probably doesn't know the filename's encoding.</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-11', 'encode', 'link-11');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-12', 'decode', 'link-12');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> -</div><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt> -<a name="SFTPClient"></a><div id="SFTPClient-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="SFTPClient-toggle" onclick="return toggle('SFTPClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html">SFTPClient</a> <tt class="py-op">(</tt><tt class="py-base-class">BaseSFTP</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SFTPClient-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> SFTP client object. C{SFTPClient} is used to open an sftp session across</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> an open ssh L{Transport} and do remote file operations.</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.__init__"></a><div id="SFTPClient.__init__-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="SFTPClient.__init__-toggle" onclick="return toggle('SFTPClient.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.__init__-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client from an existing L{Channel}. The channel</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> should already have requested the C{"sftp"} subsystem.</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> An alternate way to create an SFTP client context is by using</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> L{from_transport}.</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> @param sock: an open L{Channel} using the C{"sftp"} subsystem</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> @type sock: L{Channel}</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there's an exception while negotiating</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> sftp</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">BaseSFTP</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> +<a name="_to_unicode"></a><div id="_to_unicode-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="_to_unicode-toggle" onclick="return toggle('_to_unicode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="_to_unicode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_to_unicode-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> decode a string as ascii or utf8 if possible (as required by the sftp</tt> </tt> +<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> protocol). if neither works, just return a byte string because the server</tt> </tt> +<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> probably doesn't know the filename's encoding.</tt> </tt> +<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.ber.BER.encode()=paramiko.ber.BER-class.html#encode"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-12', 'encode', 'link-12');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'ascii'</tt><tt class="py-op">)</tt> </tt> +<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt> +<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.ber.BER.decode()=paramiko.ber.BER-class.html#decode"><a title="paramiko.ber.BER.decode" class="py-name" href="#" onclick="return doclink('link-13', 'decode', 'link-13');">decode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> +<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">UnicodeError</tt><tt class="py-op">:</tt> </tt> +<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> +</div><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt> +<a name="SFTPClient"></a><div id="SFTPClient-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="SFTPClient-toggle" onclick="return toggle('SFTPClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html">SFTPClient</a> <tt class="py-op">(</tt><tt class="py-base-class">BaseSFTP</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SFTPClient-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> SFTP client object. C{SFTPClient} is used to open an sftp session across</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> an open ssh L{Transport} and do remote file operations.</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.__init__"></a><div id="SFTPClient.__init__-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="SFTPClient.__init__-toggle" onclick="return toggle('SFTPClient.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.__init__-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client from an existing L{Channel}. The channel</tt> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> should already have requested the C{"sftp"} subsystem.</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> An alternate way to create an SFTP client context is by using</tt> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> L{from_transport}.</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> @param sock: an open L{Channel} using the C{"sftp"} subsystem</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> @type sock: L{Channel}</tt> </tt> +<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there's an exception while negotiating</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> sftp</tt> </tt> +<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">BaseSFTP</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -165,27 +169,28 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ -paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-comment"># lock for request_number</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-comment"># request # -> SFTPFile</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">WeakValueDictionary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-14" class="py-name" targets="Class paramiko.Channel=paramiko.Channel-class.html"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-14', 'Channel', 'link-14');">Channel</a></tt><tt class="py-op">:</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-comment"># override default logger</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-15" class="py-name" targets="Module paramiko.transport=paramiko.transport-module.html"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-15', 'transport', 'link-15');">transport</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method paramiko.Channel.get_transport()=paramiko.Channel-class.html#get_transport,Method paramiko.SSHClient.get_transport()=paramiko.SSHClient-class.html#get_transport"><a title="paramiko.Channel.get_transport -paramiko.SSHClient.get_transport" class="py-name" href="#" onclick="return doclink('link-16', 'get_transport', 'link-16');">get_transport</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class paramiko.logging22.logger=paramiko.logging22.logger-class.html"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-17', 'logger', 'link-17');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name" targets="Module paramiko.util=paramiko.util-module.html"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-18', 'util', 'link-18');">util</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Function paramiko.util.get_logger()=paramiko.util-module.html#get_logger"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-19', 'get_logger', 'link-19');">get_logger</a></tt><tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-20', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method paramiko.Transport.get_log_channel()=paramiko.Transport-class.html#get_log_channel"><a title="paramiko.Transport.get_log_channel" class="py-name" href="#" onclick="return doclink('link-21', 'get_log_channel', 'link-21');">get_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'.sftp'</tt><tt class="py-op">)</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-22', 'transport', 'link-15');">transport</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method paramiko.Transport.get_hexdump()=paramiko.Transport-class.html#get_hexdump"><a title="paramiko.Transport.get_hexdump" class="py-name" href="#" onclick="return doclink('link-23', 'get_hexdump', 'link-23');">get_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">server_version</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_version</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-24" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-24', 'SSHException', 'link-7');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'EOF during negotiation'</tt><tt class="py-op">)</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name" targets="Variable paramiko.auth_handler.INFO=paramiko.auth_handler-module.html#INFO,Variable paramiko.channel.INFO=paramiko.channel-module.html#INFO,Variable paramiko.client.INFO=paramiko.client-module.html#INFO,Variable paramiko.common.INFO=paramiko.common-module.html#INFO,Variable paramiko.dsskey.INFO=paramiko.dsskey-module.html#INFO,Variable paramiko.hostkeys.INFO=paramiko.hostkeys-module.html#INFO,Variable paramiko.kex_gex.INFO=paramiko.kex_gex-module.html#INFO,Variable paramiko.kex_group1.INFO=paramiko.kex_group1-module.html#INFO,Variable paramiko.logging22.INFO=paramiko.logging22-module.html#INFO,Variable paramiko.packet.INFO=paramiko.packet-module.html#INFO,Variable paramiko.pkey.INFO=paramiko.pkey-module.html#INFO,Variable paramiko.rsakey.INFO=paramiko.rsakey-module.html#INFO,Variable paramiko.server.INFO=paramiko.server-module.html#INFO,Variable paramiko.sftp.INFO=paramiko.sftp-module.html#INFO,Variable paramiko.sftp_attr.INFO=paramiko.sftp_attr-module.html#INFO,Variable paramiko.sftp_client.INFO=paramiko.sftp_client-module.html#INFO,Variable paramiko.sftp_file.INFO=paramiko.sftp_file-module.html#INFO,Variable paramiko.sftp_handle.INFO=paramiko.sftp_handle-module.html#INFO,Variable paramiko.sftp_server.INFO=paramiko.sftp_server-module.html#INFO,Variable paramiko.sftp_si.INFO=paramiko.sftp_si-module.html#INFO,Variable paramiko.transport.INFO=paramiko.transport-module.html#INFO,Variable paramiko.util.INFO=paramiko.util-module.html#INFO"><a title="paramiko.auth_handler.INFO +paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-comment"># lock for request_number</tt> </tt> +<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># request # -> SFTPFile</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">WeakValueDictionary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-15" class="py-name" targets="Class paramiko.Channel=paramiko.Channel-class.html"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-15', 'Channel', 'link-15');">Channel</a></tt><tt class="py-op">:</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-comment"># override default logger</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Module paramiko.transport=paramiko.transport-module.html"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-16', 'transport', 'link-16');">transport</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method paramiko.Channel.get_transport()=paramiko.Channel-class.html#get_transport,Method paramiko.SSHClient.get_transport()=paramiko.SSHClient-class.html#get_transport"><a title="paramiko.Channel.get_transport +paramiko.SSHClient.get_transport" class="py-name" href="#" onclick="return doclink('link-17', 'get_transport', 'link-17');">get_transport</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class paramiko.logging22.logger=paramiko.logging22.logger-class.html"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-18', 'logger', 'link-18');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name" targets="Module paramiko.util=paramiko.util-module.html"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-19', 'util', 'link-19');">util</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Function paramiko.util.get_logger()=paramiko.util-module.html#get_logger"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-20', 'get_logger', 'link-20');">get_logger</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-21', 'transport', 'link-16');">transport</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method paramiko.Transport.get_log_channel()=paramiko.Transport-class.html#get_log_channel"><a title="paramiko.Transport.get_log_channel" class="py-name" href="#" onclick="return doclink('link-22', 'get_log_channel', 'link-22');">get_log_channel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">'.sftp'</tt><tt class="py-op">)</tt> </tt> +<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-23', 'transport', 'link-16');">transport</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method paramiko.Transport.get_hexdump()=paramiko.Transport-class.html#get_hexdump"><a title="paramiko.Transport.get_hexdump" class="py-name" href="#" onclick="return doclink('link-24', 'get_hexdump', 'link-24');">get_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">server_version</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_version</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> +<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-25" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-25', 'SSHException', 'link-8');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'EOF during negotiation'</tt><tt class="py-op">)</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-26" class="py-name" targets="Variable paramiko.auth_handler.INFO=paramiko.auth_handler-module.html#INFO,Variable paramiko.channel.INFO=paramiko.channel-module.html#INFO,Variable paramiko.client.INFO=paramiko.client-module.html#INFO,Variable paramiko.common.INFO=paramiko.common-module.html#INFO,Variable paramiko.dsskey.INFO=paramiko.dsskey-module.html#INFO,Variable paramiko.hostkeys.INFO=paramiko.hostkeys-module.html#INFO,Variable paramiko.kex_gex.INFO=paramiko.kex_gex-module.html#INFO,Variable paramiko.kex_group1.INFO=paramiko.kex_group1-module.html#INFO,Variable paramiko.logging22.INFO=paramiko.logging22-module.html#INFO,Variable paramiko.packet.INFO=paramiko.packet-module.html#INFO,Variable paramiko.pkey.INFO=paramiko.pkey-module.html#INFO,Variable paramiko.rsakey.INFO=paramiko.rsakey-module.html#INFO,Variable paramiko.server.INFO=paramiko.server-module.html#INFO,Variable paramiko.sftp.INFO=paramiko.sftp-module.html#INFO,Variable paramiko.sftp_attr.INFO=paramiko.sftp_attr-module.html#INFO,Variable paramiko.sftp_client.INFO=paramiko.sftp_client-module.html#INFO,Variable paramiko.sftp_file.INFO=paramiko.sftp_file-module.html#INFO,Variable paramiko.sftp_handle.INFO=paramiko.sftp_handle-module.html#INFO,Variable paramiko.sftp_server.INFO=paramiko.sftp_server-module.html#INFO,Variable paramiko.sftp_si.INFO=paramiko.sftp_si-module.html#INFO,Variable paramiko.transport.INFO=paramiko.transport-module.html#INFO,Variable paramiko.util.INFO=paramiko.util-module.html#INFO"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -206,39 +211,47 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-25', 'INFO', 'link-25');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Opened sftp connection (server version %d)'</tt> <tt class="py-op">%</tt> <tt class="py-name">server_version</tt><tt class="py-op">)</tt> </tt> -</div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.from_transport"></a><div id="SFTPClient.from_transport-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="SFTPClient.from_transport-toggle" onclick="return toggle('SFTPClient.from_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#from_transport">from_transport</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.from_transport-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.from_transport-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client channel from an open L{Transport}.</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> @param t: an open L{Transport} which is already authenticated</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> @type t: L{Transport}</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{SFTPClient} object, referring to an sftp session</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> (channel) across the transport</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method paramiko.Transport.open_session()=paramiko.Transport-class.html#open_session"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-26', 'open_session', 'link-26');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.Channel.invoke_subsystem()=paramiko.Channel-class.html#invoke_subsystem"><a title="paramiko.Channel.invoke_subsystem" class="py-name" href="#" onclick="return doclink('link-27', 'invoke_subsystem', 'link-27');">invoke_subsystem</a></tt><tt class="py-op">(</tt><tt class="py-string">'sftp'</tt><tt class="py-op">)</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> -</div><a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt id="link-28" class="py-name" targets="Class Method paramiko.SFTPClient.from_transport()=paramiko.SFTPClient-class.html#from_transport"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-28', 'from_transport', 'link-28');">from_transport</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-29', 'from_transport', 'link-28');">from_transport</a></tt><tt class="py-op">)</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._log"></a><div id="SFTPClient._log-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="SFTPClient._log-toggle" onclick="return toggle('SFTPClient._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._log-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-30" class="py-name" targets="Class paramiko.SFTPClient=paramiko.SFTPClient-class.html"><a title="paramiko.SFTPClient" class="py-name" href="#" onclick="return doclink('link-30', 'SFTPClient', 'link-30');">SFTPClient</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-string">"[chan %s] "</tt> <tt class="py-op">+</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-26', 'INFO', 'link-26');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Opened sftp connection (server version %d)'</tt> <tt class="py-op">%</tt> <tt class="py-name">server_version</tt><tt class="py-op">)</tt> </tt> +</div><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.from_transport"></a><div id="SFTPClient.from_transport-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="SFTPClient.from_transport-toggle" onclick="return toggle('SFTPClient.from_transport');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#from_transport">from_transport</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.from_transport-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.from_transport-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client channel from an open L{Transport}.</tt> </tt> +<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> @param t: an open L{Transport} which is already authenticated</tt> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> @type t: L{Transport}</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{SFTPClient} object, referring to an sftp session</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> (channel) across the transport</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.Transport.open_session()=paramiko.Transport-class.html#open_session"><a title="paramiko.Transport.open_session" class="py-name" href="#" onclick="return doclink('link-27', 'open_session', 'link-27');">open_session</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method paramiko.Channel.invoke_subsystem()=paramiko.Channel-class.html#invoke_subsystem"><a title="paramiko.Channel.invoke_subsystem" class="py-name" href="#" onclick="return doclink('link-28', 'invoke_subsystem', 'link-28');">invoke_subsystem</a></tt><tt class="py-op">(</tt><tt class="py-string">'sftp'</tt><tt class="py-op">)</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> +</div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt id="link-29" class="py-name" targets="Class Method paramiko.SFTPClient.from_transport()=paramiko.SFTPClient-class.html#from_transport"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-29', 'from_transport', 'link-29');">from_transport</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-30', 'from_transport', 'link-29');">from_transport</a></tt><tt class="py-op">)</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._log"></a><div id="SFTPClient._log-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="SFTPClient._log-toggle" onclick="return toggle('SFTPClient._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._log-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._log-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msg</tt><tt class="py-op">:</tt> </tt> +<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Class paramiko.SFTPClient=paramiko.SFTPClient-class.html"><a title="paramiko.SFTPClient" class="py-name" href="#" onclick="return doclink('link-31', 'SFTPClient', 'link-31');">SFTPClient</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-string">"[chan %s] "</tt> <tt class="py-op">+</tt> <tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name +paramiko.Channel.get_name +paramiko.DSSKey.get_name +paramiko.PKey.get_name +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-32', 'get_name', 'link-32');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="paramiko.SFTPClient" class="py-name" href="#" onclick="return doclink('link-33', 'SFTPClient', 'link-31');">SFTPClient</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-string">"[chan %s] "</tt> <tt class="py-op">+</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-31', 'get_name', 'link-31');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.close"></a><div id="SFTPClient.close-def"><a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="SFTPClient.close-toggle" onclick="return toggle('SFTPClient.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.close-expanded"><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> Close the SFTP session and its underlying channel.</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-32" class="py-name"><a title="paramiko.auth_handler.INFO +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-34', 'get_name', 'link-32');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.close"></a><div id="SFTPClient.close-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="SFTPClient.close-toggle" onclick="return toggle('SFTPClient.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.close-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> Close the SFTP session and its underlying channel.</tt> </tt> +<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -259,8 +272,8 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-32', 'INFO', 'link-25');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'sftp session closed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-35', 'INFO', 'link-26');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'sftp session closed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -271,56 +284,56 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-33', 'close', 'link-33');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.get_channel"></a><div id="SFTPClient.get_channel-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="SFTPClient.get_channel-toggle" onclick="return toggle('SFTPClient.get_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#get_channel">get_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.get_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.get_channel-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> Return the underlying L{Channel} object for this SFTP session. This</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> might be useful for doing things like setting a timeout on the channel.</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> @return: the SSH channel</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.7.1</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> </tt> -</div><a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.listdir"></a><div id="SFTPClient.listdir-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="SFTPClient.listdir-toggle" onclick="return toggle('SFTPClient.listdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#listdir">listdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">=</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.listdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.listdir-expanded"><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> Return a list containing the names of the entries in the given C{path}.</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> The list is in arbitrary order. It does not include the special</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> entries C{'.'} and C{'..'} even if they are present in the folder.</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> This method is meant to mirror C{os.listdir} as closely as possible.</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> For a list of full L{SFTPAttributes} objects, see L{listdir_attr}.</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to list (defaults to C{'.'})</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of filenames</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list of str</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">filename</tt> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method paramiko.SFTPClient.listdir_attr()=paramiko.SFTPClient-class.html#listdir_attr"><a title="paramiko.SFTPClient.listdir_attr" class="py-name" href="#" onclick="return doclink('link-34', 'listdir_attr', 'link-34');">listdir_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> -</div><a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.listdir_attr"></a><div id="SFTPClient.listdir_attr-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="SFTPClient.listdir_attr-toggle" onclick="return toggle('SFTPClient.listdir_attr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#listdir_attr">listdir_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">=</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.listdir_attr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.listdir_attr-expanded"><a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> Return a list containing L{SFTPAttributes} objects corresponding to</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> files in the given C{path}. The list is in arbitrary order. It does</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> not include the special entries C{'.'} and C{'..'} even if they are</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> present in the folder.</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> The returned L{SFTPAttributes} objects will each have an additional</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> field: C{longname}, which may contain a formatted string of the file's</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> attributes, in unix format. The content of this string will probably</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> depend on the SFTP server implementation.</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-36', 'close', 'link-36');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.get_channel"></a><div id="SFTPClient.get_channel-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="SFTPClient.get_channel-toggle" onclick="return toggle('SFTPClient.get_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#get_channel">get_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.get_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.get_channel-expanded"><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> Return the underlying L{Channel} object for this SFTP session. This</tt> </tt> +<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> might be useful for doing things like setting a timeout on the channel.</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> @return: the SSH channel</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.7.1</tt> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> </tt> +</div><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.listdir"></a><div id="SFTPClient.listdir-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="SFTPClient.listdir-toggle" onclick="return toggle('SFTPClient.listdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#listdir">listdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">=</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.listdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.listdir-expanded"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> Return a list containing the names of the entries in the given C{path}.</tt> </tt> +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> The list is in arbitrary order. It does not include the special</tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> entries C{'.'} and C{'..'} even if they are present in the folder.</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> This method is meant to mirror C{os.listdir} as closely as possible.</tt> </tt> +<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> For a list of full L{SFTPAttributes} objects, see L{listdir_attr}.</tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to list (defaults to C{'.'})</tt> </tt> +<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of filenames</tt> </tt> +<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list of str</tt> </tt> +<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">filename</tt> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method paramiko.SFTPClient.listdir_attr()=paramiko.SFTPClient-class.html#listdir_attr"><a title="paramiko.SFTPClient.listdir_attr" class="py-name" href="#" onclick="return doclink('link-37', 'listdir_attr', 'link-37');">listdir_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> +</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.listdir_attr"></a><div id="SFTPClient.listdir_attr-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="SFTPClient.listdir_attr-toggle" onclick="return toggle('SFTPClient.listdir_attr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#listdir_attr">listdir_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">=</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.listdir_attr-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.listdir_attr-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> Return a list containing L{SFTPAttributes} objects corresponding to</tt> </tt> +<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> files in the given C{path}. The list is in arbitrary order. It does</tt> </tt> +<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> not include the special entries C{'.'} and C{'..'} even if they are</tt> </tt> +<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> present in the folder.</tt> </tt> <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to list (defaults to C{'.'})</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of attributes</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list of L{SFTPAttributes}</tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG +<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> The returned L{SFTPAttributes} objects will each have an additional</tt> </tt> +<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> field: C{longname}, which may contain a formatted string of the file's</tt> </tt> +<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> attributes, in unix format. The content of this string will probably</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> depend on the SFTP server implementation.</tt> </tt> +<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to list (defaults to C{'.'})</tt> </tt> +<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of attributes</tt> </tt> +<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list of L{SFTPAttributes}</tt> </tt> +<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-38" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -341,97 +354,97 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-35', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'listdir(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-36" class="py-name" targets="Variable paramiko.sftp.CMD_OPENDIR=paramiko.sftp-module.html#CMD_OPENDIR,Variable paramiko.sftp_attr.CMD_OPENDIR=paramiko.sftp_attr-module.html#CMD_OPENDIR,Variable paramiko.sftp_client.CMD_OPENDIR=paramiko.sftp_client-module.html#CMD_OPENDIR,Variable paramiko.sftp_file.CMD_OPENDIR=paramiko.sftp_file-module.html#CMD_OPENDIR,Variable paramiko.sftp_handle.CMD_OPENDIR=paramiko.sftp_handle-module.html#CMD_OPENDIR,Variable paramiko.sftp_server.CMD_OPENDIR=paramiko.sftp_server-module.html#CMD_OPENDIR,Variable paramiko.sftp_si.CMD_OPENDIR=paramiko.sftp_si-module.html#CMD_OPENDIR"><a title="paramiko.sftp.CMD_OPENDIR +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-38', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'listdir(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-39" class="py-name" targets="Variable paramiko.sftp.CMD_OPENDIR=paramiko.sftp-module.html#CMD_OPENDIR,Variable paramiko.sftp_attr.CMD_OPENDIR=paramiko.sftp_attr-module.html#CMD_OPENDIR,Variable paramiko.sftp_client.CMD_OPENDIR=paramiko.sftp_client-module.html#CMD_OPENDIR,Variable paramiko.sftp_file.CMD_OPENDIR=paramiko.sftp_file-module.html#CMD_OPENDIR,Variable paramiko.sftp_handle.CMD_OPENDIR=paramiko.sftp_handle-module.html#CMD_OPENDIR,Variable paramiko.sftp_server.CMD_OPENDIR=paramiko.sftp_server-module.html#CMD_OPENDIR,Variable paramiko.sftp_si.CMD_OPENDIR=paramiko.sftp_si-module.html#CMD_OPENDIR"><a title="paramiko.sftp.CMD_OPENDIR paramiko.sftp_attr.CMD_OPENDIR paramiko.sftp_client.CMD_OPENDIR paramiko.sftp_file.CMD_OPENDIR paramiko.sftp_handle.CMD_OPENDIR paramiko.sftp_server.CMD_OPENDIR -paramiko.sftp_si.CMD_OPENDIR" class="py-name" href="#" onclick="return doclink('link-36', 'CMD_OPENDIR', 'link-36');">CMD_OPENDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-37" class="py-name" targets="Variable paramiko.sftp.CMD_HANDLE=paramiko.sftp-module.html#CMD_HANDLE,Variable paramiko.sftp_attr.CMD_HANDLE=paramiko.sftp_attr-module.html#CMD_HANDLE,Variable paramiko.sftp_client.CMD_HANDLE=paramiko.sftp_client-module.html#CMD_HANDLE,Variable paramiko.sftp_file.CMD_HANDLE=paramiko.sftp_file-module.html#CMD_HANDLE,Variable paramiko.sftp_handle.CMD_HANDLE=paramiko.sftp_handle-module.html#CMD_HANDLE,Variable paramiko.sftp_server.CMD_HANDLE=paramiko.sftp_server-module.html#CMD_HANDLE,Variable paramiko.sftp_si.CMD_HANDLE=paramiko.sftp_si-module.html#CMD_HANDLE"><a title="paramiko.sftp.CMD_HANDLE +paramiko.sftp_si.CMD_OPENDIR" class="py-name" href="#" onclick="return doclink('link-39', 'CMD_OPENDIR', 'link-39');">CMD_OPENDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-40" class="py-name" targets="Variable paramiko.sftp.CMD_HANDLE=paramiko.sftp-module.html#CMD_HANDLE,Variable paramiko.sftp_attr.CMD_HANDLE=paramiko.sftp_attr-module.html#CMD_HANDLE,Variable paramiko.sftp_client.CMD_HANDLE=paramiko.sftp_client-module.html#CMD_HANDLE,Variable paramiko.sftp_file.CMD_HANDLE=paramiko.sftp_file-module.html#CMD_HANDLE,Variable paramiko.sftp_handle.CMD_HANDLE=paramiko.sftp_handle-module.html#CMD_HANDLE,Variable paramiko.sftp_server.CMD_HANDLE=paramiko.sftp_server-module.html#CMD_HANDLE,Variable paramiko.sftp_si.CMD_HANDLE=paramiko.sftp_si-module.html#CMD_HANDLE"><a title="paramiko.sftp.CMD_HANDLE paramiko.sftp_attr.CMD_HANDLE paramiko.sftp_client.CMD_HANDLE paramiko.sftp_file.CMD_HANDLE paramiko.sftp_handle.CMD_HANDLE paramiko.sftp_server.CMD_HANDLE -paramiko.sftp_si.CMD_HANDLE" class="py-name" href="#" onclick="return doclink('link-37', 'CMD_HANDLE', 'link-37');">CMD_HANDLE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-38" class="py-name" targets="Class paramiko.SFTPError=paramiko.SFTPError-class.html"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-38', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected handle'</tt><tt class="py-op">)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-39', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">filelist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-40" class="py-name" targets="Variable paramiko.sftp.CMD_READDIR=paramiko.sftp-module.html#CMD_READDIR,Variable paramiko.sftp_attr.CMD_READDIR=paramiko.sftp_attr-module.html#CMD_READDIR,Variable paramiko.sftp_client.CMD_READDIR=paramiko.sftp_client-module.html#CMD_READDIR,Variable paramiko.sftp_file.CMD_READDIR=paramiko.sftp_file-module.html#CMD_READDIR,Variable paramiko.sftp_handle.CMD_READDIR=paramiko.sftp_handle-module.html#CMD_READDIR,Variable paramiko.sftp_server.CMD_READDIR=paramiko.sftp_server-module.html#CMD_READDIR,Variable paramiko.sftp_si.CMD_READDIR=paramiko.sftp_si-module.html#CMD_READDIR"><a title="paramiko.sftp.CMD_READDIR +paramiko.sftp_si.CMD_HANDLE" class="py-name" href="#" onclick="return doclink('link-40', 'CMD_HANDLE', 'link-40');">CMD_HANDLE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-41" class="py-name" targets="Class paramiko.SFTPError=paramiko.SFTPError-class.html"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-41', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected handle'</tt><tt class="py-op">)</tt> </tt> +<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-42', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">filelist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name" targets="Variable paramiko.sftp.CMD_READDIR=paramiko.sftp-module.html#CMD_READDIR,Variable paramiko.sftp_attr.CMD_READDIR=paramiko.sftp_attr-module.html#CMD_READDIR,Variable paramiko.sftp_client.CMD_READDIR=paramiko.sftp_client-module.html#CMD_READDIR,Variable paramiko.sftp_file.CMD_READDIR=paramiko.sftp_file-module.html#CMD_READDIR,Variable paramiko.sftp_handle.CMD_READDIR=paramiko.sftp_handle-module.html#CMD_READDIR,Variable paramiko.sftp_server.CMD_READDIR=paramiko.sftp_server-module.html#CMD_READDIR,Variable paramiko.sftp_si.CMD_READDIR=paramiko.sftp_si-module.html#CMD_READDIR"><a title="paramiko.sftp.CMD_READDIR paramiko.sftp_attr.CMD_READDIR paramiko.sftp_client.CMD_READDIR paramiko.sftp_file.CMD_READDIR paramiko.sftp_handle.CMD_READDIR paramiko.sftp_server.CMD_READDIR -paramiko.sftp_si.CMD_READDIR" class="py-name" href="#" onclick="return doclink('link-40', 'CMD_READDIR', 'link-40');">CMD_READDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-comment"># done with handle</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">break</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-41" class="py-name" targets="Variable paramiko.sftp.CMD_NAME=paramiko.sftp-module.html#CMD_NAME,Variable paramiko.sftp_attr.CMD_NAME=paramiko.sftp_attr-module.html#CMD_NAME,Variable paramiko.sftp_client.CMD_NAME=paramiko.sftp_client-module.html#CMD_NAME,Variable paramiko.sftp_file.CMD_NAME=paramiko.sftp_file-module.html#CMD_NAME,Variable paramiko.sftp_handle.CMD_NAME=paramiko.sftp_handle-module.html#CMD_NAME,Variable paramiko.sftp_server.CMD_NAME=paramiko.sftp_server-module.html#CMD_NAME,Variable paramiko.sftp_si.CMD_NAME=paramiko.sftp_si-module.html#CMD_NAME"><a title="paramiko.sftp.CMD_NAME +paramiko.sftp_si.CMD_READDIR" class="py-name" href="#" onclick="return doclink('link-43', 'CMD_READDIR', 'link-43');">CMD_READDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> +<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-comment"># done with handle</tt> </tt> +<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-44" class="py-name" targets="Variable paramiko.sftp.CMD_NAME=paramiko.sftp-module.html#CMD_NAME,Variable paramiko.sftp_attr.CMD_NAME=paramiko.sftp_attr-module.html#CMD_NAME,Variable paramiko.sftp_client.CMD_NAME=paramiko.sftp_client-module.html#CMD_NAME,Variable paramiko.sftp_file.CMD_NAME=paramiko.sftp_file-module.html#CMD_NAME,Variable paramiko.sftp_handle.CMD_NAME=paramiko.sftp_handle-module.html#CMD_NAME,Variable paramiko.sftp_server.CMD_NAME=paramiko.sftp_server-module.html#CMD_NAME,Variable paramiko.sftp_si.CMD_NAME=paramiko.sftp_si-module.html#CMD_NAME"><a title="paramiko.sftp.CMD_NAME paramiko.sftp_attr.CMD_NAME paramiko.sftp_client.CMD_NAME paramiko.sftp_file.CMD_NAME paramiko.sftp_handle.CMD_NAME paramiko.sftp_server.CMD_NAME -paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-41', 'CMD_NAME', 'link-41');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-42" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-42', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-43', 'get_int', 'link-43');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">count</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-44', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">longname</tt> <tt class="py-op">=</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-45', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-46', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">longname</tt><tt class="py-op">)</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt> <tt class="py-op">!=</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt> <tt class="py-op">!=</tt> <tt class="py-string">'..'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">filelist</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-47" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE +paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-44', 'CMD_NAME', 'link-44');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> +<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-45" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-45', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-46', 'get_int', 'link-46');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">count</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-47', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">longname</tt> <tt class="py-op">=</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-48', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-49', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">longname</tt><tt class="py-op">)</tt> </tt> +<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt> <tt class="py-op">!=</tt> <tt class="py-string">'.'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt> <tt class="py-op">!=</tt> <tt class="py-string">'..'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">filelist</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-50" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE paramiko.sftp_attr.CMD_CLOSE paramiko.sftp_client.CMD_CLOSE paramiko.sftp_file.CMD_CLOSE paramiko.sftp_handle.CMD_CLOSE paramiko.sftp_server.CMD_CLOSE -paramiko.sftp_si.CMD_CLOSE" class="py-name" href="#" onclick="return doclink('link-47', 'CMD_CLOSE', 'link-47');">CMD_CLOSE</a></tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">filelist</tt> </tt> -</div><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.open"></a><div id="SFTPClient.open-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="SFTPClient.open-toggle" onclick="return toggle('SFTPClient.open');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#open">open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.open-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.open-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> Open a file on the remote server. The arguments are the same as for</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> python's built-in C{file} (aka C{open}). A file-like object is</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> returned, which closely mimics the behavior of a normal python file</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> object.</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> The mode indicates how the file is to be opened: C{'r'} for reading,</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> C{'w'} for writing (truncating an existing file), C{'a'} for appending,</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> C{'r+'} for reading/writing, C{'w+'} for reading/writing (truncating an</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> existing file), C{'a+'} for reading/appending. The python C{'b'} flag</tt> </tt> -<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"> is ignored, since SSH treats all files as binary. The C{'U'} flag is</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"> supported in a compatible way.</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5.2, an C{'x'} flag indicates that the operation should only</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> succeed if the file was created and did not previously exist. This has</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> no direct mapping to python's file flags, but is commonly known as the</tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> C{O_EXCL} flag in posix.</tt> </tt> +paramiko.sftp_si.CMD_CLOSE" class="py-name" href="#" onclick="return doclink('link-50', 'CMD_CLOSE', 'link-50');">CMD_CLOSE</a></tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> +<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">filelist</tt> </tt> +</div><a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.open"></a><div id="SFTPClient.open-def"><a name="L196"></a><tt class="py-lineno">196</tt> <a class="py-toggle" href="#" id="SFTPClient.open-toggle" onclick="return toggle('SFTPClient.open');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#open">open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.open-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.open-expanded"><a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> Open a file on the remote server. The arguments are the same as for</tt> </tt> +<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> python's built-in C{file} (aka C{open}). A file-like object is</tt> </tt> +<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> returned, which closely mimics the behavior of a normal python file</tt> </tt> +<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> object.</tt> </tt> +<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"> The mode indicates how the file is to be opened: C{'r'} for reading,</tt> </tt> +<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"> C{'w'} for writing (truncating an existing file), C{'a'} for appending,</tt> </tt> +<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> C{'r+'} for reading/writing, C{'w+'} for reading/writing (truncating an</tt> </tt> +<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> existing file), C{'a+'} for reading/appending. The python C{'b'} flag</tt> </tt> +<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> is ignored, since SSH treats all files as binary. The C{'U'} flag is</tt> </tt> +<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> supported in a compatible way.</tt> </tt> <a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> The file will be buffered in standard python style by default, but</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> can be altered with the C{bufsize} parameter. C{0} turns off</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> buffering, C{1} uses line buffering, and any number greater than 1</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"> (C{>1}) uses that specific buffer size.</tt> </tt> +<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5.2, an C{'x'} flag indicates that the operation should only</tt> </tt> +<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> succeed if the file was created and did not previously exist. This has</tt> </tt> +<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> no direct mapping to python's file flags, but is commonly known as the</tt> </tt> +<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"> C{O_EXCL} flag in posix.</tt> </tt> <a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to open</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: mode (python-style) to open in</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: str</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> @param bufsize: desired buffering (-1 = default buffer size)</tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> @type bufsize: int</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> @return: a file object representing the open file</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPFile</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the file could not be opened.</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="paramiko.auth_handler.DEBUG +<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> The file will be buffered in standard python style by default, but</tt> </tt> +<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> can be altered with the C{bufsize} parameter. C{0} turns off</tt> </tt> +<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> buffering, C{1} uses line buffering, and any number greater than 1</tt> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> (C{>1}) uses that specific buffer size.</tt> </tt> +<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to open</tt> </tt> +<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: mode (python-style) to open in</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: str</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> @param bufsize: desired buffering (-1 = default buffer size)</tt> </tt> +<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> @type bufsize: int</tt> </tt> +<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"> @return: a file object representing the open file</tt> </tt> +<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPFile</tt> </tt> +<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the file could not be opened.</tt> </tt> +<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-51" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -452,84 +465,84 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-48', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'open(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'r'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'+'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-49" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_READ=paramiko.sftp-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_attr.SFTP_FLAG_READ=paramiko.sftp_attr-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_client.SFTP_FLAG_READ=paramiko.sftp_client-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_file.SFTP_FLAG_READ=paramiko.sftp_file-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_handle.SFTP_FLAG_READ=paramiko.sftp_handle-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_server.SFTP_FLAG_READ=paramiko.sftp_server-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_si.SFTP_FLAG_READ=paramiko.sftp_si-module.html#SFTP_FLAG_READ"><a title="paramiko.sftp.SFTP_FLAG_READ +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-51', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'open(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'r'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'+'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-52" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_READ=paramiko.sftp-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_attr.SFTP_FLAG_READ=paramiko.sftp_attr-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_client.SFTP_FLAG_READ=paramiko.sftp_client-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_file.SFTP_FLAG_READ=paramiko.sftp_file-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_handle.SFTP_FLAG_READ=paramiko.sftp_handle-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_server.SFTP_FLAG_READ=paramiko.sftp_server-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_si.SFTP_FLAG_READ=paramiko.sftp_si-module.html#SFTP_FLAG_READ"><a title="paramiko.sftp.SFTP_FLAG_READ paramiko.sftp_attr.SFTP_FLAG_READ paramiko.sftp_client.SFTP_FLAG_READ paramiko.sftp_file.SFTP_FLAG_READ paramiko.sftp_handle.SFTP_FLAG_READ paramiko.sftp_server.SFTP_FLAG_READ -paramiko.sftp_si.SFTP_FLAG_READ" class="py-name" href="#" onclick="return doclink('link-49', 'SFTP_FLAG_READ', 'link-49');">SFTP_FLAG_READ</a></tt> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'w'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'+'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'a'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-50" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_WRITE=paramiko.sftp-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_attr.SFTP_FLAG_WRITE=paramiko.sftp_attr-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_client.SFTP_FLAG_WRITE=paramiko.sftp_client-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_file.SFTP_FLAG_WRITE=paramiko.sftp_file-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_handle.SFTP_FLAG_WRITE=paramiko.sftp_handle-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_server.SFTP_FLAG_WRITE=paramiko.sftp_server-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_si.SFTP_FLAG_WRITE=paramiko.sftp_si-module.html#SFTP_FLAG_WRITE"><a title="paramiko.sftp.SFTP_FLAG_WRITE +paramiko.sftp_si.SFTP_FLAG_READ" class="py-name" href="#" onclick="return doclink('link-52', 'SFTP_FLAG_READ', 'link-52');">SFTP_FLAG_READ</a></tt> </tt> +<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'w'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'+'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'a'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-53" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_WRITE=paramiko.sftp-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_attr.SFTP_FLAG_WRITE=paramiko.sftp_attr-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_client.SFTP_FLAG_WRITE=paramiko.sftp_client-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_file.SFTP_FLAG_WRITE=paramiko.sftp_file-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_handle.SFTP_FLAG_WRITE=paramiko.sftp_handle-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_server.SFTP_FLAG_WRITE=paramiko.sftp_server-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_si.SFTP_FLAG_WRITE=paramiko.sftp_si-module.html#SFTP_FLAG_WRITE"><a title="paramiko.sftp.SFTP_FLAG_WRITE paramiko.sftp_attr.SFTP_FLAG_WRITE paramiko.sftp_client.SFTP_FLAG_WRITE paramiko.sftp_file.SFTP_FLAG_WRITE paramiko.sftp_handle.SFTP_FLAG_WRITE paramiko.sftp_server.SFTP_FLAG_WRITE -paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-50', 'SFTP_FLAG_WRITE', 'link-50');">SFTP_FLAG_WRITE</a></tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'w'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-51" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_CREATE=paramiko.sftp-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_attr.SFTP_FLAG_CREATE=paramiko.sftp_attr-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_client.SFTP_FLAG_CREATE=paramiko.sftp_client-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_file.SFTP_FLAG_CREATE=paramiko.sftp_file-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_handle.SFTP_FLAG_CREATE=paramiko.sftp_handle-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_server.SFTP_FLAG_CREATE=paramiko.sftp_server-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_si.SFTP_FLAG_CREATE=paramiko.sftp_si-module.html#SFTP_FLAG_CREATE"><a title="paramiko.sftp.SFTP_FLAG_CREATE +paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-53', 'SFTP_FLAG_WRITE', 'link-53');">SFTP_FLAG_WRITE</a></tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'w'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-54" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_CREATE=paramiko.sftp-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_attr.SFTP_FLAG_CREATE=paramiko.sftp_attr-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_client.SFTP_FLAG_CREATE=paramiko.sftp_client-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_file.SFTP_FLAG_CREATE=paramiko.sftp_file-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_handle.SFTP_FLAG_CREATE=paramiko.sftp_handle-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_server.SFTP_FLAG_CREATE=paramiko.sftp_server-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_si.SFTP_FLAG_CREATE=paramiko.sftp_si-module.html#SFTP_FLAG_CREATE"><a title="paramiko.sftp.SFTP_FLAG_CREATE paramiko.sftp_attr.SFTP_FLAG_CREATE paramiko.sftp_client.SFTP_FLAG_CREATE paramiko.sftp_file.SFTP_FLAG_CREATE paramiko.sftp_handle.SFTP_FLAG_CREATE paramiko.sftp_server.SFTP_FLAG_CREATE -paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-51', 'SFTP_FLAG_CREATE', 'link-51');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-52" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_TRUNC=paramiko.sftp-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_attr.SFTP_FLAG_TRUNC=paramiko.sftp_attr-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_client.SFTP_FLAG_TRUNC=paramiko.sftp_client-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_file.SFTP_FLAG_TRUNC=paramiko.sftp_file-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_handle.SFTP_FLAG_TRUNC=paramiko.sftp_handle-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_server.SFTP_FLAG_TRUNC=paramiko.sftp_server-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_si.SFTP_FLAG_TRUNC=paramiko.sftp_si-module.html#SFTP_FLAG_TRUNC"><a title="paramiko.sftp.SFTP_FLAG_TRUNC +paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-54', 'SFTP_FLAG_CREATE', 'link-54');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-55" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_TRUNC=paramiko.sftp-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_attr.SFTP_FLAG_TRUNC=paramiko.sftp_attr-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_client.SFTP_FLAG_TRUNC=paramiko.sftp_client-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_file.SFTP_FLAG_TRUNC=paramiko.sftp_file-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_handle.SFTP_FLAG_TRUNC=paramiko.sftp_handle-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_server.SFTP_FLAG_TRUNC=paramiko.sftp_server-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_si.SFTP_FLAG_TRUNC=paramiko.sftp_si-module.html#SFTP_FLAG_TRUNC"><a title="paramiko.sftp.SFTP_FLAG_TRUNC paramiko.sftp_attr.SFTP_FLAG_TRUNC paramiko.sftp_client.SFTP_FLAG_TRUNC paramiko.sftp_file.SFTP_FLAG_TRUNC paramiko.sftp_handle.SFTP_FLAG_TRUNC paramiko.sftp_server.SFTP_FLAG_TRUNC -paramiko.sftp_si.SFTP_FLAG_TRUNC" class="py-name" href="#" onclick="return doclink('link-52', 'SFTP_FLAG_TRUNC', 'link-52');">SFTP_FLAG_TRUNC</a></tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'a'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-53" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_CREATE +paramiko.sftp_si.SFTP_FLAG_TRUNC" class="py-name" href="#" onclick="return doclink('link-55', 'SFTP_FLAG_TRUNC', 'link-55');">SFTP_FLAG_TRUNC</a></tt> </tt> +<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'a'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-56" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_CREATE paramiko.sftp_attr.SFTP_FLAG_CREATE paramiko.sftp_client.SFTP_FLAG_CREATE paramiko.sftp_file.SFTP_FLAG_CREATE paramiko.sftp_handle.SFTP_FLAG_CREATE paramiko.sftp_server.SFTP_FLAG_CREATE -paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-53', 'SFTP_FLAG_CREATE', 'link-51');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-54" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_APPEND=paramiko.sftp-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_attr.SFTP_FLAG_APPEND=paramiko.sftp_attr-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_client.SFTP_FLAG_APPEND=paramiko.sftp_client-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_file.SFTP_FLAG_APPEND=paramiko.sftp_file-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_handle.SFTP_FLAG_APPEND=paramiko.sftp_handle-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_server.SFTP_FLAG_APPEND=paramiko.sftp_server-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_si.SFTP_FLAG_APPEND=paramiko.sftp_si-module.html#SFTP_FLAG_APPEND"><a title="paramiko.sftp.SFTP_FLAG_APPEND +paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-56', 'SFTP_FLAG_CREATE', 'link-54');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-57" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_APPEND=paramiko.sftp-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_attr.SFTP_FLAG_APPEND=paramiko.sftp_attr-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_client.SFTP_FLAG_APPEND=paramiko.sftp_client-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_file.SFTP_FLAG_APPEND=paramiko.sftp_file-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_handle.SFTP_FLAG_APPEND=paramiko.sftp_handle-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_server.SFTP_FLAG_APPEND=paramiko.sftp_server-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_si.SFTP_FLAG_APPEND=paramiko.sftp_si-module.html#SFTP_FLAG_APPEND"><a title="paramiko.sftp.SFTP_FLAG_APPEND paramiko.sftp_attr.SFTP_FLAG_APPEND paramiko.sftp_client.SFTP_FLAG_APPEND paramiko.sftp_file.SFTP_FLAG_APPEND paramiko.sftp_handle.SFTP_FLAG_APPEND paramiko.sftp_server.SFTP_FLAG_APPEND -paramiko.sftp_si.SFTP_FLAG_APPEND" class="py-name" href="#" onclick="return doclink('link-54', 'SFTP_FLAG_APPEND', 'link-54');">SFTP_FLAG_APPEND</a></tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'x'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-55" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_CREATE +paramiko.sftp_si.SFTP_FLAG_APPEND" class="py-name" href="#" onclick="return doclink('link-57', 'SFTP_FLAG_APPEND', 'link-57');">SFTP_FLAG_APPEND</a></tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">'x'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">imode</tt> <tt class="py-op">|=</tt> <tt id="link-58" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_CREATE paramiko.sftp_attr.SFTP_FLAG_CREATE paramiko.sftp_client.SFTP_FLAG_CREATE paramiko.sftp_file.SFTP_FLAG_CREATE paramiko.sftp_handle.SFTP_FLAG_CREATE paramiko.sftp_server.SFTP_FLAG_CREATE -paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-55', 'SFTP_FLAG_CREATE', 'link-51');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-56" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_EXCL=paramiko.sftp-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_attr.SFTP_FLAG_EXCL=paramiko.sftp_attr-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_client.SFTP_FLAG_EXCL=paramiko.sftp_client-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_file.SFTP_FLAG_EXCL=paramiko.sftp_file-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_handle.SFTP_FLAG_EXCL=paramiko.sftp_handle-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_server.SFTP_FLAG_EXCL=paramiko.sftp_server-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_si.SFTP_FLAG_EXCL=paramiko.sftp_si-module.html#SFTP_FLAG_EXCL"><a title="paramiko.sftp.SFTP_FLAG_EXCL +paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-58', 'SFTP_FLAG_CREATE', 'link-54');">SFTP_FLAG_CREATE</a></tt> <tt class="py-op">|</tt> <tt id="link-59" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_EXCL=paramiko.sftp-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_attr.SFTP_FLAG_EXCL=paramiko.sftp_attr-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_client.SFTP_FLAG_EXCL=paramiko.sftp_client-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_file.SFTP_FLAG_EXCL=paramiko.sftp_file-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_handle.SFTP_FLAG_EXCL=paramiko.sftp_handle-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_server.SFTP_FLAG_EXCL=paramiko.sftp_server-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_si.SFTP_FLAG_EXCL=paramiko.sftp_si-module.html#SFTP_FLAG_EXCL"><a title="paramiko.sftp.SFTP_FLAG_EXCL paramiko.sftp_attr.SFTP_FLAG_EXCL paramiko.sftp_client.SFTP_FLAG_EXCL paramiko.sftp_file.SFTP_FLAG_EXCL paramiko.sftp_handle.SFTP_FLAG_EXCL paramiko.sftp_server.SFTP_FLAG_EXCL -paramiko.sftp_si.SFTP_FLAG_EXCL" class="py-name" href="#" onclick="return doclink('link-56', 'SFTP_FLAG_EXCL', 'link-56');">SFTP_FLAG_EXCL</a></tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">attrblock</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-57', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Variable paramiko.sftp.CMD_OPEN=paramiko.sftp-module.html#CMD_OPEN,Variable paramiko.sftp_attr.CMD_OPEN=paramiko.sftp_attr-module.html#CMD_OPEN,Variable paramiko.sftp_client.CMD_OPEN=paramiko.sftp_client-module.html#CMD_OPEN,Variable paramiko.sftp_file.CMD_OPEN=paramiko.sftp_file-module.html#CMD_OPEN,Variable paramiko.sftp_handle.CMD_OPEN=paramiko.sftp_handle-module.html#CMD_OPEN,Variable paramiko.sftp_server.CMD_OPEN=paramiko.sftp_server-module.html#CMD_OPEN,Variable paramiko.sftp_si.CMD_OPEN=paramiko.sftp_si-module.html#CMD_OPEN"><a title="paramiko.sftp.CMD_OPEN +paramiko.sftp_si.SFTP_FLAG_EXCL" class="py-name" href="#" onclick="return doclink('link-59', 'SFTP_FLAG_EXCL', 'link-59');">SFTP_FLAG_EXCL</a></tt> </tt> +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">attrblock</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-60', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-61" class="py-name" targets="Variable paramiko.sftp.CMD_OPEN=paramiko.sftp-module.html#CMD_OPEN,Variable paramiko.sftp_attr.CMD_OPEN=paramiko.sftp_attr-module.html#CMD_OPEN,Variable paramiko.sftp_client.CMD_OPEN=paramiko.sftp_client-module.html#CMD_OPEN,Variable paramiko.sftp_file.CMD_OPEN=paramiko.sftp_file-module.html#CMD_OPEN,Variable paramiko.sftp_handle.CMD_OPEN=paramiko.sftp_handle-module.html#CMD_OPEN,Variable paramiko.sftp_server.CMD_OPEN=paramiko.sftp_server-module.html#CMD_OPEN,Variable paramiko.sftp_si.CMD_OPEN=paramiko.sftp_si-module.html#CMD_OPEN"><a title="paramiko.sftp.CMD_OPEN paramiko.sftp_attr.CMD_OPEN paramiko.sftp_client.CMD_OPEN paramiko.sftp_file.CMD_OPEN paramiko.sftp_handle.CMD_OPEN paramiko.sftp_server.CMD_OPEN -paramiko.sftp_si.CMD_OPEN" class="py-name" href="#" onclick="return doclink('link-58', 'CMD_OPEN', 'link-58');">CMD_OPEN</a></tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">imode</tt><tt class="py-op">,</tt> <tt class="py-name">attrblock</tt><tt class="py-op">)</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-59" class="py-name"><a title="paramiko.sftp.CMD_HANDLE +paramiko.sftp_si.CMD_OPEN" class="py-name" href="#" onclick="return doclink('link-61', 'CMD_OPEN', 'link-61');">CMD_OPEN</a></tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">imode</tt><tt class="py-op">,</tt> <tt class="py-name">attrblock</tt><tt class="py-op">)</tt> </tt> +<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-62" class="py-name"><a title="paramiko.sftp.CMD_HANDLE paramiko.sftp_attr.CMD_HANDLE paramiko.sftp_client.CMD_HANDLE paramiko.sftp_file.CMD_HANDLE paramiko.sftp_handle.CMD_HANDLE paramiko.sftp_server.CMD_HANDLE -paramiko.sftp_si.CMD_HANDLE" class="py-name" href="#" onclick="return doclink('link-59', 'CMD_HANDLE', 'link-37');">CMD_HANDLE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-60" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-60', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected handle'</tt><tt class="py-op">)</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-61', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-62" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_HANDLE" class="py-name" href="#" onclick="return doclink('link-62', 'CMD_HANDLE', 'link-40');">CMD_HANDLE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-63" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-63', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected handle'</tt><tt class="py-op">)</tt> </tt> +<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-64', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-65" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -550,25 +563,25 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-62', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'open(%r, %r) -> %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">handle</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-63" class="py-name"><a title="paramiko.SFTPFile" class="py-name" href="#" onclick="return doclink('link-63', 'SFTPFile', 'link-10');">SFTPFile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> -</div><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-comment"># python continues to vacillate about "open" vs "file"...</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-64" class="py-name" targets="Method paramiko.SFTPClient.file()=paramiko.SFTPClient-class.html#file,Module paramiko.file=paramiko.file-module.html"><a title="paramiko.SFTPClient.file -paramiko.file" class="py-name" href="#" onclick="return doclink('link-64', 'file', 'link-64');">file</a></tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-65', 'open', 'link-65');">open</a></tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.remove"></a><div id="SFTPClient.remove-def"><a name="L250"></a><tt class="py-lineno">250</tt> <a class="py-toggle" href="#" id="SFTPClient.remove-toggle" onclick="return toggle('SFTPClient.remove');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#remove">remove</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.remove-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.remove-expanded"><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> Remove the file at the given path. This only works on files; for</tt> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> removing folders (directories), use L{rmdir}.</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path (absolute or relative) of the file to remove</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the path refers to a folder (directory)</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-65', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'open(%r, %r) -> %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">handle</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-66" class="py-name"><a title="paramiko.SFTPFile" class="py-name" href="#" onclick="return doclink('link-66', 'SFTPFile', 'link-11');">SFTPFile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">)</tt> </tt> +</div><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> </tt> +<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-comment"># python continues to vacillate about "open" vs "file"...</tt> </tt> +<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt id="link-67" class="py-name" targets="Method paramiko.SFTPClient.file()=paramiko.SFTPClient-class.html#file,Module paramiko.file=paramiko.file-module.html"><a title="paramiko.SFTPClient.file +paramiko.file" class="py-name" href="#" onclick="return doclink('link-67', 'file', 'link-67');">file</a></tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-68', 'open', 'link-68');">open</a></tt> </tt> +<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.remove"></a><div id="SFTPClient.remove-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="SFTPClient.remove-toggle" onclick="return toggle('SFTPClient.remove');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#remove">remove</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.remove-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.remove-expanded"><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> Remove the file at the given path. This only works on files; for</tt> </tt> +<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> removing folders (directories), use L{rmdir}.</tt> </tt> +<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path (absolute or relative) of the file to remove</tt> </tt> +<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the path refers to a folder (directory)</tt> </tt> +<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-69" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -589,32 +602,32 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-66', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'remove(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-67" class="py-name" targets="Variable paramiko.sftp.CMD_REMOVE=paramiko.sftp-module.html#CMD_REMOVE,Variable paramiko.sftp_attr.CMD_REMOVE=paramiko.sftp_attr-module.html#CMD_REMOVE,Variable paramiko.sftp_client.CMD_REMOVE=paramiko.sftp_client-module.html#CMD_REMOVE,Variable paramiko.sftp_file.CMD_REMOVE=paramiko.sftp_file-module.html#CMD_REMOVE,Variable paramiko.sftp_handle.CMD_REMOVE=paramiko.sftp_handle-module.html#CMD_REMOVE,Variable paramiko.sftp_server.CMD_REMOVE=paramiko.sftp_server-module.html#CMD_REMOVE,Variable paramiko.sftp_si.CMD_REMOVE=paramiko.sftp_si-module.html#CMD_REMOVE"><a title="paramiko.sftp.CMD_REMOVE +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-69', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'remove(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name" targets="Variable paramiko.sftp.CMD_REMOVE=paramiko.sftp-module.html#CMD_REMOVE,Variable paramiko.sftp_attr.CMD_REMOVE=paramiko.sftp_attr-module.html#CMD_REMOVE,Variable paramiko.sftp_client.CMD_REMOVE=paramiko.sftp_client-module.html#CMD_REMOVE,Variable paramiko.sftp_file.CMD_REMOVE=paramiko.sftp_file-module.html#CMD_REMOVE,Variable paramiko.sftp_handle.CMD_REMOVE=paramiko.sftp_handle-module.html#CMD_REMOVE,Variable paramiko.sftp_server.CMD_REMOVE=paramiko.sftp_server-module.html#CMD_REMOVE,Variable paramiko.sftp_si.CMD_REMOVE=paramiko.sftp_si-module.html#CMD_REMOVE"><a title="paramiko.sftp.CMD_REMOVE paramiko.sftp_attr.CMD_REMOVE paramiko.sftp_client.CMD_REMOVE paramiko.sftp_file.CMD_REMOVE paramiko.sftp_handle.CMD_REMOVE paramiko.sftp_server.CMD_REMOVE -paramiko.sftp_si.CMD_REMOVE" class="py-name" href="#" onclick="return doclink('link-67', 'CMD_REMOVE', 'link-67');">CMD_REMOVE</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -</div><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt id="link-68" class="py-name" targets="Method paramiko.SFTPClient.unlink()=paramiko.SFTPClient-class.html#unlink"><a title="paramiko.SFTPClient.unlink" class="py-name" href="#" onclick="return doclink('link-68', 'unlink', 'link-68');">unlink</a></tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-69', 'remove', 'link-69');">remove</a></tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.rename"></a><div id="SFTPClient.rename-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="SFTPClient.rename-toggle" onclick="return toggle('SFTPClient.rename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#rename">rename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">oldpath</tt><tt class="py-op">,</tt> <tt class="py-param">newpath</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.rename-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.rename-expanded"><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> Rename a file or folder from C{oldpath} to C{newpath}.</tt> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> @param oldpath: existing name of the file or folder</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> @type oldpath: str</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> @param newpath: new name for the file or folder</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> @type newpath: str</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if C{newpath} is a folder, or something else goes</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> wrong</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">oldpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">)</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">newpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">newpath</tt><tt class="py-op">)</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_REMOVE" class="py-name" href="#" onclick="return doclink('link-70', 'CMD_REMOVE', 'link-70');">CMD_REMOVE</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +</div><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt> +<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt id="link-71" class="py-name" targets="Method paramiko.SFTPClient.unlink()=paramiko.SFTPClient-class.html#unlink"><a title="paramiko.SFTPClient.unlink" class="py-name" href="#" onclick="return doclink('link-71', 'unlink', 'link-71');">unlink</a></tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-72', 'remove', 'link-72');">remove</a></tt> </tt> +<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.rename"></a><div id="SFTPClient.rename-def"><a name="L271"></a><tt class="py-lineno">271</tt> <a class="py-toggle" href="#" id="SFTPClient.rename-toggle" onclick="return toggle('SFTPClient.rename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#rename">rename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">oldpath</tt><tt class="py-op">,</tt> <tt class="py-param">newpath</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.rename-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.rename-expanded"><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> Rename a file or folder from C{oldpath} to C{newpath}.</tt> </tt> +<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> @param oldpath: existing name of the file or folder</tt> </tt> +<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> @type oldpath: str</tt> </tt> +<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> @param newpath: new name for the file or folder</tt> </tt> +<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> @type newpath: str</tt> </tt> +<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if C{newpath} is a folder, or something else goes</tt> </tt> +<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"><tt class="py-docstring"> wrong</tt> </tt> +<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">oldpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">)</tt> </tt> +<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">newpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">newpath</tt><tt class="py-op">)</tt> </tt> +<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -635,28 +648,28 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-70', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rename(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name" targets="Variable paramiko.sftp.CMD_RENAME=paramiko.sftp-module.html#CMD_RENAME,Variable paramiko.sftp_attr.CMD_RENAME=paramiko.sftp_attr-module.html#CMD_RENAME,Variable paramiko.sftp_client.CMD_RENAME=paramiko.sftp_client-module.html#CMD_RENAME,Variable paramiko.sftp_file.CMD_RENAME=paramiko.sftp_file-module.html#CMD_RENAME,Variable paramiko.sftp_handle.CMD_RENAME=paramiko.sftp_handle-module.html#CMD_RENAME,Variable paramiko.sftp_server.CMD_RENAME=paramiko.sftp_server-module.html#CMD_RENAME,Variable paramiko.sftp_si.CMD_RENAME=paramiko.sftp_si-module.html#CMD_RENAME"><a title="paramiko.sftp.CMD_RENAME +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-73', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rename(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name" targets="Variable paramiko.sftp.CMD_RENAME=paramiko.sftp-module.html#CMD_RENAME,Variable paramiko.sftp_attr.CMD_RENAME=paramiko.sftp_attr-module.html#CMD_RENAME,Variable paramiko.sftp_client.CMD_RENAME=paramiko.sftp_client-module.html#CMD_RENAME,Variable paramiko.sftp_file.CMD_RENAME=paramiko.sftp_file-module.html#CMD_RENAME,Variable paramiko.sftp_handle.CMD_RENAME=paramiko.sftp_handle-module.html#CMD_RENAME,Variable paramiko.sftp_server.CMD_RENAME=paramiko.sftp_server-module.html#CMD_RENAME,Variable paramiko.sftp_si.CMD_RENAME=paramiko.sftp_si-module.html#CMD_RENAME"><a title="paramiko.sftp.CMD_RENAME paramiko.sftp_attr.CMD_RENAME paramiko.sftp_client.CMD_RENAME paramiko.sftp_file.CMD_RENAME paramiko.sftp_handle.CMD_RENAME paramiko.sftp_server.CMD_RENAME -paramiko.sftp_si.CMD_RENAME" class="py-name" href="#" onclick="return doclink('link-71', 'CMD_RENAME', 'link-71');">CMD_RENAME</a></tt><tt class="py-op">,</tt> <tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt> </tt> -</div><a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.mkdir"></a><div id="SFTPClient.mkdir-def"><a name="L283"></a><tt class="py-lineno">283</tt> <a class="py-toggle" href="#" id="SFTPClient.mkdir-toggle" onclick="return toggle('SFTPClient.mkdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#mkdir">mkdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-number">0777</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.mkdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.mkdir-expanded"><a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"> Create a folder (directory) named C{path} with numeric mode C{mode}.</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-docstring"> The default mode is 0777 (octal). On some systems, mode is ignored.</tt> </tt> -<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt class="py-docstring"> Where it is used, the current umask value is first masked out.</tt> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"> @param path: name of the folder to create</tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: permissions (posix-style) for the newly-created folder</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: int</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_RENAME" class="py-name" href="#" onclick="return doclink('link-74', 'CMD_RENAME', 'link-74');">CMD_RENAME</a></tt><tt class="py-op">,</tt> <tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt> </tt> +</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.mkdir"></a><div id="SFTPClient.mkdir-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="SFTPClient.mkdir-toggle" onclick="return toggle('SFTPClient.mkdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#mkdir">mkdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-number">0777</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.mkdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.mkdir-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> Create a folder (directory) named C{path} with numeric mode C{mode}.</tt> </tt> +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> The default mode is 0777 (octal). On some systems, mode is ignored.</tt> </tt> +<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> Where it is used, the current umask value is first masked out.</tt> </tt> +<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> @param path: name of the folder to create</tt> </tt> +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: permissions (posix-style) for the newly-created folder</tt> </tt> +<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: int</tt> </tt> +<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -677,26 +690,26 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-72', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'mkdir(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-73', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name" targets="Variable paramiko.sftp.CMD_MKDIR=paramiko.sftp-module.html#CMD_MKDIR,Variable paramiko.sftp_attr.CMD_MKDIR=paramiko.sftp_attr-module.html#CMD_MKDIR,Variable paramiko.sftp_client.CMD_MKDIR=paramiko.sftp_client-module.html#CMD_MKDIR,Variable paramiko.sftp_file.CMD_MKDIR=paramiko.sftp_file-module.html#CMD_MKDIR,Variable paramiko.sftp_handle.CMD_MKDIR=paramiko.sftp_handle-module.html#CMD_MKDIR,Variable paramiko.sftp_server.CMD_MKDIR=paramiko.sftp_server-module.html#CMD_MKDIR,Variable paramiko.sftp_si.CMD_MKDIR=paramiko.sftp_si-module.html#CMD_MKDIR"><a title="paramiko.sftp.CMD_MKDIR +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-75', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'mkdir(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-76', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt> +<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name" targets="Variable paramiko.sftp.CMD_MKDIR=paramiko.sftp-module.html#CMD_MKDIR,Variable paramiko.sftp_attr.CMD_MKDIR=paramiko.sftp_attr-module.html#CMD_MKDIR,Variable paramiko.sftp_client.CMD_MKDIR=paramiko.sftp_client-module.html#CMD_MKDIR,Variable paramiko.sftp_file.CMD_MKDIR=paramiko.sftp_file-module.html#CMD_MKDIR,Variable paramiko.sftp_handle.CMD_MKDIR=paramiko.sftp_handle-module.html#CMD_MKDIR,Variable paramiko.sftp_server.CMD_MKDIR=paramiko.sftp_server-module.html#CMD_MKDIR,Variable paramiko.sftp_si.CMD_MKDIR=paramiko.sftp_si-module.html#CMD_MKDIR"><a title="paramiko.sftp.CMD_MKDIR paramiko.sftp_attr.CMD_MKDIR paramiko.sftp_client.CMD_MKDIR paramiko.sftp_file.CMD_MKDIR paramiko.sftp_handle.CMD_MKDIR paramiko.sftp_server.CMD_MKDIR -paramiko.sftp_si.CMD_MKDIR" class="py-name" href="#" onclick="return doclink('link-74', 'CMD_MKDIR', 'link-74');">CMD_MKDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.rmdir"></a><div id="SFTPClient.rmdir-def"><a name="L300"></a><tt class="py-lineno">300</tt> <a class="py-toggle" href="#" id="SFTPClient.rmdir-toggle" onclick="return toggle('SFTPClient.rmdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#rmdir">rmdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.rmdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.rmdir-expanded"><a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> Remove the folder named C{path}.</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-docstring"> @param path: name of the folder to remove</tt> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_MKDIR" class="py-name" href="#" onclick="return doclink('link-77', 'CMD_MKDIR', 'link-77');">CMD_MKDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.rmdir"></a><div id="SFTPClient.rmdir-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="SFTPClient.rmdir-toggle" onclick="return toggle('SFTPClient.rmdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#rmdir">rmdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.rmdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.rmdir-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> Remove the folder named C{path}.</tt> </tt> +<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"><tt class="py-docstring"> @param path: name of the folder to remove</tt> </tt> +<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-78" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -717,36 +730,36 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-75', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rmdir(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-76" class="py-name" targets="Variable paramiko.sftp.CMD_RMDIR=paramiko.sftp-module.html#CMD_RMDIR,Variable paramiko.sftp_attr.CMD_RMDIR=paramiko.sftp_attr-module.html#CMD_RMDIR,Variable paramiko.sftp_client.CMD_RMDIR=paramiko.sftp_client-module.html#CMD_RMDIR,Variable paramiko.sftp_file.CMD_RMDIR=paramiko.sftp_file-module.html#CMD_RMDIR,Variable paramiko.sftp_handle.CMD_RMDIR=paramiko.sftp_handle-module.html#CMD_RMDIR,Variable paramiko.sftp_server.CMD_RMDIR=paramiko.sftp_server-module.html#CMD_RMDIR,Variable paramiko.sftp_si.CMD_RMDIR=paramiko.sftp_si-module.html#CMD_RMDIR"><a title="paramiko.sftp.CMD_RMDIR +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-78', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rmdir(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-79" class="py-name" targets="Variable paramiko.sftp.CMD_RMDIR=paramiko.sftp-module.html#CMD_RMDIR,Variable paramiko.sftp_attr.CMD_RMDIR=paramiko.sftp_attr-module.html#CMD_RMDIR,Variable paramiko.sftp_client.CMD_RMDIR=paramiko.sftp_client-module.html#CMD_RMDIR,Variable paramiko.sftp_file.CMD_RMDIR=paramiko.sftp_file-module.html#CMD_RMDIR,Variable paramiko.sftp_handle.CMD_RMDIR=paramiko.sftp_handle-module.html#CMD_RMDIR,Variable paramiko.sftp_server.CMD_RMDIR=paramiko.sftp_server-module.html#CMD_RMDIR,Variable paramiko.sftp_si.CMD_RMDIR=paramiko.sftp_si-module.html#CMD_RMDIR"><a title="paramiko.sftp.CMD_RMDIR paramiko.sftp_attr.CMD_RMDIR paramiko.sftp_client.CMD_RMDIR paramiko.sftp_file.CMD_RMDIR paramiko.sftp_handle.CMD_RMDIR paramiko.sftp_server.CMD_RMDIR -paramiko.sftp_si.CMD_RMDIR" class="py-name" href="#" onclick="return doclink('link-76', 'CMD_RMDIR', 'link-76');">CMD_RMDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -</div><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.stat"></a><div id="SFTPClient.stat-def"><a name="L311"></a><tt class="py-lineno">311</tt> <a class="py-toggle" href="#" id="SFTPClient.stat-toggle" onclick="return toggle('SFTPClient.stat');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#stat">stat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.stat-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.stat-expanded"><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve information about a file on the remote system. The return</tt> </tt> -<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> value is an object whose attributes correspond to the attributes of</tt> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"> python's C{stat} structure as returned by C{os.stat}, except that it</tt> </tt> -<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> contains fewer fields. An SFTP server may return as much or as little</tt> </tt> -<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> info as it wants, so the results may vary from server to server.</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> Unlike a python C{stat} object, the result may not be accessed as a</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> tuple. This is mostly due to the author's slack factor.</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> The fields supported are: C{st_mode}, C{st_size}, C{st_uid}, C{st_gid},</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> C{st_atime}, and C{st_mtime}.</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> @param path: the filename to stat</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_RMDIR" class="py-name" href="#" onclick="return doclink('link-79', 'CMD_RMDIR', 'link-79');">CMD_RMDIR</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +</div><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.stat"></a><div id="SFTPClient.stat-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="SFTPClient.stat-toggle" onclick="return toggle('SFTPClient.stat');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#stat">stat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.stat-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.stat-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve information about a file on the remote system. The return</tt> </tt> +<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> value is an object whose attributes correspond to the attributes of</tt> </tt> +<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> python's C{stat} structure as returned by C{os.stat}, except that it</tt> </tt> +<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> contains fewer fields. An SFTP server may return as much or as little</tt> </tt> +<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> info as it wants, so the results may vary from server to server.</tt> </tt> +<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"> Unlike a python C{stat} object, the result may not be accessed as a</tt> </tt> +<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> tuple. This is mostly due to the author's slack factor.</tt> </tt> +<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> The fields supported are: C{st_mode}, C{st_size}, C{st_uid}, C{st_gid},</tt> </tt> +<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> C{st_atime}, and C{st_mtime}.</tt> </tt> +<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> @param path: the filename to stat</tt> </tt> +<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> +<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> +<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -767,37 +780,37 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-77', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'stat(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-78" class="py-name" targets="Variable paramiko.sftp.CMD_STAT=paramiko.sftp-module.html#CMD_STAT,Variable paramiko.sftp_attr.CMD_STAT=paramiko.sftp_attr-module.html#CMD_STAT,Variable paramiko.sftp_client.CMD_STAT=paramiko.sftp_client-module.html#CMD_STAT,Variable paramiko.sftp_file.CMD_STAT=paramiko.sftp_file-module.html#CMD_STAT,Variable paramiko.sftp_handle.CMD_STAT=paramiko.sftp_handle-module.html#CMD_STAT,Variable paramiko.sftp_server.CMD_STAT=paramiko.sftp_server-module.html#CMD_STAT,Variable paramiko.sftp_si.CMD_STAT=paramiko.sftp_si-module.html#CMD_STAT"><a title="paramiko.sftp.CMD_STAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-80', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'stat(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-81" class="py-name" targets="Variable paramiko.sftp.CMD_STAT=paramiko.sftp-module.html#CMD_STAT,Variable paramiko.sftp_attr.CMD_STAT=paramiko.sftp_attr-module.html#CMD_STAT,Variable paramiko.sftp_client.CMD_STAT=paramiko.sftp_client-module.html#CMD_STAT,Variable paramiko.sftp_file.CMD_STAT=paramiko.sftp_file-module.html#CMD_STAT,Variable paramiko.sftp_handle.CMD_STAT=paramiko.sftp_handle-module.html#CMD_STAT,Variable paramiko.sftp_server.CMD_STAT=paramiko.sftp_server-module.html#CMD_STAT,Variable paramiko.sftp_si.CMD_STAT=paramiko.sftp_si-module.html#CMD_STAT"><a title="paramiko.sftp.CMD_STAT paramiko.sftp_attr.CMD_STAT paramiko.sftp_client.CMD_STAT paramiko.sftp_file.CMD_STAT paramiko.sftp_handle.CMD_STAT paramiko.sftp_server.CMD_STAT -paramiko.sftp_si.CMD_STAT" class="py-name" href="#" onclick="return doclink('link-78', 'CMD_STAT', 'link-78');">CMD_STAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-79" class="py-name" targets="Variable paramiko.sftp.CMD_ATTRS=paramiko.sftp-module.html#CMD_ATTRS,Variable paramiko.sftp_attr.CMD_ATTRS=paramiko.sftp_attr-module.html#CMD_ATTRS,Variable paramiko.sftp_client.CMD_ATTRS=paramiko.sftp_client-module.html#CMD_ATTRS,Variable paramiko.sftp_file.CMD_ATTRS=paramiko.sftp_file-module.html#CMD_ATTRS,Variable paramiko.sftp_handle.CMD_ATTRS=paramiko.sftp_handle-module.html#CMD_ATTRS,Variable paramiko.sftp_server.CMD_ATTRS=paramiko.sftp_server-module.html#CMD_ATTRS,Variable paramiko.sftp_si.CMD_ATTRS=paramiko.sftp_si-module.html#CMD_ATTRS"><a title="paramiko.sftp.CMD_ATTRS +paramiko.sftp_si.CMD_STAT" class="py-name" href="#" onclick="return doclink('link-81', 'CMD_STAT', 'link-81');">CMD_STAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-82" class="py-name" targets="Variable paramiko.sftp.CMD_ATTRS=paramiko.sftp-module.html#CMD_ATTRS,Variable paramiko.sftp_attr.CMD_ATTRS=paramiko.sftp_attr-module.html#CMD_ATTRS,Variable paramiko.sftp_client.CMD_ATTRS=paramiko.sftp_client-module.html#CMD_ATTRS,Variable paramiko.sftp_file.CMD_ATTRS=paramiko.sftp_file-module.html#CMD_ATTRS,Variable paramiko.sftp_handle.CMD_ATTRS=paramiko.sftp_handle-module.html#CMD_ATTRS,Variable paramiko.sftp_server.CMD_ATTRS=paramiko.sftp_server-module.html#CMD_ATTRS,Variable paramiko.sftp_si.CMD_ATTRS=paramiko.sftp_si-module.html#CMD_ATTRS"><a title="paramiko.sftp.CMD_ATTRS paramiko.sftp_attr.CMD_ATTRS paramiko.sftp_client.CMD_ATTRS paramiko.sftp_file.CMD_ATTRS paramiko.sftp_handle.CMD_ATTRS paramiko.sftp_server.CMD_ATTRS -paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-79', 'CMD_ATTRS', 'link-79');">CMD_ATTRS</a></tt><tt class="py-op">:</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-80" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-80', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected attributes'</tt><tt class="py-op">)</tt> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-81" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-81', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -</div><a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.lstat"></a><div id="SFTPClient.lstat-def"><a name="L337"></a><tt class="py-lineno">337</tt> <a class="py-toggle" href="#" id="SFTPClient.lstat-toggle" onclick="return toggle('SFTPClient.lstat');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#lstat">lstat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.lstat-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.lstat-expanded"><a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve information about a file on the remote system, without</tt> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> following symbolic links (shortcuts). This otherwise behaves exactly</tt> </tt> -<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> the same as L{stat}.</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> @param path: the filename to stat</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> -<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> -<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-82" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-82', 'CMD_ATTRS', 'link-82');">CMD_ATTRS</a></tt><tt class="py-op">:</tt> </tt> +<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-83" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-83', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected attributes'</tt><tt class="py-op">)</tt> </tt> +<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-84" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-84', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +</div><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.lstat"></a><div id="SFTPClient.lstat-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="SFTPClient.lstat-toggle" onclick="return toggle('SFTPClient.lstat');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#lstat">lstat</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.lstat-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.lstat-expanded"><a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve information about a file on the remote system, without</tt> </tt> +<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> following symbolic links (shortcuts). This otherwise behaves exactly</tt> </tt> +<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> the same as L{stat}.</tt> </tt> +<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> @param path: the filename to stat</tt> </tt> +<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> +<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> +<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -818,36 +831,36 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-82', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'lstat(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-83" class="py-name" targets="Variable paramiko.sftp.CMD_LSTAT=paramiko.sftp-module.html#CMD_LSTAT,Variable paramiko.sftp_attr.CMD_LSTAT=paramiko.sftp_attr-module.html#CMD_LSTAT,Variable paramiko.sftp_client.CMD_LSTAT=paramiko.sftp_client-module.html#CMD_LSTAT,Variable paramiko.sftp_file.CMD_LSTAT=paramiko.sftp_file-module.html#CMD_LSTAT,Variable paramiko.sftp_handle.CMD_LSTAT=paramiko.sftp_handle-module.html#CMD_LSTAT,Variable paramiko.sftp_server.CMD_LSTAT=paramiko.sftp_server-module.html#CMD_LSTAT,Variable paramiko.sftp_si.CMD_LSTAT=paramiko.sftp_si-module.html#CMD_LSTAT"><a title="paramiko.sftp.CMD_LSTAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-85', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'lstat(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-86" class="py-name" targets="Variable paramiko.sftp.CMD_LSTAT=paramiko.sftp-module.html#CMD_LSTAT,Variable paramiko.sftp_attr.CMD_LSTAT=paramiko.sftp_attr-module.html#CMD_LSTAT,Variable paramiko.sftp_client.CMD_LSTAT=paramiko.sftp_client-module.html#CMD_LSTAT,Variable paramiko.sftp_file.CMD_LSTAT=paramiko.sftp_file-module.html#CMD_LSTAT,Variable paramiko.sftp_handle.CMD_LSTAT=paramiko.sftp_handle-module.html#CMD_LSTAT,Variable paramiko.sftp_server.CMD_LSTAT=paramiko.sftp_server-module.html#CMD_LSTAT,Variable paramiko.sftp_si.CMD_LSTAT=paramiko.sftp_si-module.html#CMD_LSTAT"><a title="paramiko.sftp.CMD_LSTAT paramiko.sftp_attr.CMD_LSTAT paramiko.sftp_client.CMD_LSTAT paramiko.sftp_file.CMD_LSTAT paramiko.sftp_handle.CMD_LSTAT paramiko.sftp_server.CMD_LSTAT -paramiko.sftp_si.CMD_LSTAT" class="py-name" href="#" onclick="return doclink('link-83', 'CMD_LSTAT', 'link-83');">CMD_LSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-84" class="py-name"><a title="paramiko.sftp.CMD_ATTRS +paramiko.sftp_si.CMD_LSTAT" class="py-name" href="#" onclick="return doclink('link-86', 'CMD_LSTAT', 'link-86');">CMD_LSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-87" class="py-name"><a title="paramiko.sftp.CMD_ATTRS paramiko.sftp_attr.CMD_ATTRS paramiko.sftp_client.CMD_ATTRS paramiko.sftp_file.CMD_ATTRS paramiko.sftp_handle.CMD_ATTRS paramiko.sftp_server.CMD_ATTRS -paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-84', 'CMD_ATTRS', 'link-79');">CMD_ATTRS</a></tt><tt class="py-op">:</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-85" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-85', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected attributes'</tt><tt class="py-op">)</tt> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-86" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-86', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -</div><a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.symlink"></a><div id="SFTPClient.symlink-def"><a name="L355"></a><tt class="py-lineno">355</tt> <a class="py-toggle" href="#" id="SFTPClient.symlink-toggle" onclick="return toggle('SFTPClient.symlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#symlink">symlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">source</tt><tt class="py-op">,</tt> <tt class="py-param">dest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.symlink-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.symlink-expanded"><a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> Create a symbolic link (shortcut) of the C{source} path at</tt> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> C{destination}.</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> @param source: path of the original file</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> @type source: str</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> @param dest: path of the newly created symlink</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> @type dest: str</tt> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">dest</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">dest</tt><tt class="py-op">)</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-87', 'CMD_ATTRS', 'link-82');">CMD_ATTRS</a></tt><tt class="py-op">:</tt> </tt> +<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-88" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-88', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected attributes'</tt><tt class="py-op">)</tt> </tt> +<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-89" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-89', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +</div><a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.symlink"></a><div id="SFTPClient.symlink-def"><a name="L360"></a><tt class="py-lineno">360</tt> <a class="py-toggle" href="#" id="SFTPClient.symlink-toggle" onclick="return toggle('SFTPClient.symlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#symlink">symlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">source</tt><tt class="py-op">,</tt> <tt class="py-param">dest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.symlink-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.symlink-expanded"><a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> Create a symbolic link (shortcut) of the C{source} path at</tt> </tt> +<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> C{destination}.</tt> </tt> +<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> @param source: path of the original file</tt> </tt> +<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> @type source: str</tt> </tt> +<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> @param dest: path of the newly created symlink</tt> </tt> +<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> @type dest: str</tt> </tt> +<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">dest</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">dest</tt><tt class="py-op">)</tt> </tt> +<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -868,30 +881,30 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-87', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'symlink(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">source</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-88', 'encode', 'link-11');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-89" class="py-name" targets="Variable paramiko.sftp.CMD_SYMLINK=paramiko.sftp-module.html#CMD_SYMLINK,Variable paramiko.sftp_attr.CMD_SYMLINK=paramiko.sftp_attr-module.html#CMD_SYMLINK,Variable paramiko.sftp_client.CMD_SYMLINK=paramiko.sftp_client-module.html#CMD_SYMLINK,Variable paramiko.sftp_file.CMD_SYMLINK=paramiko.sftp_file-module.html#CMD_SYMLINK,Variable paramiko.sftp_handle.CMD_SYMLINK=paramiko.sftp_handle-module.html#CMD_SYMLINK,Variable paramiko.sftp_server.CMD_SYMLINK=paramiko.sftp_server-module.html#CMD_SYMLINK,Variable paramiko.sftp_si.CMD_SYMLINK=paramiko.sftp_si-module.html#CMD_SYMLINK"><a title="paramiko.sftp.CMD_SYMLINK +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-90', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'symlink(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt> +<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">source</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-91', 'encode', 'link-12');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> +<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-92" class="py-name" targets="Variable paramiko.sftp.CMD_SYMLINK=paramiko.sftp-module.html#CMD_SYMLINK,Variable paramiko.sftp_attr.CMD_SYMLINK=paramiko.sftp_attr-module.html#CMD_SYMLINK,Variable paramiko.sftp_client.CMD_SYMLINK=paramiko.sftp_client-module.html#CMD_SYMLINK,Variable paramiko.sftp_file.CMD_SYMLINK=paramiko.sftp_file-module.html#CMD_SYMLINK,Variable paramiko.sftp_handle.CMD_SYMLINK=paramiko.sftp_handle-module.html#CMD_SYMLINK,Variable paramiko.sftp_server.CMD_SYMLINK=paramiko.sftp_server-module.html#CMD_SYMLINK,Variable paramiko.sftp_si.CMD_SYMLINK=paramiko.sftp_si-module.html#CMD_SYMLINK"><a title="paramiko.sftp.CMD_SYMLINK paramiko.sftp_attr.CMD_SYMLINK paramiko.sftp_client.CMD_SYMLINK paramiko.sftp_file.CMD_SYMLINK paramiko.sftp_handle.CMD_SYMLINK paramiko.sftp_server.CMD_SYMLINK -paramiko.sftp_si.CMD_SYMLINK" class="py-name" href="#" onclick="return doclink('link-89', 'CMD_SYMLINK', 'link-89');">CMD_SYMLINK</a></tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">)</tt> </tt> -</div><a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.chmod"></a><div id="SFTPClient.chmod-def"><a name="L371"></a><tt class="py-lineno">371</tt> <a class="py-toggle" href="#" id="SFTPClient.chmod-toggle" onclick="return toggle('SFTPClient.chmod');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chmod">chmod</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.chmod-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chmod-expanded"><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> Change the mode (permissions) of a file. The permissions are</tt> </tt> -<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> unix-style and identical to those used by python's C{os.chmod}</tt> </tt> -<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> function.</tt> </tt> -<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to change the permissions of</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: new permissions</tt> </tt> -<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: int</tt> </tt> -<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_SYMLINK" class="py-name" href="#" onclick="return doclink('link-92', 'CMD_SYMLINK', 'link-92');">CMD_SYMLINK</a></tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">dest</tt><tt class="py-op">)</tt> </tt> +</div><a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.chmod"></a><div id="SFTPClient.chmod-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="SFTPClient.chmod-toggle" onclick="return toggle('SFTPClient.chmod');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chmod">chmod</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.chmod-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chmod-expanded"><a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> Change the mode (permissions) of a file. The permissions are</tt> </tt> +<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> unix-style and identical to those used by python's C{os.chmod}</tt> </tt> +<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> function.</tt> </tt> +<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to change the permissions of</tt> </tt> +<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> @param mode: new permissions</tt> </tt> +<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> @type mode: int</tt> </tt> +<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -912,33 +925,33 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-90', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'chmod(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-91" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-91', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt> -<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-92" class="py-name" targets="Variable paramiko.sftp.CMD_SETSTAT=paramiko.sftp-module.html#CMD_SETSTAT,Variable paramiko.sftp_attr.CMD_SETSTAT=paramiko.sftp_attr-module.html#CMD_SETSTAT,Variable paramiko.sftp_client.CMD_SETSTAT=paramiko.sftp_client-module.html#CMD_SETSTAT,Variable paramiko.sftp_file.CMD_SETSTAT=paramiko.sftp_file-module.html#CMD_SETSTAT,Variable paramiko.sftp_handle.CMD_SETSTAT=paramiko.sftp_handle-module.html#CMD_SETSTAT,Variable paramiko.sftp_server.CMD_SETSTAT=paramiko.sftp_server-module.html#CMD_SETSTAT,Variable paramiko.sftp_si.CMD_SETSTAT=paramiko.sftp_si-module.html#CMD_SETSTAT"><a title="paramiko.sftp.CMD_SETSTAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-93', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'chmod(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-94', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt> +<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name" targets="Variable paramiko.sftp.CMD_SETSTAT=paramiko.sftp-module.html#CMD_SETSTAT,Variable paramiko.sftp_attr.CMD_SETSTAT=paramiko.sftp_attr-module.html#CMD_SETSTAT,Variable paramiko.sftp_client.CMD_SETSTAT=paramiko.sftp_client-module.html#CMD_SETSTAT,Variable paramiko.sftp_file.CMD_SETSTAT=paramiko.sftp_file-module.html#CMD_SETSTAT,Variable paramiko.sftp_handle.CMD_SETSTAT=paramiko.sftp_handle-module.html#CMD_SETSTAT,Variable paramiko.sftp_server.CMD_SETSTAT=paramiko.sftp_server-module.html#CMD_SETSTAT,Variable paramiko.sftp_si.CMD_SETSTAT=paramiko.sftp_si-module.html#CMD_SETSTAT"><a title="paramiko.sftp.CMD_SETSTAT paramiko.sftp_attr.CMD_SETSTAT paramiko.sftp_client.CMD_SETSTAT paramiko.sftp_file.CMD_SETSTAT paramiko.sftp_handle.CMD_SETSTAT paramiko.sftp_server.CMD_SETSTAT -paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-92', 'CMD_SETSTAT', 'link-92');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.chown"></a><div id="SFTPClient.chown-def"><a name="L388"></a><tt class="py-lineno">388</tt> <a class="py-toggle" href="#" id="SFTPClient.chown-toggle" onclick="return toggle('SFTPClient.chown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chown">chown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">uid</tt><tt class="py-op">,</tt> <tt class="py-param">gid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.chown-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chown-expanded"><a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-docstring"> Change the owner (C{uid}) and group (C{gid}) of a file. As with</tt> </tt> -<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"><tt class="py-docstring"> python's C{os.chown} function, you must pass both arguments, so if you</tt> </tt> -<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"><tt class="py-docstring"> only want to change one, use L{stat} first to retrieve the current</tt> </tt> -<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-docstring"> owner and group.</tt> </tt> -<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to change the owner and group of</tt> </tt> -<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> @param uid: new owner's uid</tt> </tt> -<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> @type uid: int</tt> </tt> -<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> @param gid: new group id</tt> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> @type gid: int</tt> </tt> -<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-95', 'CMD_SETSTAT', 'link-95');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.chown"></a><div id="SFTPClient.chown-def"><a name="L393"></a><tt class="py-lineno">393</tt> <a class="py-toggle" href="#" id="SFTPClient.chown-toggle" onclick="return toggle('SFTPClient.chown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chown">chown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">uid</tt><tt class="py-op">,</tt> <tt class="py-param">gid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.chown-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chown-expanded"><a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> Change the owner (C{uid}) and group (C{gid}) of a file. As with</tt> </tt> +<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> python's C{os.chown} function, you must pass both arguments, so if you</tt> </tt> +<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> only want to change one, use L{stat} first to retrieve the current</tt> </tt> +<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> owner and group.</tt> </tt> +<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to change the owner and group of</tt> </tt> +<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"> @param uid: new owner's uid</tt> </tt> +<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> @type uid: int</tt> </tt> +<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> @param gid: new group id</tt> </tt> +<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"> @type gid: int</tt> </tt> +<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-96" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -959,36 +972,36 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-93', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'chown(%r, %r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">gid</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-94', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_uid</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_gid</tt> <tt class="py-op">=</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">gid</tt> </tt> -<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-96', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'chown(%r, %r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">gid</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-97', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_uid</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_gid</tt> <tt class="py-op">=</tt> <tt class="py-name">uid</tt><tt class="py-op">,</tt> <tt class="py-name">gid</tt> </tt> +<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-98" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT paramiko.sftp_attr.CMD_SETSTAT paramiko.sftp_client.CMD_SETSTAT paramiko.sftp_file.CMD_SETSTAT paramiko.sftp_handle.CMD_SETSTAT paramiko.sftp_server.CMD_SETSTAT -paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-95', 'CMD_SETSTAT', 'link-92');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.utime"></a><div id="SFTPClient.utime-def"><a name="L408"></a><tt class="py-lineno">408</tt> <a class="py-toggle" href="#" id="SFTPClient.utime-toggle" onclick="return toggle('SFTPClient.utime');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#utime">utime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">times</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.utime-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.utime-expanded"><a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> Set the access and modified times of the file specified by C{path}. If</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"> C{times} is C{None}, then the file's access and modified times are set</tt> </tt> -<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"><tt class="py-docstring"> to the current time. Otherwise, C{times} must be a 2-tuple of numbers,</tt> </tt> -<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"><tt class="py-docstring"> of the form C{(atime, mtime)}, which is used to set the access and</tt> </tt> -<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"><tt class="py-docstring"> modified times, respectively. This bizarre API is mimicked from python</tt> </tt> -<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"><tt class="py-docstring"> for the sake of consistency -- I apologize.</tt> </tt> -<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to modify</tt> </tt> -<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> @param times: C{None} or a tuple of (access time, modified time) in</tt> </tt> -<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> standard internet epoch time (seconds since 01 January 1970 GMT)</tt> </tt> -<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"> @type times: tuple(int)</tt> </tt> -<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">times</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">times</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-96" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-98', 'CMD_SETSTAT', 'link-95');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.utime"></a><div id="SFTPClient.utime-def"><a name="L413"></a><tt class="py-lineno">413</tt> <a class="py-toggle" href="#" id="SFTPClient.utime-toggle" onclick="return toggle('SFTPClient.utime');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#utime">utime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">times</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.utime-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.utime-expanded"><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"><tt class="py-docstring"> Set the access and modified times of the file specified by C{path}. If</tt> </tt> +<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-docstring"> C{times} is C{None}, then the file's access and modified times are set</tt> </tt> +<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> to the current time. Otherwise, C{times} must be a 2-tuple of numbers,</tt> </tt> +<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> of the form C{(atime, mtime)}, which is used to set the access and</tt> </tt> +<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> modified times, respectively. This bizarre API is mimicked from python</tt> </tt> +<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> for the sake of consistency -- I apologize.</tt> </tt> +<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to modify</tt> </tt> +<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"><tt class="py-docstring"> @param times: C{None} or a tuple of (access time, modified time) in</tt> </tt> +<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"><tt class="py-docstring"> standard internet epoch time (seconds since 01 January 1970 GMT)</tt> </tt> +<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"><tt class="py-docstring"> @type times: tuple(int)</tt> </tt> +<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">times</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-name">times</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1009,30 +1022,30 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-96', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'utime(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">times</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-97', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_atime</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-op">=</tt> <tt class="py-name">times</tt> </tt> -<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-98" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-99', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'utime(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">times</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-100', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_atime</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mtime</tt> <tt class="py-op">=</tt> <tt class="py-name">times</tt> </tt> +<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT paramiko.sftp_attr.CMD_SETSTAT paramiko.sftp_client.CMD_SETSTAT paramiko.sftp_file.CMD_SETSTAT paramiko.sftp_handle.CMD_SETSTAT paramiko.sftp_server.CMD_SETSTAT -paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-98', 'CMD_SETSTAT', 'link-92');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.truncate"></a><div id="SFTPClient.truncate-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="SFTPClient.truncate-toggle" onclick="return toggle('SFTPClient.truncate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#truncate">truncate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.truncate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.truncate-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> Change the size of the file specified by C{path}. This usually extends</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> or shrinks the size of the file, just like the C{truncate()} method on</tt> </tt> -<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"><tt class="py-docstring"> python file objects.</tt> </tt> -<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to modify</tt> </tt> -<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"> @param size: the new size of the file</tt> </tt> -<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"> @type size: int or long</tt> </tt> -<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-101', 'CMD_SETSTAT', 'link-95');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.truncate"></a><div id="SFTPClient.truncate-def"><a name="L436"></a><tt class="py-lineno">436</tt> <a class="py-toggle" href="#" id="SFTPClient.truncate-toggle" onclick="return toggle('SFTPClient.truncate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#truncate">truncate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.truncate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.truncate-expanded"><a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"><tt class="py-docstring"> Change the size of the file specified by C{path}. This usually extends</tt> </tt> +<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"> or shrinks the size of the file, just like the C{truncate()} method on</tt> </tt> +<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"> python file objects.</tt> </tt> +<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the file to modify</tt> </tt> +<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-docstring"> @param size: the new size of the file</tt> </tt> +<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"><tt class="py-docstring"> @type size: int or long</tt> </tt> +<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1053,30 +1066,30 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-99', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'truncate(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-100', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">=</tt> <tt class="py-name">size</tt> </tt> -<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-102', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'truncate(%r, %r)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-103', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">=</tt> <tt class="py-name">size</tt> </tt> +<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-104" class="py-name"><a title="paramiko.sftp.CMD_SETSTAT paramiko.sftp_attr.CMD_SETSTAT paramiko.sftp_client.CMD_SETSTAT paramiko.sftp_file.CMD_SETSTAT paramiko.sftp_handle.CMD_SETSTAT paramiko.sftp_server.CMD_SETSTAT -paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-101', 'CMD_SETSTAT', 'link-92');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.readlink"></a><div id="SFTPClient.readlink-def"><a name="L448"></a><tt class="py-lineno">448</tt> <a class="py-toggle" href="#" id="SFTPClient.readlink-toggle" onclick="return toggle('SFTPClient.readlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#readlink">readlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.readlink-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.readlink-expanded"><a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"><tt class="py-docstring"> Return the target of a symbolic link (shortcut). You can use</tt> </tt> -<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"><tt class="py-docstring"> L{symlink} to create these. The result may be either an absolute or</tt> </tt> -<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"><tt class="py-docstring"> relative pathname.</tt> </tt> -<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the symbolic link file</tt> </tt> -<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> @return: target path</tt> </tt> -<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-104', 'CMD_SETSTAT', 'link-95');">CMD_SETSTAT</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.readlink"></a><div id="SFTPClient.readlink-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="SFTPClient.readlink-toggle" onclick="return toggle('SFTPClient.readlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#readlink">readlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.readlink-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.readlink-expanded"><a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> Return the target of a symbolic link (shortcut). You can use</tt> </tt> +<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> L{symlink} to create these. The result may be either an absolute or</tt> </tt> +<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> relative pathname.</tt> </tt> +<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path of the symbolic link file</tt> </tt> +<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"><tt class="py-docstring"> @return: target path</tt> </tt> +<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-105" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1097,45 +1110,45 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-102', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'readlink(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-103" class="py-name" targets="Variable paramiko.sftp.CMD_READLINK=paramiko.sftp-module.html#CMD_READLINK,Variable paramiko.sftp_attr.CMD_READLINK=paramiko.sftp_attr-module.html#CMD_READLINK,Variable paramiko.sftp_client.CMD_READLINK=paramiko.sftp_client-module.html#CMD_READLINK,Variable paramiko.sftp_file.CMD_READLINK=paramiko.sftp_file-module.html#CMD_READLINK,Variable paramiko.sftp_handle.CMD_READLINK=paramiko.sftp_handle-module.html#CMD_READLINK,Variable paramiko.sftp_server.CMD_READLINK=paramiko.sftp_server-module.html#CMD_READLINK,Variable paramiko.sftp_si.CMD_READLINK=paramiko.sftp_si-module.html#CMD_READLINK"><a title="paramiko.sftp.CMD_READLINK +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-105', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'readlink(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name" targets="Variable paramiko.sftp.CMD_READLINK=paramiko.sftp-module.html#CMD_READLINK,Variable paramiko.sftp_attr.CMD_READLINK=paramiko.sftp_attr-module.html#CMD_READLINK,Variable paramiko.sftp_client.CMD_READLINK=paramiko.sftp_client-module.html#CMD_READLINK,Variable paramiko.sftp_file.CMD_READLINK=paramiko.sftp_file-module.html#CMD_READLINK,Variable paramiko.sftp_handle.CMD_READLINK=paramiko.sftp_handle-module.html#CMD_READLINK,Variable paramiko.sftp_server.CMD_READLINK=paramiko.sftp_server-module.html#CMD_READLINK,Variable paramiko.sftp_si.CMD_READLINK=paramiko.sftp_si-module.html#CMD_READLINK"><a title="paramiko.sftp.CMD_READLINK paramiko.sftp_attr.CMD_READLINK paramiko.sftp_client.CMD_READLINK paramiko.sftp_file.CMD_READLINK paramiko.sftp_handle.CMD_READLINK paramiko.sftp_server.CMD_READLINK -paramiko.sftp_si.CMD_READLINK" class="py-name" href="#" onclick="return doclink('link-103', 'CMD_READLINK', 'link-103');">CMD_READLINK</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-104" class="py-name"><a title="paramiko.sftp.CMD_NAME +paramiko.sftp_si.CMD_READLINK" class="py-name" href="#" onclick="return doclink('link-106', 'CMD_READLINK', 'link-106');">CMD_READLINK</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-107" class="py-name"><a title="paramiko.sftp.CMD_NAME paramiko.sftp_attr.CMD_NAME paramiko.sftp_client.CMD_NAME paramiko.sftp_file.CMD_NAME paramiko.sftp_handle.CMD_NAME paramiko.sftp_server.CMD_NAME -paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-104', 'CMD_NAME', 'link-41');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> -<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-105" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-105', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> -<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-106', 'get_int', 'link-43');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-107" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-107', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Readlink returned %d results'</tt> <tt class="py-op">%</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt> -<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-108', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.normalize"></a><div id="SFTPClient.normalize-def"><a name="L471"></a><tt class="py-lineno">471</tt> <a class="py-toggle" href="#" id="SFTPClient.normalize-toggle" onclick="return toggle('SFTPClient.normalize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#normalize">normalize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.normalize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.normalize-expanded"><a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"><tt class="py-docstring"> Return the normalized path (on the server) of a given path. This</tt> </tt> -<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"><tt class="py-docstring"> can be used to quickly resolve symbolic links or determine what the</tt> </tt> -<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"><tt class="py-docstring"> server is considering to be the "current folder" (by passing C{'.'}</tt> </tt> -<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"><tt class="py-docstring"> as C{path}).</tt> </tt> -<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to be normalized</tt> </tt> -<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> @return: normalized form of the given path</tt> </tt> -<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the path can't be resolved on the server</tt> </tt> -<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-109" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-107', 'CMD_NAME', 'link-44');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> +<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-108" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-108', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> +<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-109', 'get_int', 'link-46');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-110" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-110', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Readlink returned %d results'</tt> <tt class="py-op">%</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt> +<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-111', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.normalize"></a><div id="SFTPClient.normalize-def"><a name="L476"></a><tt class="py-lineno">476</tt> <a class="py-toggle" href="#" id="SFTPClient.normalize-toggle" onclick="return toggle('SFTPClient.normalize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#normalize">normalize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.normalize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.normalize-expanded"><a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"><tt class="py-docstring"> Return the normalized path (on the server) of a given path. This</tt> </tt> +<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"><tt class="py-docstring"> can be used to quickly resolve symbolic links or determine what the</tt> </tt> +<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> server is considering to be the "current folder" (by passing C{'.'}</tt> </tt> +<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"><tt class="py-docstring"> as C{path}).</tt> </tt> +<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-docstring"> @param path: path to be normalized</tt> </tt> +<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"><tt class="py-docstring"> @return: normalized form of the given path</tt> </tt> +<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the path can't be resolved on the server</tt> </tt> +<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_adjust_cwd</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1156,101 +1169,116 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-109', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'normalize(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-110" class="py-name" targets="Variable paramiko.sftp.CMD_REALPATH=paramiko.sftp-module.html#CMD_REALPATH,Variable paramiko.sftp_attr.CMD_REALPATH=paramiko.sftp_attr-module.html#CMD_REALPATH,Variable paramiko.sftp_client.CMD_REALPATH=paramiko.sftp_client-module.html#CMD_REALPATH,Variable paramiko.sftp_file.CMD_REALPATH=paramiko.sftp_file-module.html#CMD_REALPATH,Variable paramiko.sftp_handle.CMD_REALPATH=paramiko.sftp_handle-module.html#CMD_REALPATH,Variable paramiko.sftp_server.CMD_REALPATH=paramiko.sftp_server-module.html#CMD_REALPATH,Variable paramiko.sftp_si.CMD_REALPATH=paramiko.sftp_si-module.html#CMD_REALPATH"><a title="paramiko.sftp.CMD_REALPATH +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-112', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'normalize(%r)'</tt> <tt class="py-op">%</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">(</tt><tt id="link-113" class="py-name" targets="Variable paramiko.sftp.CMD_REALPATH=paramiko.sftp-module.html#CMD_REALPATH,Variable paramiko.sftp_attr.CMD_REALPATH=paramiko.sftp_attr-module.html#CMD_REALPATH,Variable paramiko.sftp_client.CMD_REALPATH=paramiko.sftp_client-module.html#CMD_REALPATH,Variable paramiko.sftp_file.CMD_REALPATH=paramiko.sftp_file-module.html#CMD_REALPATH,Variable paramiko.sftp_handle.CMD_REALPATH=paramiko.sftp_handle-module.html#CMD_REALPATH,Variable paramiko.sftp_server.CMD_REALPATH=paramiko.sftp_server-module.html#CMD_REALPATH,Variable paramiko.sftp_si.CMD_REALPATH=paramiko.sftp_si-module.html#CMD_REALPATH"><a title="paramiko.sftp.CMD_REALPATH paramiko.sftp_attr.CMD_REALPATH paramiko.sftp_client.CMD_REALPATH paramiko.sftp_file.CMD_REALPATH paramiko.sftp_handle.CMD_REALPATH paramiko.sftp_server.CMD_REALPATH -paramiko.sftp_si.CMD_REALPATH" class="py-name" href="#" onclick="return doclink('link-110', 'CMD_REALPATH', 'link-110');">CMD_REALPATH</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-111" class="py-name"><a title="paramiko.sftp.CMD_NAME +paramiko.sftp_si.CMD_REALPATH" class="py-name" href="#" onclick="return doclink('link-113', 'CMD_REALPATH', 'link-113');">CMD_REALPATH</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">!=</tt> <tt id="link-114" class="py-name"><a title="paramiko.sftp.CMD_NAME paramiko.sftp_attr.CMD_NAME paramiko.sftp_client.CMD_NAME paramiko.sftp_file.CMD_NAME paramiko.sftp_handle.CMD_NAME paramiko.sftp_server.CMD_NAME -paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-111', 'CMD_NAME', 'link-41');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> -<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-112" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-112', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> -<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-113', 'get_int', 'link-43');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-114" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-114', 'SFTPError', 'link-38');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Realpath returned %d results'</tt> <tt class="py-op">%</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt> -<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-115', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.chdir"></a><div id="SFTPClient.chdir-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="SFTPClient.chdir-toggle" onclick="return toggle('SFTPClient.chdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chdir">chdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.chdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chdir-expanded"><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-docstring"> Change the "current directory" of this SFTP session. Since SFTP</tt> </tt> -<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"><tt class="py-docstring"> doesn't really have the concept of a current working directory, this</tt> </tt> -<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"><tt class="py-docstring"> is emulated by paramiko. Once you use this method to set a working</tt> </tt> -<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"><tt class="py-docstring"> directory, all operations on this SFTPClient object will be relative</tt> </tt> -<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"><tt class="py-docstring"> to that path.</tt> </tt> -<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> @param path: new current working directory</tt> </tt> -<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> -<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the requested path doesn't exist on the server</tt> </tt> -<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method paramiko.SFTPClient.normalize()=paramiko.SFTPClient-class.html#normalize"><a title="paramiko.SFTPClient.normalize" class="py-name" href="#" onclick="return doclink('link-116', 'normalize', 'link-116');">normalize</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -</div><a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.getcwd"></a><div id="SFTPClient.getcwd-def"><a name="L512"></a><tt class="py-lineno">512</tt> <a class="py-toggle" href="#" id="SFTPClient.getcwd-toggle" onclick="return toggle('SFTPClient.getcwd');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#getcwd">getcwd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.getcwd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.getcwd-expanded"><a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> Return the "current working directory" for this SFTP session, as</tt> </tt> -<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> emulated by paramiko. If no directory has been set with L{chdir},</tt> </tt> -<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> this method will return C{None}.</tt> </tt> -<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"><tt class="py-docstring"> @return: the current working directory on the server, or C{None}</tt> </tt> -<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> </tt> -</div><a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.put"></a><div id="SFTPClient.put-def"><a name="L525"></a><tt class="py-lineno">525</tt> <a class="py-toggle" href="#" id="SFTPClient.put-toggle" onclick="return toggle('SFTPClient.put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">localpath</tt><tt class="py-op">,</tt> <tt class="py-param">remotepath</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.put-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.put-expanded"><a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> Copy a local file (C{localpath}) to the SFTP server as C{remotepath}.</tt> </tt> -<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"> Any exception raised by operations will be passed through. This</tt> </tt> -<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"> method is primarily provided as a convenience.</tt> </tt> -<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"><tt class="py-docstring"> The SFTP operations use pipelining for speed.</tt> </tt> -<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"><tt class="py-docstring"> @param localpath: the local file to copy</tt> </tt> -<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"><tt class="py-docstring"> @type localpath: str</tt> </tt> -<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"><tt class="py-docstring"> @param remotepath: the destination path on the SFTP server</tt> </tt> -<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"><tt class="py-docstring"> @type remotepath: str</tt> </tt> -<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"><tt class="py-docstring"> @param callback: optional callback function that accepts the bytes</tt> </tt> -<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"> transferred so far and the total bytes to be transferred</tt> </tt> -<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> -<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"><tt class="py-docstring"> @type callback: function(int, int)</tt> </tt> -<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> -<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> -<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> -<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">file_size</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method paramiko.SFTPClient.stat()=paramiko.SFTPClient-class.html#stat,Method paramiko.SFTPFile.stat()=paramiko.SFTPFile-class.html#stat,Method paramiko.SFTPHandle.stat()=paramiko.SFTPHandle-class.html#stat,Method paramiko.SFTPServerInterface.stat()=paramiko.SFTPServerInterface-class.html#stat"><a title="paramiko.SFTPClient.stat +paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-114', 'CMD_NAME', 'link-44');">CMD_NAME</a></tt><tt class="py-op">:</tt> </tt> +<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-115" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-115', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected name response'</tt><tt class="py-op">)</tt> </tt> +<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-116', 'get_int', 'link-46');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-117" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-117', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Realpath returned %d results'</tt> <tt class="py-op">%</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt> +<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_to_unicode</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-118', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.chdir"></a><div id="SFTPClient.chdir-def"><a name="L500"></a><tt class="py-lineno">500</tt> <a class="py-toggle" href="#" id="SFTPClient.chdir-toggle" onclick="return toggle('SFTPClient.chdir');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#chdir">chdir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.chdir-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.chdir-expanded"><a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"> Change the "current directory" of this SFTP session. Since SFTP</tt> </tt> +<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> doesn't really have the concept of a current working directory, this</tt> </tt> +<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-docstring"> is emulated by paramiko. Once you use this method to set a working</tt> </tt> +<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"> directory, all operations on this SFTPClient object will be relative</tt> </tt> +<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-docstring"> to that path. You can pass in C{None} to stop using a current working</tt> </tt> +<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"><tt class="py-docstring"> directory.</tt> </tt> +<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"> @param path: new current working directory</tt> </tt> +<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"> @type path: str</tt> </tt> +<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> @raise IOError: if the requested path doesn't exist on the server</tt> </tt> +<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">path</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-119" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-117', 'stat', 'link-117');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> </tt> -<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-name">fl</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="paramiko.SFTPClient.file -paramiko.file" class="py-name" href="#" onclick="return doclink('link-118', 'file', 'link-64');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt> -<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">fr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="paramiko.SFTPClient.file -paramiko.file" class="py-name" href="#" onclick="return doclink('link-119', 'file', 'link-64');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt> -<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method paramiko.SFTPFile.set_pipelined()=paramiko.SFTPFile-class.html#set_pipelined"><a title="paramiko.SFTPFile.set_pipelined" class="py-name" href="#" onclick="return doclink('link-120', 'set_pipelined', 'link-120');">set_pipelined</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-119', 'stat', 'link-0');">stat</a></tt><tt class="py-op">.</tt><tt class="py-name">S_ISDIR</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.SFTPFile.stat +paramiko.SFTPHandle.stat +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-120', 'stat', 'link-0');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-121" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-121', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOTDIR</tt><tt class="py-op">,</tt> <tt class="py-string">"%s: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOTDIR</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method paramiko.SFTPClient.normalize()=paramiko.SFTPClient-class.html#normalize"><a title="paramiko.SFTPClient.normalize" class="py-name" href="#" onclick="return doclink('link-122', 'normalize', 'link-122');">normalize</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-123', 'encode', 'link-12');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> +</div><a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.getcwd"></a><div id="SFTPClient.getcwd-def"><a name="L523"></a><tt class="py-lineno">523</tt> <a class="py-toggle" href="#" id="SFTPClient.getcwd-toggle" onclick="return toggle('SFTPClient.getcwd');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#getcwd">getcwd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.getcwd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.getcwd-expanded"><a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"> Return the "current working directory" for this SFTP session, as</tt> </tt> +<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> emulated by paramiko. If no directory has been set with L{chdir},</tt> </tt> +<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> this method will return C{None}.</tt> </tt> +<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"> @return: the current working directory on the server, or C{None}</tt> </tt> +<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> </tt> +</div><a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.put"></a><div id="SFTPClient.put-def"><a name="L536"></a><tt class="py-lineno">536</tt> <a class="py-toggle" href="#" id="SFTPClient.put-toggle" onclick="return toggle('SFTPClient.put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">localpath</tt><tt class="py-op">,</tt> <tt class="py-param">remotepath</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.put-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.put-expanded"><a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"> Copy a local file (C{localpath}) to the SFTP server as C{remotepath}.</tt> </tt> +<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"><tt class="py-docstring"> Any exception raised by operations will be passed through. This</tt> </tt> +<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"><tt class="py-docstring"> method is primarily provided as a convenience.</tt> </tt> +<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> The SFTP operations use pipelining for speed.</tt> </tt> +<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> @param localpath: the local file to copy</tt> </tt> +<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> @type localpath: str</tt> </tt> +<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> @param remotepath: the destination path on the SFTP server</tt> </tt> +<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"><tt class="py-docstring"> @type remotepath: str</tt> </tt> +<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"><tt class="py-docstring"> @param callback: optional callback function that accepts the bytes</tt> </tt> +<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"><tt class="py-docstring"> transferred so far and the total bytes to be transferred</tt> </tt> +<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> +<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"><tt class="py-docstring"> @type callback: function(int, int)</tt> </tt> +<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object containing attributes about the given file</tt> </tt> +<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> +<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: SFTPAttributes</tt> </tt> +<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-name">file_size</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.SFTPFile.stat +paramiko.SFTPHandle.stat +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-124', 'stat', 'link-0');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> </tt> +<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">fl</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="paramiko.SFTPClient.file +paramiko.file" class="py-name" href="#" onclick="return doclink('link-125', 'file', 'link-67');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt> +<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">fr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="paramiko.SFTPClient.file +paramiko.file" class="py-name" href="#" onclick="return doclink('link-126', 'file', 'link-67');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt> +<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method paramiko.SFTPFile.set_pipelined()=paramiko.SFTPFile-class.html#set_pipelined"><a title="paramiko.SFTPFile.set_pipelined" class="py-name" href="#" onclick="return doclink('link-127', 'set_pipelined', 'link-127');">set_pipelined</a></tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-121', 'read', 'link-121');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">32768</tt><tt class="py-op">)</tt> </tt> -<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-122', 'write', 'link-122');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">,</tt> <tt class="py-name">file_size</tt><tt class="py-op">)</tt> </tt> -<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.Agent.close +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-128', 'read', 'link-128');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">32768</tt><tt class="py-op">)</tt> </tt> +<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-129', 'write', 'link-129');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">,</tt> <tt class="py-name">file_size</tt><tt class="py-op">)</tt> </tt> +<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1261,8 +1289,9 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-123', 'close', 'link-33');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="paramiko.Agent.close +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-130', 'close', 'link-36');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1273,54 +1302,57 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-124', 'close', 'link-33');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-131', 'close', 'link-36');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-125', 'stat', 'link-117');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">)</tt> </tt> -<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> -<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'size mismatch in put! %d != %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> -</div><a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> </tt> -<a name="SFTPClient.get"></a><div id="SFTPClient.get-def"><a name="L567"></a><tt class="py-lineno">567</tt> <a class="py-toggle" href="#" id="SFTPClient.get-toggle" onclick="return toggle('SFTPClient.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">remotepath</tt><tt class="py-op">,</tt> <tt class="py-param">localpath</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient.get-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.get-expanded"><a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"><tt class="py-docstring"> Copy a remote file (C{remotepath}) from the SFTP server to the local</tt> </tt> -<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"><tt class="py-docstring"> host as C{localpath}. Any exception raised by operations will be</tt> </tt> -<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"><tt class="py-docstring"> passed through. This method is primarily provided as a convenience.</tt> </tt> -<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"><tt class="py-docstring"> @param remotepath: the remote file to copy</tt> </tt> -<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"><tt class="py-docstring"> @type remotepath: str</tt> </tt> -<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"><tt class="py-docstring"> @param localpath: the destination path on the local host</tt> </tt> -<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"><tt class="py-docstring"> @type localpath: str</tt> </tt> -<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"><tt class="py-docstring"> @param callback: optional callback function that accepts the bytes</tt> </tt> -<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"><tt class="py-docstring"> transferred so far and the total bytes to be transferred</tt> </tt> -<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> -<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"><tt class="py-docstring"> @type callback: function(int, int)</tt> </tt> -<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-name">fr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="paramiko.SFTPClient.file -paramiko.file" class="py-name" href="#" onclick="return doclink('link-126', 'file', 'link-64');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt> -<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-name">file_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-132', 'stat', 'link-0');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">)</tt> </tt> +<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> +<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'size mismatch in put! %d != %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> +</div><a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> </tt> +<a name="SFTPClient.get"></a><div id="SFTPClient.get-def"><a name="L582"></a><tt class="py-lineno">582</tt> <a class="py-toggle" href="#" id="SFTPClient.get-toggle" onclick="return toggle('SFTPClient.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">remotepath</tt><tt class="py-op">,</tt> <tt class="py-param">localpath</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient.get-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient.get-expanded"><a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"><tt class="py-docstring"> Copy a remote file (C{remotepath}) from the SFTP server to the local</tt> </tt> +<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"><tt class="py-docstring"> host as C{localpath}. Any exception raised by operations will be</tt> </tt> +<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"><tt class="py-docstring"> passed through. This method is primarily provided as a convenience.</tt> </tt> +<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"><tt class="py-docstring"> @param remotepath: the remote file to copy</tt> </tt> +<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"><tt class="py-docstring"> @type remotepath: str</tt> </tt> +<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"><tt class="py-docstring"> @param localpath: the destination path on the local host</tt> </tt> +<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"><tt class="py-docstring"> @type localpath: str</tt> </tt> +<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"><tt class="py-docstring"> @param callback: optional callback function that accepts the bytes</tt> </tt> +<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"><tt class="py-docstring"> transferred so far and the total bytes to be transferred</tt> </tt> +<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"> (since 1.7.4)</tt> </tt> +<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> @type callback: function(int, int)</tt> </tt> +<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">fr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="paramiko.SFTPClient.file +paramiko.file" class="py-name" href="#" onclick="return doclink('link-133', 'file', 'link-67');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt> +<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-name">file_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-127', 'stat', 'link-117');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> </tt> -<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method paramiko.SFTPFile.prefetch()=paramiko.SFTPFile-class.html#prefetch"><a title="paramiko.SFTPFile.prefetch" class="py-name" href="#" onclick="return doclink('link-128', 'prefetch', 'link-128');">prefetch</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">fl</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="paramiko.SFTPClient.file -paramiko.file" class="py-name" href="#" onclick="return doclink('link-129', 'file', 'link-64');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt> -<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.BufferedFile.read +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-134', 'stat', 'link-0');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">remotepath</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> </tt> +<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method paramiko.SFTPFile.prefetch()=paramiko.SFTPFile-class.html#prefetch"><a title="paramiko.SFTPFile.prefetch" class="py-name" href="#" onclick="return doclink('link-135', 'prefetch', 'link-135');">prefetch</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-name">fl</tt> <tt class="py-op">=</tt> <tt id="link-136" class="py-name"><a title="paramiko.SFTPClient.file +paramiko.file" class="py-name" href="#" onclick="return doclink('link-136', 'file', 'link-67');">file</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt> +<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-130', 'read', 'link-121');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">32768</tt><tt class="py-op">)</tt> </tt> -<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-131', 'write', 'link-122');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">,</tt> <tt class="py-name">file_size</tt><tt class="py-op">)</tt> </tt> -<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.Agent.close +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-137', 'read', 'link-128');">read</a></tt><tt class="py-op">(</tt><tt class="py-number">32768</tt><tt class="py-op">)</tt> </tt> +<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-138', 'write', 'link-129');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">,</tt> <tt class="py-name">file_size</tt><tt class="py-op">)</tt> </tt> +<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-name">fl</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1331,8 +1363,9 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-132', 'close', 'link-33');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="paramiko.Agent.close +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-139', 'close', 'link-36');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-name">fr</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1343,58 +1376,58 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-133', 'close', 'link-33');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-140', 'close', 'link-36');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-134', 'stat', 'link-117');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">)</tt> </tt> -<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> -<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'size mismatch in get! %d != %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> </tt> -<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> </tt> -<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._request"></a><div id="SFTPClient._request-def"><a name="L607"></a><tt class="py-lineno">607</tt> <a class="py-toggle" href="#" id="SFTPClient._request-toggle" onclick="return toggle('SFTPClient._request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_request">_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">arg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._request-expanded"><a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt> -<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_response</tt><tt class="py-op">(</tt><tt class="py-name">num</tt><tt class="py-op">)</tt> </tt> -</div><a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._async_request"></a><div id="SFTPClient._async_request-def"><a name="L611"></a><tt class="py-lineno">611</tt> <a class="py-toggle" href="#" id="SFTPClient._async_request-toggle" onclick="return toggle('SFTPClient._async_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_async_request">_async_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileobj</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">arg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._async_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._async_request-expanded"><a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-comment"># this method may be called from other threads (prefetch)</tt> </tt> -<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name" targets="Class paramiko.Message=paramiko.Message-class.html"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-135', 'Message', 'link-135');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-136', 'add_int', 'link-136');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt><tt class="py-op">)</tt> </tt> -<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">arg</tt><tt class="py-op">:</tt> </tt> -<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">int</tt><tt class="py-op">:</tt> </tt> -<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-137', 'add_int', 'link-136');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">long</tt><tt class="py-op">:</tt> </tt> -<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name" targets="Method paramiko.Message.add_int64()=paramiko.Message-class.html#add_int64"><a title="paramiko.Message.add_int64" class="py-name" href="#" onclick="return doclink('link-138', 'add_int64', 'link-138');">add_int64</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> -<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-139', 'add_string', 'link-139');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-140" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-140', 'SFTPAttributes', 'link-4');">SFTPAttributes</a></tt><tt class="py-op">:</tt> </tt> -<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">_pack</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">'unknown type for %r type %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> </tt> -<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fileobj</tt> </tt> -<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_packet</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">num</tt> </tt> -</div><a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._read_response"></a><div id="SFTPClient._read_response-def"><a name="L636"></a><tt class="py-lineno">636</tt> <a class="py-toggle" href="#" id="SFTPClient._read_response-toggle" onclick="return toggle('SFTPClient._read_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_read_response">_read_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">waitfor</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._read_response-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._read_response-expanded"><a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-141" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-141', 'SSHException', 'link-7');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server connection dropped: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-142" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-142', 'Message', 'link-135');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-143', 'get_int', 'link-43');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">num</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">:</tt> </tt> -<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-comment"># might be response for a file that was closed before responses came back</tt> </tt> -<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-144" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-141', 'stat', 'link-0');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">localpath</tt><tt class="py-op">)</tt> </tt> +<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> <tt class="py-op">!=</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> +<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-string">'size mismatch in get! %d != %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt> +<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> </tt> +<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> +<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> </tt> +<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._request"></a><div id="SFTPClient._request-def"><a name="L626"></a><tt class="py-lineno">626</tt> <a class="py-toggle" href="#" id="SFTPClient._request-toggle" onclick="return toggle('SFTPClient._request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_request">_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">arg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._request-expanded"><a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt> +<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_response</tt><tt class="py-op">(</tt><tt class="py-name">num</tt><tt class="py-op">)</tt> </tt> +</div><a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._async_request"></a><div id="SFTPClient._async_request-def"><a name="L630"></a><tt class="py-lineno">630</tt> <a class="py-toggle" href="#" id="SFTPClient._async_request-toggle" onclick="return toggle('SFTPClient._async_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_async_request">_async_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileobj</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">arg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._async_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._async_request-expanded"><a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-comment"># this method may be called from other threads (prefetch)</tt> </tt> +<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-142" class="py-name" targets="Class paramiko.Message=paramiko.Message-class.html"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-142', 'Message', 'link-142');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-143', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt><tt class="py-op">)</tt> </tt> +<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">arg</tt><tt class="py-op">:</tt> </tt> +<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">int</tt><tt class="py-op">:</tt> </tt> +<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-144', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> +<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">long</tt><tt class="py-op">:</tt> </tt> +<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method paramiko.Message.add_int64()=paramiko.Message-class.html#add_int64"><a title="paramiko.Message.add_int64" class="py-name" href="#" onclick="return doclink('link-145', 'add_int64', 'link-145');">add_int64</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> +<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> +<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-146', 'add_string', 'link-146');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> +<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt id="link-147" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-147', 'SFTPAttributes', 'link-5');">SFTPAttributes</a></tt><tt class="py-op">:</tt> </tt> +<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">_pack</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">'unknown type for %r type %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> </tt> +<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fileobj</tt> </tt> +<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_packet</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">request_number</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> +<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">num</tt> </tt> +</div><a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._read_response"></a><div id="SFTPClient._read_response-def"><a name="L655"></a><tt class="py-lineno">655</tt> <a class="py-toggle" href="#" id="SFTPClient._read_response-toggle" onclick="return toggle('SFTPClient._read_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_read_response">_read_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">waitfor</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._read_response-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._read_response-expanded"><a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-148" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-148', 'SSHException', 'link-8');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Server connection dropped: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-149', 'Message', 'link-142');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> <tt class="py-name">num</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-150', 'get_int', 'link-46');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">num</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">:</tt> </tt> +<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-comment"># might be response for a file that was closed before responses came back</tt> </tt> +<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-151" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1415,100 +1448,100 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-144', 'DEBUG', 'link-35');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unexpected response #%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">num</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">waitfor</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-comment"># just doing a single check</tt> </tt> -<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">break</tt> </tt> -<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> </tt> -<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> </tt> -<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">num</tt> <tt class="py-op">==</tt> <tt class="py-name">waitfor</tt><tt class="py-op">:</tt> </tt> -<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-comment"># synchronous</tt> </tt> -<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-145" class="py-name" targets="Variable paramiko.sftp.CMD_STATUS=paramiko.sftp-module.html#CMD_STATUS,Variable paramiko.sftp_attr.CMD_STATUS=paramiko.sftp_attr-module.html#CMD_STATUS,Variable paramiko.sftp_client.CMD_STATUS=paramiko.sftp_client-module.html#CMD_STATUS,Variable paramiko.sftp_file.CMD_STATUS=paramiko.sftp_file-module.html#CMD_STATUS,Variable paramiko.sftp_handle.CMD_STATUS=paramiko.sftp_handle-module.html#CMD_STATUS,Variable paramiko.sftp_server.CMD_STATUS=paramiko.sftp_server-module.html#CMD_STATUS,Variable paramiko.sftp_si.CMD_STATUS=paramiko.sftp_si-module.html#CMD_STATUS"><a title="paramiko.sftp.CMD_STATUS +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-151', 'DEBUG', 'link-38');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unexpected response #%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">num</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">waitfor</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-comment"># just doing a single check</tt> </tt> +<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> </tt> +<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">[</tt><tt class="py-name">num</tt><tt class="py-op">]</tt> </tt> +<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">num</tt> <tt class="py-op">==</tt> <tt class="py-name">waitfor</tt><tt class="py-op">:</tt> </tt> +<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-comment"># synchronous</tt> </tt> +<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-152" class="py-name" targets="Variable paramiko.sftp.CMD_STATUS=paramiko.sftp-module.html#CMD_STATUS,Variable paramiko.sftp_attr.CMD_STATUS=paramiko.sftp_attr-module.html#CMD_STATUS,Variable paramiko.sftp_client.CMD_STATUS=paramiko.sftp_client-module.html#CMD_STATUS,Variable paramiko.sftp_file.CMD_STATUS=paramiko.sftp_file-module.html#CMD_STATUS,Variable paramiko.sftp_handle.CMD_STATUS=paramiko.sftp_handle-module.html#CMD_STATUS,Variable paramiko.sftp_server.CMD_STATUS=paramiko.sftp_server-module.html#CMD_STATUS,Variable paramiko.sftp_si.CMD_STATUS=paramiko.sftp_si-module.html#CMD_STATUS"><a title="paramiko.sftp.CMD_STATUS paramiko.sftp_attr.CMD_STATUS paramiko.sftp_client.CMD_STATUS paramiko.sftp_file.CMD_STATUS paramiko.sftp_handle.CMD_STATUS paramiko.sftp_server.CMD_STATUS -paramiko.sftp_si.CMD_STATUS" class="py-name" href="#" onclick="return doclink('link-145', 'CMD_STATUS', 'link-145');">CMD_STATUS</a></tt><tt class="py-op">:</tt> </tt> -<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_convert_status</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> </tt> -<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fileobj</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt><tt class="py-op">.</tt><tt class="py-name">_async_response</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">waitfor</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-comment"># just doing a single check</tt> </tt> -<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">break</tt> </tt> -<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -</div><a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._finish_responses"></a><div id="SFTPClient._finish_responses-def"><a name="L665"></a><tt class="py-lineno">665</tt> <a class="py-toggle" href="#" id="SFTPClient._finish_responses-toggle" onclick="return toggle('SFTPClient._finish_responses');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_finish_responses">_finish_responses</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileobj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._finish_responses-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._finish_responses-expanded"><a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">fileobj</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values -paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-146', 'values', 'link-146');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_response</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt><tt class="py-op">.</tt><tt class="py-name">_check_exception</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._convert_status"></a><div id="SFTPClient._convert_status-def"><a name="L670"></a><tt class="py-lineno">670</tt> <a class="py-toggle" href="#" id="SFTPClient._convert_status-toggle" onclick="return toggle('SFTPClient._convert_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_convert_status">_convert_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._convert_status-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._convert_status-expanded"><a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"><tt class="py-docstring"> Raises EOFError or IOError on error status; otherwise does nothing.</tt> </tt> -<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-147', 'get_int', 'link-43');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-148', 'get_string', 'link-39');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-149" class="py-name" targets="Variable paramiko.sftp.SFTP_OK=paramiko.sftp-module.html#SFTP_OK,Variable paramiko.sftp_attr.SFTP_OK=paramiko.sftp_attr-module.html#SFTP_OK,Variable paramiko.sftp_client.SFTP_OK=paramiko.sftp_client-module.html#SFTP_OK,Variable paramiko.sftp_file.SFTP_OK=paramiko.sftp_file-module.html#SFTP_OK,Variable paramiko.sftp_handle.SFTP_OK=paramiko.sftp_handle-module.html#SFTP_OK,Variable paramiko.sftp_server.SFTP_OK=paramiko.sftp_server-module.html#SFTP_OK,Variable paramiko.sftp_si.SFTP_OK=paramiko.sftp_si-module.html#SFTP_OK"><a title="paramiko.sftp.SFTP_OK +paramiko.sftp_si.CMD_STATUS" class="py-name" href="#" onclick="return doclink('link-152', 'CMD_STATUS', 'link-152');">CMD_STATUS</a></tt><tt class="py-op">:</tt> </tt> +<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_convert_status</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt> </tt> +<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">fileobj</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt><tt class="py-op">.</tt><tt class="py-name">_async_response</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">waitfor</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-comment"># just doing a single check</tt> </tt> +<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +</div><a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._finish_responses"></a><div id="SFTPClient._finish_responses-def"><a name="L684"></a><tt class="py-lineno">684</tt> <a class="py-toggle" href="#" id="SFTPClient._finish_responses-toggle" onclick="return toggle('SFTPClient._finish_responses');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_finish_responses">_finish_responses</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileobj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._finish_responses-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._finish_responses-expanded"><a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">fileobj</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expecting</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values +paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-153', 'values', 'link-153');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_response</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> <tt class="py-name">fileobj</tt><tt class="py-op">.</tt><tt class="py-name">_check_exception</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._convert_status"></a><div id="SFTPClient._convert_status-def"><a name="L689"></a><tt class="py-lineno">689</tt> <a class="py-toggle" href="#" id="SFTPClient._convert_status-toggle" onclick="return toggle('SFTPClient._convert_status');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_convert_status">_convert_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._convert_status-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._convert_status-expanded"><a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"><tt class="py-docstring"> Raises EOFError or IOError on error status; otherwise does nothing.</tt> </tt> +<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-154', 'get_int', 'link-46');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-155', 'get_string', 'link-42');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-156" class="py-name" targets="Variable paramiko.sftp.SFTP_OK=paramiko.sftp-module.html#SFTP_OK,Variable paramiko.sftp_attr.SFTP_OK=paramiko.sftp_attr-module.html#SFTP_OK,Variable paramiko.sftp_client.SFTP_OK=paramiko.sftp_client-module.html#SFTP_OK,Variable paramiko.sftp_file.SFTP_OK=paramiko.sftp_file-module.html#SFTP_OK,Variable paramiko.sftp_handle.SFTP_OK=paramiko.sftp_handle-module.html#SFTP_OK,Variable paramiko.sftp_server.SFTP_OK=paramiko.sftp_server-module.html#SFTP_OK,Variable paramiko.sftp_si.SFTP_OK=paramiko.sftp_si-module.html#SFTP_OK"><a title="paramiko.sftp.SFTP_OK paramiko.sftp_attr.SFTP_OK paramiko.sftp_client.SFTP_OK paramiko.sftp_file.SFTP_OK paramiko.sftp_handle.SFTP_OK paramiko.sftp_server.SFTP_OK -paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-149', 'SFTP_OK', 'link-149');">SFTP_OK</a></tt><tt class="py-op">:</tt> </tt> -<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-150" class="py-name" targets="Variable paramiko.sftp.SFTP_EOF=paramiko.sftp-module.html#SFTP_EOF,Variable paramiko.sftp_attr.SFTP_EOF=paramiko.sftp_attr-module.html#SFTP_EOF,Variable paramiko.sftp_client.SFTP_EOF=paramiko.sftp_client-module.html#SFTP_EOF,Variable paramiko.sftp_file.SFTP_EOF=paramiko.sftp_file-module.html#SFTP_EOF,Variable paramiko.sftp_handle.SFTP_EOF=paramiko.sftp_handle-module.html#SFTP_EOF,Variable paramiko.sftp_server.SFTP_EOF=paramiko.sftp_server-module.html#SFTP_EOF,Variable paramiko.sftp_si.SFTP_EOF=paramiko.sftp_si-module.html#SFTP_EOF"><a title="paramiko.sftp.SFTP_EOF +paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-156', 'SFTP_OK', 'link-156');">SFTP_OK</a></tt><tt class="py-op">:</tt> </tt> +<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-157" class="py-name" targets="Variable paramiko.sftp.SFTP_EOF=paramiko.sftp-module.html#SFTP_EOF,Variable paramiko.sftp_attr.SFTP_EOF=paramiko.sftp_attr-module.html#SFTP_EOF,Variable paramiko.sftp_client.SFTP_EOF=paramiko.sftp_client-module.html#SFTP_EOF,Variable paramiko.sftp_file.SFTP_EOF=paramiko.sftp_file-module.html#SFTP_EOF,Variable paramiko.sftp_handle.SFTP_EOF=paramiko.sftp_handle-module.html#SFTP_EOF,Variable paramiko.sftp_server.SFTP_EOF=paramiko.sftp_server-module.html#SFTP_EOF,Variable paramiko.sftp_si.SFTP_EOF=paramiko.sftp_si-module.html#SFTP_EOF"><a title="paramiko.sftp.SFTP_EOF paramiko.sftp_attr.SFTP_EOF paramiko.sftp_client.SFTP_EOF paramiko.sftp_file.SFTP_EOF paramiko.sftp_handle.SFTP_EOF paramiko.sftp_server.SFTP_EOF -paramiko.sftp_si.SFTP_EOF" class="py-name" href="#" onclick="return doclink('link-150', 'SFTP_EOF', 'link-150');">SFTP_EOF</a></tt><tt class="py-op">:</tt> </tt> -<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">EOFError</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> -<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-151" class="py-name" targets="Variable paramiko.sftp.SFTP_NO_SUCH_FILE=paramiko.sftp-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_attr.SFTP_NO_SUCH_FILE=paramiko.sftp_attr-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_client.SFTP_NO_SUCH_FILE=paramiko.sftp_client-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_file.SFTP_NO_SUCH_FILE=paramiko.sftp_file-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_handle.SFTP_NO_SUCH_FILE=paramiko.sftp_handle-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_server.SFTP_NO_SUCH_FILE=paramiko.sftp_server-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_si.SFTP_NO_SUCH_FILE=paramiko.sftp_si-module.html#SFTP_NO_SUCH_FILE"><a title="paramiko.sftp.SFTP_NO_SUCH_FILE +paramiko.sftp_si.SFTP_EOF" class="py-name" href="#" onclick="return doclink('link-157', 'SFTP_EOF', 'link-157');">SFTP_EOF</a></tt><tt class="py-op">:</tt> </tt> +<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">EOFError</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> +<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-158" class="py-name" targets="Variable paramiko.sftp.SFTP_NO_SUCH_FILE=paramiko.sftp-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_attr.SFTP_NO_SUCH_FILE=paramiko.sftp_attr-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_client.SFTP_NO_SUCH_FILE=paramiko.sftp_client-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_file.SFTP_NO_SUCH_FILE=paramiko.sftp_file-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_handle.SFTP_NO_SUCH_FILE=paramiko.sftp_handle-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_server.SFTP_NO_SUCH_FILE=paramiko.sftp_server-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_si.SFTP_NO_SUCH_FILE=paramiko.sftp_si-module.html#SFTP_NO_SUCH_FILE"><a title="paramiko.sftp.SFTP_NO_SUCH_FILE paramiko.sftp_attr.SFTP_NO_SUCH_FILE paramiko.sftp_client.SFTP_NO_SUCH_FILE paramiko.sftp_file.SFTP_NO_SUCH_FILE paramiko.sftp_handle.SFTP_NO_SUCH_FILE paramiko.sftp_server.SFTP_NO_SUCH_FILE -paramiko.sftp_si.SFTP_NO_SUCH_FILE" class="py-name" href="#" onclick="return doclink('link-151', 'SFTP_NO_SUCH_FILE', 'link-151');">SFTP_NO_SUCH_FILE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-comment"># clever idea from john a. meinel: map the error codes to errno</tt> </tt> -<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOENT</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> -<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-152" class="py-name" targets="Variable paramiko.sftp.SFTP_PERMISSION_DENIED=paramiko.sftp-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_attr.SFTP_PERMISSION_DENIED=paramiko.sftp_attr-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_client.SFTP_PERMISSION_DENIED=paramiko.sftp_client-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_file.SFTP_PERMISSION_DENIED=paramiko.sftp_file-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_handle.SFTP_PERMISSION_DENIED=paramiko.sftp_handle-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_server.SFTP_PERMISSION_DENIED=paramiko.sftp_server-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_si.SFTP_PERMISSION_DENIED=paramiko.sftp_si-module.html#SFTP_PERMISSION_DENIED"><a title="paramiko.sftp.SFTP_PERMISSION_DENIED +paramiko.sftp_si.SFTP_NO_SUCH_FILE" class="py-name" href="#" onclick="return doclink('link-158', 'SFTP_NO_SUCH_FILE', 'link-158');">SFTP_NO_SUCH_FILE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-comment"># clever idea from john a. meinel: map the error codes to errno</tt> </tt> +<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOENT</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> +<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt id="link-159" class="py-name" targets="Variable paramiko.sftp.SFTP_PERMISSION_DENIED=paramiko.sftp-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_attr.SFTP_PERMISSION_DENIED=paramiko.sftp_attr-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_client.SFTP_PERMISSION_DENIED=paramiko.sftp_client-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_file.SFTP_PERMISSION_DENIED=paramiko.sftp_file-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_handle.SFTP_PERMISSION_DENIED=paramiko.sftp_handle-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_server.SFTP_PERMISSION_DENIED=paramiko.sftp_server-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_si.SFTP_PERMISSION_DENIED=paramiko.sftp_si-module.html#SFTP_PERMISSION_DENIED"><a title="paramiko.sftp.SFTP_PERMISSION_DENIED paramiko.sftp_attr.SFTP_PERMISSION_DENIED paramiko.sftp_client.SFTP_PERMISSION_DENIED paramiko.sftp_file.SFTP_PERMISSION_DENIED paramiko.sftp_handle.SFTP_PERMISSION_DENIED paramiko.sftp_server.SFTP_PERMISSION_DENIED -paramiko.sftp_si.SFTP_PERMISSION_DENIED" class="py-name" href="#" onclick="return doclink('link-152', 'SFTP_PERMISSION_DENIED', 'link-152');">SFTP_PERMISSION_DENIED</a></tt><tt class="py-op">:</tt> </tt> -<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> -<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> -</div><a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> </tt> -<a name="SFTPClient._adjust_cwd"></a><div id="SFTPClient._adjust_cwd-def"><a name="L688"></a><tt class="py-lineno">688</tt> <a class="py-toggle" href="#" id="SFTPClient._adjust_cwd-toggle" onclick="return toggle('SFTPClient._adjust_cwd');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_adjust_cwd">_adjust_cwd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPClient._adjust_cwd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._adjust_cwd-expanded"><a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"><tt class="py-docstring"> Return an adjusted path if we're emulating a "current working</tt> </tt> -<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"><tt class="py-docstring"> directory" for the server.</tt> </tt> -<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt> -<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">path</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-153', 'encode', 'link-11');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> -<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt> </tt> -<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-comment"># absolute path</tt> </tt> -<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt> </tt> -<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt> -<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">+</tt> <tt class="py-name">path</tt> </tt> -<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-name">path</tt> </tt> -</div></div><a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> </tt> -<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> </tt> -<a name="SFTP"></a><div id="SFTP-def"><a name="L705"></a><tt class="py-lineno">705</tt> <a class="py-toggle" href="#" id="SFTP-toggle" onclick="return toggle('SFTP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTP-class.html">SFTP</a> <tt class="py-op">(</tt><tt class="py-base-class">SFTPClient</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTP-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SFTP-expanded"><a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-docstring">"an alias for L{SFTPClient} for backwards compatability"</tt> </tt> -<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> </tt><script type="text/javascript"> +paramiko.sftp_si.SFTP_PERMISSION_DENIED" class="py-name" href="#" onclick="return doclink('link-159', 'SFTP_PERMISSION_DENIED', 'link-159');">SFTP_PERMISSION_DENIED</a></tt><tt class="py-op">:</tt> </tt> +<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> +<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">IOError</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> +</div><a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> </tt> +<a name="SFTPClient._adjust_cwd"></a><div id="SFTPClient._adjust_cwd-def"><a name="L707"></a><tt class="py-lineno">707</tt> <a class="py-toggle" href="#" id="SFTPClient._adjust_cwd-toggle" onclick="return toggle('SFTPClient._adjust_cwd');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTPClient-class.html#_adjust_cwd">_adjust_cwd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTPClient._adjust_cwd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPClient._adjust_cwd-expanded"><a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"><tt class="py-docstring"> Return an adjusted path if we're emulating a "current working</tt> </tt> +<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"><tt class="py-docstring"> directory" for the server.</tt> </tt> +<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">unicode</tt><tt class="py-op">:</tt> </tt> +<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">path</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="paramiko.ber.BER.encode" class="py-name" href="#" onclick="return doclink('link-160', 'encode', 'link-12');">encode</a></tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> +<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt> </tt> +<a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-comment"># absolute path</tt> </tt> +<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt> </tt> +<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt> +<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">+</tt> <tt class="py-name">path</tt> </tt> +<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cwd</tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-name">path</tt> </tt> +</div></div><a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> </tt> +<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"> </tt> +<a name="SFTP"></a><div id="SFTP-def"><a name="L724"></a><tt class="py-lineno">724</tt> <a class="py-toggle" href="#" id="SFTP-toggle" onclick="return toggle('SFTP');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.sftp_client.SFTP-class.html">SFTP</a> <tt class="py-op">(</tt><tt class="py-base-class">SFTPClient</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SFTP-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SFTP-expanded"><a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> <tt class="py-docstring">"an alias for L{SFTPClient} for backwards compatability"</tt> </tt> +<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +</div><a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -1541,7 +1574,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_file-module.html b/docs/paramiko.sftp_file-module.html index 664b692..5a8af5b 100644 --- a/docs/paramiko.sftp_file-module.html +++ b/docs/paramiko.sftp_file-module.html @@ -739,6 +739,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -878,7 +885,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_file-pysrc.html b/docs/paramiko.sftp_file-pysrc.html index 5e9b4c7..86f8884 100644 --- a/docs/paramiko.sftp_file-pysrc.html +++ b/docs/paramiko.sftp_file-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_file-module.html" onclick="show_private();">Module paramiko.sftp_file</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{SFTPFile}</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -94,11 +94,11 @@ paramiko.file" class="py-name" href="#" onclick="return doclink('link-5', 'file' <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt> <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-comment"># Some sftp servers will choke if you send read/write requests larger than</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># this size.</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-10" class="py-name" targets="Variable paramiko.SFTPFile.MAX_REQUEST_SIZE=paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-10', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">32768</tt> </tt> +<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-comment"># this size.</tt> </tt> +<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable paramiko.SFTPFile.MAX_REQUEST_SIZE=paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-10', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">32768</tt> </tt> <a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt> <a name="SFTPFile.__init__"></a><div id="SFTPFile.__init__-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="SFTPFile.__init__-toggle" onclick="return toggle('SFTPFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sftp</tt><tt class="py-op">,</tt> <tt class="py-param">handle</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">=</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-param">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPFile.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile.__init__-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="paramiko.BufferedFile" class="py-name" href="#" onclick="return doclink('link-11', 'BufferedFile', 'link-6');">BufferedFile</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +</div><div id="SFTPFile.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile.__init__-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="paramiko.BufferedFile" class="py-name" href="#" onclick="return doclink('link-11', 'BufferedFile', 'link-6');">BufferedFile</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -139,6 +139,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-12', '__init__', 'link-12');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-13', 'sftp', 'link-3');">sftp</a></tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-14', 'sftp', 'link-3');">sftp</a></tt> </tt> @@ -159,13 +160,13 @@ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclic </div><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> <a name="SFTPFile._close"></a><div id="SFTPFile._close-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="SFTPFile._close-toggle" onclick="return toggle('SFTPFile._close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_close">_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">async</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._close-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-comment"># We allow double-close without signaling an error, because real</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># Python file objects do. However, we must protect against actually</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># sending multiple CMD_CLOSE packets, because after we close our</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># handle, the same handle may be re-allocated by the server, and we</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># may end up mysteriously closing some random other file. (This is</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># especially important because we unconditionally call close() from</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># __del__.)</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-comment"># Python file objects do. However, we must protect against actually</tt> </tt> +<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-comment"># sending multiple CMD_CLOSE packets, because after we close our</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-comment"># handle, the same handle may be re-allocated by the server, and we</tt> </tt> +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-comment"># may end up mysteriously closing some random other file. (This is</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-comment"># especially important because we unconditionally call close() from</tt> </tt> +<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-comment"># __del__.)</tt> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_closed</tt><tt class="py-op">:</tt> </tt> <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-16', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-17" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG @@ -206,7 +207,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">async</tt><tt class="py-op">:</tt> </tt> <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-comment"># GC'd file handle could be called from an arbitrary thread -- don't wait for a response</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-21', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-22" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-21', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-22" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE paramiko.sftp_attr.CMD_CLOSE paramiko.sftp_client.CMD_CLOSE paramiko.sftp_file.CMD_CLOSE @@ -223,11 +224,11 @@ paramiko.sftp_server.CMD_CLOSE paramiko.sftp_si.CMD_CLOSE" class="py-name" href="#" onclick="return doclink('link-24', 'CMD_CLOSE', 'link-22');">CMD_CLOSE</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">:</tt> </tt> <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-comment"># may have outlived the Transport connection</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-25', 'error', 'link-25');">error</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-comment"># may have outlived the Transport connection</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> +<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> </div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> <a name="SFTPFile._data_in_prefetch_requests"></a><div id="SFTPFile._data_in_prefetch_requests-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="SFTPFile._data_in_prefetch_requests-toggle" onclick="return toggle('SFTPFile._data_in_prefetch_requests');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_data_in_prefetch_requests">_data_in_prefetch_requests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">offset</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._data_in_prefetch_requests-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._data_in_prefetch_requests-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">i</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prefetch_reads</tt> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op"><=</tt> <tt class="py-name">offset</tt><tt class="py-op">]</tt> </tt> @@ -237,12 +238,12 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">buf_offset</tt><tt class="py-op">,</tt> <tt class="py-name">buf_size</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf_offset</tt> <tt class="py-op">+</tt> <tt class="py-name">buf_size</tt> <tt class="py-op"><=</tt> <tt class="py-name">offset</tt><tt class="py-op">:</tt> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-comment"># prefetch request ends before this one begins</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf_offset</tt> <tt class="py-op">+</tt> <tt class="py-name">buf_size</tt> <tt class="py-op">>=</tt> <tt class="py-name">offset</tt> <tt class="py-op">+</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-comment"># inclusive</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># well, we have part of the request. see if another chunk has the rest.</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_requests</tt><tt class="py-op">(</tt><tt class="py-name">buf_offset</tt> <tt class="py-op">+</tt> <tt class="py-name">buf_size</tt><tt class="py-op">,</tt> <tt class="py-name">offset</tt> <tt class="py-op">+</tt> <tt class="py-name">size</tt> <tt class="py-op">-</tt> <tt class="py-name">buf_offset</tt> <tt class="py-op">-</tt> <tt class="py-name">buf_size</tt><tt class="py-op">)</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_requests</tt><tt class="py-op">(</tt><tt class="py-name">buf_offset</tt> <tt class="py-op">+</tt> <tt class="py-name">buf_size</tt><tt class="py-op">,</tt> <tt class="py-name">offset</tt> <tt class="py-op">+</tt> <tt class="py-name">size</tt> <tt class="py-op">-</tt> <tt class="py-name">buf_offset</tt> <tt class="py-op">-</tt> <tt class="py-name">buf_size</tt><tt class="py-op">)</tt> </tt> </div><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt> <a name="SFTPFile._data_in_prefetch_buffers"></a><div id="SFTPFile._data_in_prefetch_buffers-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="SFTPFile._data_in_prefetch_buffers-toggle" onclick="return toggle('SFTPFile._data_in_prefetch_buffers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_data_in_prefetch_buffers">_data_in_prefetch_buffers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">offset</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._data_in_prefetch_buffers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._data_in_prefetch_buffers-expanded"><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -258,7 +259,7 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">buf_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">offset</tt> <tt class="py-op">-</tt> <tt class="py-name">index</tt> </tt> <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf_offset</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_prefetch_data</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-comment"># it's not here</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> <a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">index</tt> </tt> </div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt> <a name="SFTPFile._read_prefetch"></a><div id="SFTPFile._read_prefetch-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="SFTPFile._read_prefetch-toggle" onclick="return toggle('SFTPFile._read_prefetch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_read_prefetch">_read_prefetch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -267,7 +268,7 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> in the buffer, return None. otherwise, behaves like a normal read.</tt> </tt> <a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-comment"># while not closed, and haven't fetched past the current position, and haven't reached EOF...</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_buffers</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_realpos</tt><tt class="py-op">)</tt> </tt> <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">offset</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> @@ -315,7 +316,7 @@ paramiko.sftp_si.CMD_DATA" class="py-name" href="#" onclick="return doclink('lin </div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt> <a name="SFTPFile._write"></a><div id="SFTPFile._write-def"><a name="L160"></a><tt class="py-lineno">160</tt> <a class="py-toggle" href="#" id="SFTPFile._write-toggle" onclick="return toggle('SFTPFile._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._write-expanded"><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment"># may write less than requested if it would exceed max packet size</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">chunk</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-43', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt><tt class="py-op">)</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">chunk</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-43', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt><tt class="py-op">)</tt> </tt> <a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-44', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name" targets="Variable paramiko.sftp.CMD_WRITE=paramiko.sftp-module.html#CMD_WRITE,Variable paramiko.sftp_attr.CMD_WRITE=paramiko.sftp_attr-module.html#CMD_WRITE,Variable paramiko.sftp_client.CMD_WRITE=paramiko.sftp_client-module.html#CMD_WRITE,Variable paramiko.sftp_file.CMD_WRITE=paramiko.sftp_file-module.html#CMD_WRITE,Variable paramiko.sftp_handle.CMD_WRITE=paramiko.sftp_handle-module.html#CMD_WRITE,Variable paramiko.sftp_server.CMD_WRITE=paramiko.sftp_server-module.html#CMD_WRITE,Variable paramiko.sftp_si.CMD_WRITE=paramiko.sftp_si-module.html#CMD_WRITE"><a title="paramiko.sftp.CMD_WRITE paramiko.sftp_attr.CMD_WRITE paramiko.sftp_client.CMD_WRITE @@ -334,7 +335,7 @@ paramiko.sftp_server.CMD_STATUS paramiko.sftp_si.CMD_STATUS" class="py-name" href="#" onclick="return doclink('link-49', 'CMD_STATUS', 'link-49');">CMD_STATUS</a></tt><tt class="py-op">:</tt> </tt> <a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-50" class="py-name"><a title="paramiko.SFTPError" class="py-name" href="#" onclick="return doclink('link-50', 'SFTPError', 'link-41');">SFTPError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expected status'</tt><tt class="py-op">)</tt> </tt> <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-comment"># convert_status already called</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">chunk</tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chunk</tt> </tt> </div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt> <a name="SFTPFile.settimeout"></a><div id="SFTPFile.settimeout-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="SFTPFile.settimeout-toggle" onclick="return toggle('SFTPFile.settimeout');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#settimeout">settimeout</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile.settimeout-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile.settimeout-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -682,7 +683,7 @@ paramiko.SFTPFile.stat paramiko.SFTPHandle.stat paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-90', 'stat', 'link-90');">stat</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">st_size</tt> </tt> <a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-comment"># queue up async reads for the rest of the file</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">chunks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">chunks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> <a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_realpos</tt> </tt> <a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">n</tt> <tt class="py-op"><</tt> <tt class="py-name">size</tt><tt class="py-op">:</tt> </tt> <a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">chunk</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-91', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt><tt class="py-op">,</tt> <tt class="py-name">size</tt> <tt class="py-op">-</tt> <tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> @@ -732,11 +733,11 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-93', <a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">read_chunks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> <a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chunks</tt><tt class="py-op">:</tt> </tt> <a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-comment"># don't fetch data that's already in the prefetch buffer</tt> </tt> -<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_buffers</tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_requests</tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_buffers</tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_in_prefetch_requests</tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> <a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> </tt> <a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-comment"># break up anything larger than the max read size</tt> </tt> -<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">while</tt> <tt class="py-name">size</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">size</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">chunk_size</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">size</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="paramiko.SFTPFile.MAX_REQUEST_SIZE" class="py-name" href="#" onclick="return doclink('link-94', 'MAX_REQUEST_SIZE', 'link-10');">MAX_REQUEST_SIZE</a></tt><tt class="py-op">)</tt> </tt> <a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-name">read_chunks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">+=</tt> <tt class="py-name">chunk_size</tt> </tt> @@ -744,7 +745,7 @@ paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-93', <a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> </tt> <a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_start_prefetch</tt><tt class="py-op">(</tt><tt class="py-name">read_chunks</tt><tt class="py-op">)</tt> </tt> <a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-comment"># now we can just devolve to a bunch of read()s :)</tt> </tt> -<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chunks</tt><tt class="py-op">:</tt> </tt> +<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chunks</tt><tt class="py-op">:</tt> </tt> <a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method paramiko.BufferedFile.seek()=paramiko.BufferedFile-class.html#seek,Method paramiko.SFTPFile.seek()=paramiko.SFTPFile-class.html#seek"><a title="paramiko.BufferedFile.seek paramiko.SFTPFile.seek" class="py-name" href="#" onclick="return doclink('link-95', 'seek', 'link-95');">seek</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> <a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read @@ -753,7 +754,7 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu </div><a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> </tt> <a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt> <a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> </tt> <a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> </tt> <a name="SFTPFile._get_size"></a><div id="SFTPFile._get_size-def"><a name="L434"></a><tt class="py-lineno">434</tt> <a class="py-toggle" href="#" id="SFTPFile._get_size-toggle" onclick="return toggle('SFTPFile._get_size');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_get_size">_get_size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._get_size-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._get_size-expanded"><a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> @@ -775,8 +776,8 @@ paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return docl </div><a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt> <a name="SFTPFile._prefetch_thread"></a><div id="SFTPFile._prefetch_thread-def"><a name="L449"></a><tt class="py-lineno">449</tt> <a class="py-toggle" href="#" id="SFTPFile._prefetch_thread-toggle" onclick="return toggle('SFTPFile._prefetch_thread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_file.SFTPFile-class.html#_prefetch_thread">_prefetch_thread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chunks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPFile._prefetch_thread-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPFile._prefetch_thread-expanded"><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-comment"># do these read requests in a temporary thread because there may be</tt> </tt> -<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># a lot of them, so it may block.</tt> </tt> -<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">length</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chunks</tt><tt class="py-op">:</tt> </tt> +<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-comment"># a lot of them, so it may block.</tt> </tt> +<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">length</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chunks</tt><tt class="py-op">:</tt> </tt> <a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-98', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_async_request</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name"><a title="paramiko.sftp.CMD_READ paramiko.sftp_attr.CMD_READ paramiko.sftp_client.CMD_READ @@ -794,7 +795,7 @@ paramiko.sftp_handle.CMD_STATUS paramiko.sftp_server.CMD_STATUS paramiko.sftp_si.CMD_STATUS" class="py-name" href="#" onclick="return doclink('link-100', 'CMD_STATUS', 'link-49');">CMD_STATUS</a></tt><tt class="py-op">:</tt> </tt> <a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-comment"># save exception and re-raise it on next file operation</tt> </tt> -<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="paramiko.sftp" class="py-name" href="#" onclick="return doclink('link-101', 'sftp', 'link-3');">sftp</a></tt><tt class="py-op">.</tt><tt class="py-name">_convert_status</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> <a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> <a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt> </tt> @@ -852,7 +853,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_handle-module.html b/docs/paramiko.sftp_handle-module.html index 60b436d..511768d 100644 --- a/docs/paramiko.sftp_handle-module.html +++ b/docs/paramiko.sftp_handle-module.html @@ -739,6 +739,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -878,7 +885,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_handle-pysrc.html b/docs/paramiko.sftp_handle-pysrc.html index ca22a01..5548d83 100644 --- a/docs/paramiko.sftp_handle-pysrc.html +++ b/docs/paramiko.sftp_handle-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_handle-module.html" onclick="show_private();">Module paramiko.sftp_handle</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Abstraction of an SFTP file handle (for server mode).</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -103,7 +103,7 @@ <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-comment"># only for handles to folders:</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__files</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__files</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tell</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> </div><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt> <a name="SFTPHandle.close"></a><div id="SFTPHandle.close-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="SFTPHandle.close-toggle" onclick="return toggle('SFTPHandle.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_handle.SFTPHandle-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -224,7 +224,7 @@ paramiko.sftp_server.SFTP_OP_UNSUPPORTED paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-12', 'SFTP_OP_UNSUPPORTED', 'link-6');">SFTP_OP_UNSUPPORTED</a></tt> </tt> <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-comment"># in append mode, don't care about seeking</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__flags</tt> <tt class="py-op">&</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_APPEND</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__flags</tt> <tt class="py-op">&</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_APPEND</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tell</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tell</tt> <tt class="py-op">=</tt> <tt class="py-name">writefile</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="paramiko.BufferedFile.tell" class="py-name" href="#" onclick="return doclink('link-13', 'tell', 'link-7');">tell</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">offset</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__tell</tt><tt class="py-op">:</tt> </tt> @@ -286,7 +286,7 @@ paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return d </div><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt> <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> <a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt> <a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> </tt> <a name="SFTPHandle._set_files"></a><div id="SFTPHandle._set_files-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="SFTPHandle._set_files-toggle" onclick="return toggle('SFTPHandle._set_files');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_handle.SFTPHandle-class.html#_set_files">_set_files</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">files</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPHandle._set_files-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPHandle._set_files-expanded"><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> @@ -347,7 +347,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:18 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_server-module.html b/docs/paramiko.sftp_server-module.html index a2343f6..21666b2 100644 --- a/docs/paramiko.sftp_server-module.html +++ b/docs/paramiko.sftp_server-module.html @@ -739,6 +739,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -878,7 +885,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:27 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_server-pysrc.html b/docs/paramiko.sftp_server-pysrc.html index cd77999..5bcda1e 100644 --- a/docs/paramiko.sftp_server-pysrc.html +++ b/docs/paramiko.sftp_server-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_server-module.html" onclick="show_private();">Module paramiko.sftp_server</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Server-mode SFTP support.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -88,7 +88,7 @@ <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt> <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-comment"># known hash algorithms for the "check-file" extension</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-11" class="py-name" targets="Variable paramiko.sftp_server._hash_class=paramiko.sftp_server-module.html#_hash_class"><a title="paramiko.sftp_server._hash_class" class="py-name" href="#" onclick="return doclink('link-11', '_hash_class', 'link-11');">_hash_class</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable paramiko.sftp_server._hash_class=paramiko.sftp_server-module.html#_hash_class"><a title="paramiko.sftp_server._hash_class" class="py-name" href="#" onclick="return doclink('link-11', '_hash_class', 'link-11');">_hash_class</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-string">'sha1'</tt><tt class="py-op">:</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> </tt> <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-string">'md5'</tt><tt class="py-op">:</tt> <tt class="py-name">MD5</tt><tt class="py-op">,</tt> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-op">}</tt> </tt> @@ -119,7 +119,7 @@ <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> individual requests.</tt> </tt> <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> @type sftp_si: class</tt> </tt> <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">BaseSFTP</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">BaseSFTP</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -160,6 +160,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="paramiko.SubsystemHandler" class="py-name" href="#" onclick="return doclink('link-14', 'SubsystemHandler', 'link-4');">SubsystemHandler</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="paramiko.Agent.__init__ @@ -203,6 +204,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-15', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name" targets="Module paramiko.channel=paramiko.channel-module.html"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-16', 'channel', 'link-16');">channel</a></tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-17', 'name', 'link-17');">name</a></tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-18', 'server', 'link-3');">server</a></tt><tt class="py-op">)</tt> </tt> @@ -212,7 +214,7 @@ paramiko.SSHClient.get_transport" class="py-name" href="#" onclick="return docli <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ultra_debug</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-27', 'transport', 'link-19');">transport</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method paramiko.Transport.get_hexdump()=paramiko.Transport-class.html#get_hexdump"><a title="paramiko.Transport.get_hexdump" class="py-name" href="#" onclick="return doclink('link-28', 'get_hexdump', 'link-28');">get_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">next_handle</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># map of handle-string to SFTPHandle for files & folders:</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> <a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">folder_table</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> <a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-29', 'server', 'link-3');">server</a></tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="paramiko.sftp_si" class="py-name" href="#" onclick="return doclink('link-30', 'sftp_si', 'link-8');">sftp_si</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-31', 'server', 'link-3');">server</a></tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">largs</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> </div><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt> @@ -380,7 +382,7 @@ paramiko.sftp_si.DEBUG paramiko.transport.DEBUG paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-49', 'DEBUG', 'link-37');">DEBUG</a></tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-50', 'util', 'link-23');">util</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="paramiko.util.tb_strings" class="py-name" href="#" onclick="return doclink('link-51', 'tb_strings', 'link-45');">tb_strings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-comment"># send some kind of failure message, at least</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name" targets="Variable paramiko.sftp.SFTP_FAILURE=paramiko.sftp-module.html#SFTP_FAILURE,Variable paramiko.sftp_attr.SFTP_FAILURE=paramiko.sftp_attr-module.html#SFTP_FAILURE,Variable paramiko.sftp_client.SFTP_FAILURE=paramiko.sftp_client-module.html#SFTP_FAILURE,Variable paramiko.sftp_file.SFTP_FAILURE=paramiko.sftp_file-module.html#SFTP_FAILURE,Variable paramiko.sftp_handle.SFTP_FAILURE=paramiko.sftp_handle-module.html#SFTP_FAILURE,Variable paramiko.sftp_server.SFTP_FAILURE=paramiko.sftp_server-module.html#SFTP_FAILURE,Variable paramiko.sftp_si.SFTP_FAILURE=paramiko.sftp_si-module.html#SFTP_FAILURE"><a title="paramiko.sftp.SFTP_FAILURE paramiko.sftp_attr.SFTP_FAILURE paramiko.sftp_client.SFTP_FAILURE @@ -396,7 +398,7 @@ paramiko.sftp_si.SFTP_FAILURE" class="py-name" href="#" onclick="return doclink( <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="paramiko.SFTPServer" class="py-name" href="#" onclick="return doclink('link-55', 'SFTPServer', 'link-32');">SFTPServer</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method paramiko.SFTPServer.finish_subsystem()=paramiko.SFTPServer-class.html#finish_subsystem,Method paramiko.SubsystemHandler.finish_subsystem()=paramiko.SubsystemHandler-class.html#finish_subsystem"><a title="paramiko.SFTPServer.finish_subsystem paramiko.SubsystemHandler.finish_subsystem" class="py-name" href="#" onclick="return doclink('link-56', 'finish_subsystem', 'link-56');">finish_subsystem</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-comment"># close any file handles that were left open (so we can return them to the OS quickly)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">f</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close @@ -438,7 +440,7 @@ paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick=" <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt> <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-comment"># permission denied</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-59" class="py-name" targets="Variable paramiko.sftp.SFTP_PERMISSION_DENIED=paramiko.sftp-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_attr.SFTP_PERMISSION_DENIED=paramiko.sftp_attr-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_client.SFTP_PERMISSION_DENIED=paramiko.sftp_client-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_file.SFTP_PERMISSION_DENIED=paramiko.sftp_file-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_handle.SFTP_PERMISSION_DENIED=paramiko.sftp_handle-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_server.SFTP_PERMISSION_DENIED=paramiko.sftp_server-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_si.SFTP_PERMISSION_DENIED=paramiko.sftp_si-module.html#SFTP_PERMISSION_DENIED"><a title="paramiko.sftp.SFTP_PERMISSION_DENIED +<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-59" class="py-name" targets="Variable paramiko.sftp.SFTP_PERMISSION_DENIED=paramiko.sftp-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_attr.SFTP_PERMISSION_DENIED=paramiko.sftp_attr-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_client.SFTP_PERMISSION_DENIED=paramiko.sftp_client-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_file.SFTP_PERMISSION_DENIED=paramiko.sftp_file-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_handle.SFTP_PERMISSION_DENIED=paramiko.sftp_handle-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_server.SFTP_PERMISSION_DENIED=paramiko.sftp_server-module.html#SFTP_PERMISSION_DENIED,Variable paramiko.sftp_si.SFTP_PERMISSION_DENIED=paramiko.sftp_si-module.html#SFTP_PERMISSION_DENIED"><a title="paramiko.sftp.SFTP_PERMISSION_DENIED paramiko.sftp_attr.SFTP_PERMISSION_DENIED paramiko.sftp_client.SFTP_PERMISSION_DENIED paramiko.sftp_file.SFTP_PERMISSION_DENIED @@ -447,7 +449,7 @@ paramiko.sftp_server.SFTP_PERMISSION_DENIED paramiko.sftp_si.SFTP_PERMISSION_DENIED" class="py-name" href="#" onclick="return doclink('link-59', 'SFTP_PERMISSION_DENIED', 'link-59');">SFTP_PERMISSION_DENIED</a></tt> </tt> <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOENT</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ENOTDIR</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-comment"># no such file</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-60" class="py-name" targets="Variable paramiko.sftp.SFTP_NO_SUCH_FILE=paramiko.sftp-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_attr.SFTP_NO_SUCH_FILE=paramiko.sftp_attr-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_client.SFTP_NO_SUCH_FILE=paramiko.sftp_client-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_file.SFTP_NO_SUCH_FILE=paramiko.sftp_file-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_handle.SFTP_NO_SUCH_FILE=paramiko.sftp_handle-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_server.SFTP_NO_SUCH_FILE=paramiko.sftp_server-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_si.SFTP_NO_SUCH_FILE=paramiko.sftp_si-module.html#SFTP_NO_SUCH_FILE"><a title="paramiko.sftp.SFTP_NO_SUCH_FILE +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-60" class="py-name" targets="Variable paramiko.sftp.SFTP_NO_SUCH_FILE=paramiko.sftp-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_attr.SFTP_NO_SUCH_FILE=paramiko.sftp_attr-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_client.SFTP_NO_SUCH_FILE=paramiko.sftp_client-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_file.SFTP_NO_SUCH_FILE=paramiko.sftp_file-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_handle.SFTP_NO_SUCH_FILE=paramiko.sftp_handle-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_server.SFTP_NO_SUCH_FILE=paramiko.sftp_server-module.html#SFTP_NO_SUCH_FILE,Variable paramiko.sftp_si.SFTP_NO_SUCH_FILE=paramiko.sftp_si-module.html#SFTP_NO_SUCH_FILE"><a title="paramiko.sftp.SFTP_NO_SUCH_FILE paramiko.sftp_attr.SFTP_NO_SUCH_FILE paramiko.sftp_client.SFTP_NO_SUCH_FILE paramiko.sftp_file.SFTP_NO_SUCH_FILE @@ -482,7 +484,7 @@ paramiko.sftp_si.SFTP_FAILURE" class="py-name" href="#" onclick="return doclink( <a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> <a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">!=</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt> <a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment"># mode operations are meaningless on win32</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Variable paramiko.SFTPAttributes.FLAG_PERMISSIONS=paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><a title="paramiko.SFTPAttributes.FLAG_PERMISSIONS" class="py-name" href="#" onclick="return doclink('link-64', 'FLAG_PERMISSIONS', 'link-64');">FLAG_PERMISSIONS</a></tt><tt class="py-op">:</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Variable paramiko.SFTPAttributes.FLAG_PERMISSIONS=paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><a title="paramiko.SFTPAttributes.FLAG_PERMISSIONS" class="py-name" href="#" onclick="return doclink('link-64', 'FLAG_PERMISSIONS', 'link-64');">FLAG_PERMISSIONS</a></tt><tt class="py-op">:</tt> </tt> <a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method paramiko.SFTPClient.chmod()=paramiko.SFTPClient-class.html#chmod,Method paramiko.SFTPFile.chmod()=paramiko.SFTPFile-class.html#chmod"><a title="paramiko.SFTPClient.chmod paramiko.SFTPFile.chmod" class="py-name" href="#" onclick="return doclink('link-65', 'chmod', 'link-65');">chmod</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">st_mode</tt><tt class="py-op">)</tt> </tt> <a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt class="py-name">_flags</tt> <tt class="py-op">&</tt> <tt class="py-name">attr</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable paramiko.SFTPAttributes.FLAG_UIDGID=paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><a title="paramiko.SFTPAttributes.FLAG_UIDGID" class="py-name" href="#" onclick="return doclink('link-66', 'FLAG_UIDGID', 'link-66');">FLAG_UIDGID</a></tt><tt class="py-op">:</tt> </tt> @@ -498,7 +500,7 @@ paramiko.SFTPFile.truncate" class="py-name" href="#" onclick="return doclink('li <a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt> <a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> </tt> <a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> <a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt> <a name="SFTPServer._response"></a><div id="SFTPServer._response-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="SFTPServer._response-toggle" onclick="return toggle('SFTPServer._response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_response">_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_number</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">arg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPServer._response-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._response-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-75', 'Message', 'link-46');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -519,7 +521,7 @@ paramiko.SFTPFile.truncate" class="py-name" href="#" onclick="return doclink('li <a name="SFTPServer._send_handle_response"></a><div id="SFTPServer._send_handle_response-def"><a name="L192"></a><tt class="py-lineno">192</tt> <a class="py-toggle" href="#" id="SFTPServer._send_handle_response-toggle" onclick="return toggle('SFTPServer._send_handle_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_send_handle_response">_send_handle_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_number</tt><tt class="py-op">,</tt> <tt class="py-param">handle</tt><tt class="py-op">,</tt> <tt class="py-param">folder</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPServer._send_handle_response-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._send_handle_response-expanded"><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">handle</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name" targets="Class paramiko.SFTPHandle=paramiko.SFTPHandle-class.html"><a title="paramiko.SFTPHandle" class="py-name" href="#" onclick="return doclink('link-81', 'SFTPHandle', 'link-81');">SFTPHandle</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-comment"># must be error code</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> +<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">handle</tt><tt class="py-op">)</tt> </tt> <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt class="py-name">_set_name</tt><tt class="py-op">(</tt><tt class="py-string">'hx%d'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">next_handle</tt><tt class="py-op">)</tt> </tt> <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">next_handle</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> @@ -548,7 +550,7 @@ paramiko.sftp_si.SFTP_DESC" class="py-name" href="#" onclick="return doclink('li <a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt> <a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">desc</tt> <tt class="py-op">=</tt> <tt class="py-string">'Unknown'</tt> </tt> <a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-comment"># some clients expect a "langauge" tag at the end (but don't mind it being blank)</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name" targets="Variable paramiko.sftp.CMD_STATUS=paramiko.sftp-module.html#CMD_STATUS,Variable paramiko.sftp_attr.CMD_STATUS=paramiko.sftp_attr-module.html#CMD_STATUS,Variable paramiko.sftp_client.CMD_STATUS=paramiko.sftp_client-module.html#CMD_STATUS,Variable paramiko.sftp_file.CMD_STATUS=paramiko.sftp_file-module.html#CMD_STATUS,Variable paramiko.sftp_handle.CMD_STATUS=paramiko.sftp_handle-module.html#CMD_STATUS,Variable paramiko.sftp_server.CMD_STATUS=paramiko.sftp_server-module.html#CMD_STATUS,Variable paramiko.sftp_si.CMD_STATUS=paramiko.sftp_si-module.html#CMD_STATUS"><a title="paramiko.sftp.CMD_STATUS +<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name" targets="Variable paramiko.sftp.CMD_STATUS=paramiko.sftp-module.html#CMD_STATUS,Variable paramiko.sftp_attr.CMD_STATUS=paramiko.sftp_attr-module.html#CMD_STATUS,Variable paramiko.sftp_client.CMD_STATUS=paramiko.sftp_client-module.html#CMD_STATUS,Variable paramiko.sftp_file.CMD_STATUS=paramiko.sftp_file-module.html#CMD_STATUS,Variable paramiko.sftp_handle.CMD_STATUS=paramiko.sftp_handle-module.html#CMD_STATUS,Variable paramiko.sftp_server.CMD_STATUS=paramiko.sftp_server-module.html#CMD_STATUS,Variable paramiko.sftp_si.CMD_STATUS=paramiko.sftp_si-module.html#CMD_STATUS"><a title="paramiko.sftp.CMD_STATUS paramiko.sftp_attr.CMD_STATUS paramiko.sftp_client.CMD_STATUS paramiko.sftp_file.CMD_STATUS @@ -560,12 +562,12 @@ paramiko.sftp_si.CMD_STATUS" class="py-name" href="#" onclick="return doclink('l </div><div id="SFTPServer._open_folder-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._open_folder-expanded"><a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-85', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method paramiko.SFTPServerInterface.list_folder()=paramiko.SFTPServerInterface-class.html#list_folder"><a title="paramiko.SFTPServerInterface.list_folder" class="py-name" href="#" onclick="return doclink('link-86', 'list_folder', 'link-86');">list_folder</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> <a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-comment"># got an actual list of filenames in the folder</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">folder</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="paramiko.SFTPHandle" class="py-name" href="#" onclick="return doclink('link-87', 'SFTPHandle', 'link-81');">SFTPHandle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">folder</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="paramiko.SFTPHandle" class="py-name" href="#" onclick="return doclink('link-87', 'SFTPHandle', 'link-81');">SFTPHandle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">_set_files</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> <a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_handle_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">folder</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-comment"># must be an error code</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> </div><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt> <a name="SFTPServer._read_folder"></a><div id="SFTPServer._read_folder-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="SFTPServer._read_folder-toggle" onclick="return toggle('SFTPServer._read_folder');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_read_folder">_read_folder</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_number</tt><tt class="py-op">,</tt> <tt class="py-param">folder</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPServer._read_folder-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._read_folder-expanded"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">flist</tt> <tt class="py-op">=</tt> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">_get_next_files</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -595,10 +597,10 @@ paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('lin </div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt> <a name="SFTPServer._check_file"></a><div id="SFTPServer._check_file-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="SFTPServer._check_file-toggle" onclick="return toggle('SFTPServer._check_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_check_file">_check_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_number</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPServer._check_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._check_file-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-comment"># this extension actually comes from v6 protocol, but since it's an</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># extension, i feel like we can reasonably support it backported.</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># it's very useful for verifying uploaded files or checking for</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># rsync-like differences between local and remote files.</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-95', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-comment"># extension, i feel like we can reasonably support it backported.</tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-comment"># it's very useful for verifying uploaded files or checking for</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-comment"># rsync-like differences between local and remote files.</tt> </tt> +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-95', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">alg_list</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method paramiko.Message.get_list()=paramiko.Message-class.html#get_list"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-96', 'get_list', 'link-96');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method paramiko.Message.get_int64()=paramiko.Message-class.html#get_int64"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-97', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">length</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-98', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -653,13 +655,13 @@ paramiko.sftp_si.SFTP_FAILURE" class="py-name" href="#" onclick="return doclink( <a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">offset</tt> <tt class="py-op"><</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">length</tt><tt class="py-op">:</tt> </tt> <a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">blocklen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">block_size</tt><tt class="py-op">,</tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">length</tt> <tt class="py-op">-</tt> <tt class="py-name">offset</tt><tt class="py-op">)</tt> </tt> <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-comment"># don't try to read more than about 64KB at a time</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">chunklen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">blocklen</tt><tt class="py-op">,</tt> <tt class="py-number">65536</tt><tt class="py-op">)</tt> </tt> +<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">chunklen</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">blocklen</tt><tt class="py-op">,</tt> <tt class="py-number">65536</tt><tt class="py-op">)</tt> </tt> <a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt class="py-name">alg</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt class="py-name">alg</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-107', 'new', 'link-107');">new</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">count</tt> <tt class="py-op"><</tt> <tt class="py-name">blocklen</tt><tt class="py-op">:</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read +<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method paramiko.BufferedFile.read()=paramiko.BufferedFile-class.html#read,Method paramiko.SFTPHandle.read()=paramiko.SFTPHandle-class.html#read,Method paramiko.buffered_pipe.BufferedPipe.read()=paramiko.buffered_pipe.BufferedPipe-class.html#read"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-107', 'read', 'link-107');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">chunklen</tt><tt class="py-op">)</tt> </tt> +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-108', 'read', 'link-108');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">chunklen</tt><tt class="py-op">)</tt> </tt> <a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> <a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-string">'Unable to hash file'</tt><tt class="py-op">)</tt> </tt> <a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> @@ -668,81 +670,81 @@ paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="retu <a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">+=</tt> <tt class="py-name">count</tt> </tt> <a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">sum_out</tt> <tt class="py-op">+=</tt> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-108', 'Message', 'link-46');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-109', 'add_int', 'link-76');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">)</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-110', 'add_string', 'link-79');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'check-file'</tt><tt class="py-op">)</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-111', 'add_string', 'link-79');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">algname</tt><tt class="py-op">)</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method paramiko.Message.add_bytes()=paramiko.Message-class.html#add_bytes"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-112', 'add_bytes', 'link-112');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">sum_out</tt><tt class="py-op">)</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_packet</tt><tt class="py-op">(</tt><tt id="link-113" class="py-name" targets="Variable paramiko.sftp.CMD_EXTENDED_REPLY=paramiko.sftp-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_attr.CMD_EXTENDED_REPLY=paramiko.sftp_attr-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_client.CMD_EXTENDED_REPLY=paramiko.sftp_client-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_file.CMD_EXTENDED_REPLY=paramiko.sftp_file-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_handle.CMD_EXTENDED_REPLY=paramiko.sftp_handle-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_server.CMD_EXTENDED_REPLY=paramiko.sftp_server-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_si.CMD_EXTENDED_REPLY=paramiko.sftp_si-module.html#CMD_EXTENDED_REPLY"><a title="paramiko.sftp.CMD_EXTENDED_REPLY +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-109', 'Message', 'link-46');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-110', 'add_int', 'link-76');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">)</tt> </tt> +<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-111', 'add_string', 'link-79');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'check-file'</tt><tt class="py-op">)</tt> </tt> +<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-112', 'add_string', 'link-79');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">algname</tt><tt class="py-op">)</tt> </tt> +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method paramiko.Message.add_bytes()=paramiko.Message-class.html#add_bytes"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-113', 'add_bytes', 'link-113');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">sum_out</tt><tt class="py-op">)</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_packet</tt><tt class="py-op">(</tt><tt id="link-114" class="py-name" targets="Variable paramiko.sftp.CMD_EXTENDED_REPLY=paramiko.sftp-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_attr.CMD_EXTENDED_REPLY=paramiko.sftp_attr-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_client.CMD_EXTENDED_REPLY=paramiko.sftp_client-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_file.CMD_EXTENDED_REPLY=paramiko.sftp_file-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_handle.CMD_EXTENDED_REPLY=paramiko.sftp_handle-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_server.CMD_EXTENDED_REPLY=paramiko.sftp_server-module.html#CMD_EXTENDED_REPLY,Variable paramiko.sftp_si.CMD_EXTENDED_REPLY=paramiko.sftp_si-module.html#CMD_EXTENDED_REPLY"><a title="paramiko.sftp.CMD_EXTENDED_REPLY paramiko.sftp_attr.CMD_EXTENDED_REPLY paramiko.sftp_client.CMD_EXTENDED_REPLY paramiko.sftp_file.CMD_EXTENDED_REPLY paramiko.sftp_handle.CMD_EXTENDED_REPLY paramiko.sftp_server.CMD_EXTENDED_REPLY -paramiko.sftp_si.CMD_EXTENDED_REPLY" class="py-name" href="#" onclick="return doclink('link-113', 'CMD_EXTENDED_REPLY', 'link-113');">CMD_EXTENDED_REPLY</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_EXTENDED_REPLY" class="py-name" href="#" onclick="return doclink('link-114', 'CMD_EXTENDED_REPLY', 'link-114');">CMD_EXTENDED_REPLY</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> </div><a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> </tt> <a name="SFTPServer._convert_pflags"></a><div id="SFTPServer._convert_pflags-def"><a name="L298"></a><tt class="py-lineno">298</tt> <a class="py-toggle" href="#" id="SFTPServer._convert_pflags-toggle" onclick="return toggle('SFTPServer._convert_pflags');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_convert_pflags">_convert_pflags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">pflags</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> </div><div id="SFTPServer._convert_pflags-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._convert_pflags-expanded"><a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-docstring">"convert SFTP-style open() flags to python's os.open() flags"</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-114" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_READ=paramiko.sftp-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_attr.SFTP_FLAG_READ=paramiko.sftp_attr-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_client.SFTP_FLAG_READ=paramiko.sftp_client-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_file.SFTP_FLAG_READ=paramiko.sftp_file-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_handle.SFTP_FLAG_READ=paramiko.sftp_handle-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_server.SFTP_FLAG_READ=paramiko.sftp_server-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_si.SFTP_FLAG_READ=paramiko.sftp_si-module.html#SFTP_FLAG_READ"><a title="paramiko.sftp.SFTP_FLAG_READ +<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-115" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_READ=paramiko.sftp-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_attr.SFTP_FLAG_READ=paramiko.sftp_attr-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_client.SFTP_FLAG_READ=paramiko.sftp_client-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_file.SFTP_FLAG_READ=paramiko.sftp_file-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_handle.SFTP_FLAG_READ=paramiko.sftp_handle-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_server.SFTP_FLAG_READ=paramiko.sftp_server-module.html#SFTP_FLAG_READ,Variable paramiko.sftp_si.SFTP_FLAG_READ=paramiko.sftp_si-module.html#SFTP_FLAG_READ"><a title="paramiko.sftp.SFTP_FLAG_READ paramiko.sftp_attr.SFTP_FLAG_READ paramiko.sftp_client.SFTP_FLAG_READ paramiko.sftp_file.SFTP_FLAG_READ paramiko.sftp_handle.SFTP_FLAG_READ paramiko.sftp_server.SFTP_FLAG_READ -paramiko.sftp_si.SFTP_FLAG_READ" class="py-name" href="#" onclick="return doclink('link-114', 'SFTP_FLAG_READ', 'link-114');">SFTP_FLAG_READ</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-115" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_WRITE=paramiko.sftp-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_attr.SFTP_FLAG_WRITE=paramiko.sftp_attr-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_client.SFTP_FLAG_WRITE=paramiko.sftp_client-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_file.SFTP_FLAG_WRITE=paramiko.sftp_file-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_handle.SFTP_FLAG_WRITE=paramiko.sftp_handle-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_server.SFTP_FLAG_WRITE=paramiko.sftp_server-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_si.SFTP_FLAG_WRITE=paramiko.sftp_si-module.html#SFTP_FLAG_WRITE"><a title="paramiko.sftp.SFTP_FLAG_WRITE +paramiko.sftp_si.SFTP_FLAG_READ" class="py-name" href="#" onclick="return doclink('link-115', 'SFTP_FLAG_READ', 'link-115');">SFTP_FLAG_READ</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-116" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_WRITE=paramiko.sftp-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_attr.SFTP_FLAG_WRITE=paramiko.sftp_attr-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_client.SFTP_FLAG_WRITE=paramiko.sftp_client-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_file.SFTP_FLAG_WRITE=paramiko.sftp_file-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_handle.SFTP_FLAG_WRITE=paramiko.sftp_handle-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_server.SFTP_FLAG_WRITE=paramiko.sftp_server-module.html#SFTP_FLAG_WRITE,Variable paramiko.sftp_si.SFTP_FLAG_WRITE=paramiko.sftp_si-module.html#SFTP_FLAG_WRITE"><a title="paramiko.sftp.SFTP_FLAG_WRITE paramiko.sftp_attr.SFTP_FLAG_WRITE paramiko.sftp_client.SFTP_FLAG_WRITE paramiko.sftp_file.SFTP_FLAG_WRITE paramiko.sftp_handle.SFTP_FLAG_WRITE paramiko.sftp_server.SFTP_FLAG_WRITE -paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-115', 'SFTP_FLAG_WRITE', 'link-115');">SFTP_FLAG_WRITE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-116', 'SFTP_FLAG_WRITE', 'link-116');">SFTP_FLAG_WRITE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> <a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_RDWR</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-116" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_WRITE +<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-117" class="py-name"><a title="paramiko.sftp.SFTP_FLAG_WRITE paramiko.sftp_attr.SFTP_FLAG_WRITE paramiko.sftp_client.SFTP_FLAG_WRITE paramiko.sftp_file.SFTP_FLAG_WRITE paramiko.sftp_handle.SFTP_FLAG_WRITE paramiko.sftp_server.SFTP_FLAG_WRITE -paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-116', 'SFTP_FLAG_WRITE', 'link-115');">SFTP_FLAG_WRITE</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_WRITE" class="py-name" href="#" onclick="return doclink('link-117', 'SFTP_FLAG_WRITE', 'link-116');">SFTP_FLAG_WRITE</a></tt><tt class="py-op">:</tt> </tt> <a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_WRONLY</tt> </tt> <a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_RDONLY</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-117" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_APPEND=paramiko.sftp-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_attr.SFTP_FLAG_APPEND=paramiko.sftp_attr-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_client.SFTP_FLAG_APPEND=paramiko.sftp_client-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_file.SFTP_FLAG_APPEND=paramiko.sftp_file-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_handle.SFTP_FLAG_APPEND=paramiko.sftp_handle-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_server.SFTP_FLAG_APPEND=paramiko.sftp_server-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_si.SFTP_FLAG_APPEND=paramiko.sftp_si-module.html#SFTP_FLAG_APPEND"><a title="paramiko.sftp.SFTP_FLAG_APPEND +<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-118" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_APPEND=paramiko.sftp-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_attr.SFTP_FLAG_APPEND=paramiko.sftp_attr-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_client.SFTP_FLAG_APPEND=paramiko.sftp_client-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_file.SFTP_FLAG_APPEND=paramiko.sftp_file-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_handle.SFTP_FLAG_APPEND=paramiko.sftp_handle-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_server.SFTP_FLAG_APPEND=paramiko.sftp_server-module.html#SFTP_FLAG_APPEND,Variable paramiko.sftp_si.SFTP_FLAG_APPEND=paramiko.sftp_si-module.html#SFTP_FLAG_APPEND"><a title="paramiko.sftp.SFTP_FLAG_APPEND paramiko.sftp_attr.SFTP_FLAG_APPEND paramiko.sftp_client.SFTP_FLAG_APPEND paramiko.sftp_file.SFTP_FLAG_APPEND paramiko.sftp_handle.SFTP_FLAG_APPEND paramiko.sftp_server.SFTP_FLAG_APPEND -paramiko.sftp_si.SFTP_FLAG_APPEND" class="py-name" href="#" onclick="return doclink('link-117', 'SFTP_FLAG_APPEND', 'link-117');">SFTP_FLAG_APPEND</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_APPEND" class="py-name" href="#" onclick="return doclink('link-118', 'SFTP_FLAG_APPEND', 'link-118');">SFTP_FLAG_APPEND</a></tt><tt class="py-op">:</tt> </tt> <a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_APPEND</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-118" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_CREATE=paramiko.sftp-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_attr.SFTP_FLAG_CREATE=paramiko.sftp_attr-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_client.SFTP_FLAG_CREATE=paramiko.sftp_client-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_file.SFTP_FLAG_CREATE=paramiko.sftp_file-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_handle.SFTP_FLAG_CREATE=paramiko.sftp_handle-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_server.SFTP_FLAG_CREATE=paramiko.sftp_server-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_si.SFTP_FLAG_CREATE=paramiko.sftp_si-module.html#SFTP_FLAG_CREATE"><a title="paramiko.sftp.SFTP_FLAG_CREATE +<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-119" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_CREATE=paramiko.sftp-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_attr.SFTP_FLAG_CREATE=paramiko.sftp_attr-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_client.SFTP_FLAG_CREATE=paramiko.sftp_client-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_file.SFTP_FLAG_CREATE=paramiko.sftp_file-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_handle.SFTP_FLAG_CREATE=paramiko.sftp_handle-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_server.SFTP_FLAG_CREATE=paramiko.sftp_server-module.html#SFTP_FLAG_CREATE,Variable paramiko.sftp_si.SFTP_FLAG_CREATE=paramiko.sftp_si-module.html#SFTP_FLAG_CREATE"><a title="paramiko.sftp.SFTP_FLAG_CREATE paramiko.sftp_attr.SFTP_FLAG_CREATE paramiko.sftp_client.SFTP_FLAG_CREATE paramiko.sftp_file.SFTP_FLAG_CREATE paramiko.sftp_handle.SFTP_FLAG_CREATE paramiko.sftp_server.SFTP_FLAG_CREATE -paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-118', 'SFTP_FLAG_CREATE', 'link-118');">SFTP_FLAG_CREATE</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_CREATE" class="py-name" href="#" onclick="return doclink('link-119', 'SFTP_FLAG_CREATE', 'link-119');">SFTP_FLAG_CREATE</a></tt><tt class="py-op">:</tt> </tt> <a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_CREAT</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-119" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_TRUNC=paramiko.sftp-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_attr.SFTP_FLAG_TRUNC=paramiko.sftp_attr-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_client.SFTP_FLAG_TRUNC=paramiko.sftp_client-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_file.SFTP_FLAG_TRUNC=paramiko.sftp_file-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_handle.SFTP_FLAG_TRUNC=paramiko.sftp_handle-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_server.SFTP_FLAG_TRUNC=paramiko.sftp_server-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_si.SFTP_FLAG_TRUNC=paramiko.sftp_si-module.html#SFTP_FLAG_TRUNC"><a title="paramiko.sftp.SFTP_FLAG_TRUNC +<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-120" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_TRUNC=paramiko.sftp-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_attr.SFTP_FLAG_TRUNC=paramiko.sftp_attr-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_client.SFTP_FLAG_TRUNC=paramiko.sftp_client-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_file.SFTP_FLAG_TRUNC=paramiko.sftp_file-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_handle.SFTP_FLAG_TRUNC=paramiko.sftp_handle-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_server.SFTP_FLAG_TRUNC=paramiko.sftp_server-module.html#SFTP_FLAG_TRUNC,Variable paramiko.sftp_si.SFTP_FLAG_TRUNC=paramiko.sftp_si-module.html#SFTP_FLAG_TRUNC"><a title="paramiko.sftp.SFTP_FLAG_TRUNC paramiko.sftp_attr.SFTP_FLAG_TRUNC paramiko.sftp_client.SFTP_FLAG_TRUNC paramiko.sftp_file.SFTP_FLAG_TRUNC paramiko.sftp_handle.SFTP_FLAG_TRUNC paramiko.sftp_server.SFTP_FLAG_TRUNC -paramiko.sftp_si.SFTP_FLAG_TRUNC" class="py-name" href="#" onclick="return doclink('link-119', 'SFTP_FLAG_TRUNC', 'link-119');">SFTP_FLAG_TRUNC</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_TRUNC" class="py-name" href="#" onclick="return doclink('link-120', 'SFTP_FLAG_TRUNC', 'link-120');">SFTP_FLAG_TRUNC</a></tt><tt class="py-op">:</tt> </tt> <a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_TRUNC</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-120" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_EXCL=paramiko.sftp-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_attr.SFTP_FLAG_EXCL=paramiko.sftp_attr-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_client.SFTP_FLAG_EXCL=paramiko.sftp_client-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_file.SFTP_FLAG_EXCL=paramiko.sftp_file-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_handle.SFTP_FLAG_EXCL=paramiko.sftp_handle-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_server.SFTP_FLAG_EXCL=paramiko.sftp_server-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_si.SFTP_FLAG_EXCL=paramiko.sftp_si-module.html#SFTP_FLAG_EXCL"><a title="paramiko.sftp.SFTP_FLAG_EXCL +<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pflags</tt> <tt class="py-op">&</tt> <tt id="link-121" class="py-name" targets="Variable paramiko.sftp.SFTP_FLAG_EXCL=paramiko.sftp-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_attr.SFTP_FLAG_EXCL=paramiko.sftp_attr-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_client.SFTP_FLAG_EXCL=paramiko.sftp_client-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_file.SFTP_FLAG_EXCL=paramiko.sftp_file-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_handle.SFTP_FLAG_EXCL=paramiko.sftp_handle-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_server.SFTP_FLAG_EXCL=paramiko.sftp_server-module.html#SFTP_FLAG_EXCL,Variable paramiko.sftp_si.SFTP_FLAG_EXCL=paramiko.sftp_si-module.html#SFTP_FLAG_EXCL"><a title="paramiko.sftp.SFTP_FLAG_EXCL paramiko.sftp_attr.SFTP_FLAG_EXCL paramiko.sftp_client.SFTP_FLAG_EXCL paramiko.sftp_file.SFTP_FLAG_EXCL paramiko.sftp_handle.SFTP_FLAG_EXCL paramiko.sftp_server.SFTP_FLAG_EXCL -paramiko.sftp_si.SFTP_FLAG_EXCL" class="py-name" href="#" onclick="return doclink('link-120', 'SFTP_FLAG_EXCL', 'link-120');">SFTP_FLAG_EXCL</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.SFTP_FLAG_EXCL" class="py-name" href="#" onclick="return doclink('link-121', 'SFTP_FLAG_EXCL', 'link-121');">SFTP_FLAG_EXCL</a></tt><tt class="py-op">:</tt> </tt> <a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">|=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_EXCL</tt> </tt> <a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">flags</tt> </tt> </div><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt> <a name="SFTPServer._process"></a><div id="SFTPServer._process-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="SFTPServer._process-toggle" onclick="return toggle('SFTPServer._process');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_server.SFTPServer-class.html#_process">_process</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-param">request_number</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SFTPServer._process-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._process-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="paramiko.auth_handler.DEBUG +</div><div id="SFTPServer._process-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SFTPServer._process-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-122" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -763,44 +765,44 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-121', 'DEBUG', 'link-37');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Request: %s'</tt> <tt class="py-op">%</tt> <tt id="link-122" class="py-name" targets="Variable paramiko.sftp.CMD_NAMES=paramiko.sftp-module.html#CMD_NAMES,Variable paramiko.sftp_attr.CMD_NAMES=paramiko.sftp_attr-module.html#CMD_NAMES,Variable paramiko.sftp_client.CMD_NAMES=paramiko.sftp_client-module.html#CMD_NAMES,Variable paramiko.sftp_file.CMD_NAMES=paramiko.sftp_file-module.html#CMD_NAMES,Variable paramiko.sftp_handle.CMD_NAMES=paramiko.sftp_handle-module.html#CMD_NAMES,Variable paramiko.sftp_server.CMD_NAMES=paramiko.sftp_server-module.html#CMD_NAMES,Variable paramiko.sftp_si.CMD_NAMES=paramiko.sftp_si-module.html#CMD_NAMES"><a title="paramiko.sftp.CMD_NAMES +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-122', 'DEBUG', 'link-37');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Request: %s'</tt> <tt class="py-op">%</tt> <tt id="link-123" class="py-name" targets="Variable paramiko.sftp.CMD_NAMES=paramiko.sftp-module.html#CMD_NAMES,Variable paramiko.sftp_attr.CMD_NAMES=paramiko.sftp_attr-module.html#CMD_NAMES,Variable paramiko.sftp_client.CMD_NAMES=paramiko.sftp_client-module.html#CMD_NAMES,Variable paramiko.sftp_file.CMD_NAMES=paramiko.sftp_file-module.html#CMD_NAMES,Variable paramiko.sftp_handle.CMD_NAMES=paramiko.sftp_handle-module.html#CMD_NAMES,Variable paramiko.sftp_server.CMD_NAMES=paramiko.sftp_server-module.html#CMD_NAMES,Variable paramiko.sftp_si.CMD_NAMES=paramiko.sftp_si-module.html#CMD_NAMES"><a title="paramiko.sftp.CMD_NAMES paramiko.sftp_attr.CMD_NAMES paramiko.sftp_client.CMD_NAMES paramiko.sftp_file.CMD_NAMES paramiko.sftp_handle.CMD_NAMES paramiko.sftp_server.CMD_NAMES -paramiko.sftp_si.CMD_NAMES" class="py-name" href="#" onclick="return doclink('link-122', 'CMD_NAMES', 'link-122');">CMD_NAMES</a></tt><tt class="py-op">[</tt><tt class="py-name">t</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-123" class="py-name" targets="Variable paramiko.sftp.CMD_OPEN=paramiko.sftp-module.html#CMD_OPEN,Variable paramiko.sftp_attr.CMD_OPEN=paramiko.sftp_attr-module.html#CMD_OPEN,Variable paramiko.sftp_client.CMD_OPEN=paramiko.sftp_client-module.html#CMD_OPEN,Variable paramiko.sftp_file.CMD_OPEN=paramiko.sftp_file-module.html#CMD_OPEN,Variable paramiko.sftp_handle.CMD_OPEN=paramiko.sftp_handle-module.html#CMD_OPEN,Variable paramiko.sftp_server.CMD_OPEN=paramiko.sftp_server-module.html#CMD_OPEN,Variable paramiko.sftp_si.CMD_OPEN=paramiko.sftp_si-module.html#CMD_OPEN"><a title="paramiko.sftp.CMD_OPEN +paramiko.sftp_si.CMD_NAMES" class="py-name" href="#" onclick="return doclink('link-123', 'CMD_NAMES', 'link-123');">CMD_NAMES</a></tt><tt class="py-op">[</tt><tt class="py-name">t</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-124" class="py-name" targets="Variable paramiko.sftp.CMD_OPEN=paramiko.sftp-module.html#CMD_OPEN,Variable paramiko.sftp_attr.CMD_OPEN=paramiko.sftp_attr-module.html#CMD_OPEN,Variable paramiko.sftp_client.CMD_OPEN=paramiko.sftp_client-module.html#CMD_OPEN,Variable paramiko.sftp_file.CMD_OPEN=paramiko.sftp_file-module.html#CMD_OPEN,Variable paramiko.sftp_handle.CMD_OPEN=paramiko.sftp_handle-module.html#CMD_OPEN,Variable paramiko.sftp_server.CMD_OPEN=paramiko.sftp_server-module.html#CMD_OPEN,Variable paramiko.sftp_si.CMD_OPEN=paramiko.sftp_si-module.html#CMD_OPEN"><a title="paramiko.sftp.CMD_OPEN paramiko.sftp_attr.CMD_OPEN paramiko.sftp_client.CMD_OPEN paramiko.sftp_file.CMD_OPEN paramiko.sftp_handle.CMD_OPEN paramiko.sftp_server.CMD_OPEN -paramiko.sftp_si.CMD_OPEN" class="py-name" href="#" onclick="return doclink('link-123', 'CMD_OPEN', 'link-123');">CMD_OPEN</a></tt><tt class="py-op">:</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-124', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_convert_pflags</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-125', 'get_int', 'link-47');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-126', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_handle_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-127', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-128', 'open', 'link-71');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-129" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE +paramiko.sftp_si.CMD_OPEN" class="py-name" href="#" onclick="return doclink('link-124', 'CMD_OPEN', 'link-124');">CMD_OPEN</a></tt><tt class="py-op">:</tt> </tt> +<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-125', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_convert_pflags</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-126', 'get_int', 'link-47');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-127', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_handle_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-128', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-129', 'open', 'link-71');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-130" class="py-name" targets="Variable paramiko.sftp.CMD_CLOSE=paramiko.sftp-module.html#CMD_CLOSE,Variable paramiko.sftp_attr.CMD_CLOSE=paramiko.sftp_attr-module.html#CMD_CLOSE,Variable paramiko.sftp_client.CMD_CLOSE=paramiko.sftp_client-module.html#CMD_CLOSE,Variable paramiko.sftp_file.CMD_CLOSE=paramiko.sftp_file-module.html#CMD_CLOSE,Variable paramiko.sftp_handle.CMD_CLOSE=paramiko.sftp_handle-module.html#CMD_CLOSE,Variable paramiko.sftp_server.CMD_CLOSE=paramiko.sftp_server-module.html#CMD_CLOSE,Variable paramiko.sftp_si.CMD_CLOSE=paramiko.sftp_si-module.html#CMD_CLOSE"><a title="paramiko.sftp.CMD_CLOSE paramiko.sftp_attr.CMD_CLOSE paramiko.sftp_client.CMD_CLOSE paramiko.sftp_file.CMD_CLOSE paramiko.sftp_handle.CMD_CLOSE paramiko.sftp_server.CMD_CLOSE -paramiko.sftp_si.CMD_CLOSE" class="py-name" href="#" onclick="return doclink('link-129', 'CMD_CLOSE', 'link-129');">CMD_CLOSE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-130', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_CLOSE" class="py-name" href="#" onclick="return doclink('link-130', 'CMD_CLOSE', 'link-130');">CMD_CLOSE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-131', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">folder_table</tt><tt class="py-op">:</tt> </tt> <a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">folder_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-131" class="py-name" targets="Variable paramiko.sftp.SFTP_OK=paramiko.sftp-module.html#SFTP_OK,Variable paramiko.sftp_attr.SFTP_OK=paramiko.sftp_attr-module.html#SFTP_OK,Variable paramiko.sftp_client.SFTP_OK=paramiko.sftp_client-module.html#SFTP_OK,Variable paramiko.sftp_file.SFTP_OK=paramiko.sftp_file-module.html#SFTP_OK,Variable paramiko.sftp_handle.SFTP_OK=paramiko.sftp_handle-module.html#SFTP_OK,Variable paramiko.sftp_server.SFTP_OK=paramiko.sftp_server-module.html#SFTP_OK,Variable paramiko.sftp_si.SFTP_OK=paramiko.sftp_si-module.html#SFTP_OK"><a title="paramiko.sftp.SFTP_OK +<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-132" class="py-name" targets="Variable paramiko.sftp.SFTP_OK=paramiko.sftp-module.html#SFTP_OK,Variable paramiko.sftp_attr.SFTP_OK=paramiko.sftp_attr-module.html#SFTP_OK,Variable paramiko.sftp_client.SFTP_OK=paramiko.sftp_client-module.html#SFTP_OK,Variable paramiko.sftp_file.SFTP_OK=paramiko.sftp_file-module.html#SFTP_OK,Variable paramiko.sftp_handle.SFTP_OK=paramiko.sftp_handle-module.html#SFTP_OK,Variable paramiko.sftp_server.SFTP_OK=paramiko.sftp_server-module.html#SFTP_OK,Variable paramiko.sftp_si.SFTP_OK=paramiko.sftp_si-module.html#SFTP_OK"><a title="paramiko.sftp.SFTP_OK paramiko.sftp_attr.SFTP_OK paramiko.sftp_client.SFTP_OK paramiko.sftp_file.SFTP_OK paramiko.sftp_handle.SFTP_OK paramiko.sftp_server.SFTP_OK -paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-131', 'SFTP_OK', 'link-131');">SFTP_OK</a></tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-132', 'SFTP_OK', 'link-132');">SFTP_OK</a></tt><tt class="py-op">)</tt> </tt> <a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">:</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.Agent.close +<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -811,336 +813,336 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-132', 'close', 'link-57');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-133', 'close', 'link-57');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="paramiko.sftp.SFTP_OK +<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name"><a title="paramiko.sftp.SFTP_OK paramiko.sftp_attr.SFTP_OK paramiko.sftp_client.SFTP_OK paramiko.sftp_file.SFTP_OK paramiko.sftp_handle.SFTP_OK paramiko.sftp_server.SFTP_OK -paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-133', 'SFTP_OK', 'link-131');">SFTP_OK</a></tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_OK" class="py-name" href="#" onclick="return doclink('link-134', 'SFTP_OK', 'link-132');">SFTP_OK</a></tt><tt class="py-op">)</tt> </tt> <a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-135" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-134', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-135" class="py-name" targets="Variable paramiko.sftp.CMD_READ=paramiko.sftp-module.html#CMD_READ,Variable paramiko.sftp_attr.CMD_READ=paramiko.sftp_attr-module.html#CMD_READ,Variable paramiko.sftp_client.CMD_READ=paramiko.sftp_client-module.html#CMD_READ,Variable paramiko.sftp_file.CMD_READ=paramiko.sftp_file-module.html#CMD_READ,Variable paramiko.sftp_handle.CMD_READ=paramiko.sftp_handle-module.html#CMD_READ,Variable paramiko.sftp_server.CMD_READ=paramiko.sftp_server-module.html#CMD_READ,Variable paramiko.sftp_si.CMD_READ=paramiko.sftp_si-module.html#CMD_READ"><a title="paramiko.sftp.CMD_READ +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-135', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-136" class="py-name" targets="Variable paramiko.sftp.CMD_READ=paramiko.sftp-module.html#CMD_READ,Variable paramiko.sftp_attr.CMD_READ=paramiko.sftp_attr-module.html#CMD_READ,Variable paramiko.sftp_client.CMD_READ=paramiko.sftp_client-module.html#CMD_READ,Variable paramiko.sftp_file.CMD_READ=paramiko.sftp_file-module.html#CMD_READ,Variable paramiko.sftp_handle.CMD_READ=paramiko.sftp_handle-module.html#CMD_READ,Variable paramiko.sftp_server.CMD_READ=paramiko.sftp_server-module.html#CMD_READ,Variable paramiko.sftp_si.CMD_READ=paramiko.sftp_si-module.html#CMD_READ"><a title="paramiko.sftp.CMD_READ paramiko.sftp_attr.CMD_READ paramiko.sftp_client.CMD_READ paramiko.sftp_file.CMD_READ paramiko.sftp_handle.CMD_READ paramiko.sftp_server.CMD_READ -paramiko.sftp_si.CMD_READ" class="py-name" href="#" onclick="return doclink('link-135', 'CMD_READ', 'link-135');">CMD_READ</a></tt><tt class="py-op">:</tt> </tt> -<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-136', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-137', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">length</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-138', 'get_int', 'link-47');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_READ" class="py-name" href="#" onclick="return doclink('link-136', 'CMD_READ', 'link-136');">CMD_READ</a></tt><tt class="py-op">:</tt> </tt> +<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-137', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-138', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">length</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-139', 'get_int', 'link-47');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">:</tt> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-139" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-139', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-140', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> <a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="paramiko.BufferedFile.read +<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="paramiko.BufferedFile.read paramiko.SFTPHandle.read -paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-140', 'read', 'link-107');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">length</tt><tt class="py-op">)</tt> </tt> +paramiko.buffered_pipe.BufferedPipe.read" class="py-name" href="#" onclick="return doclink('link-141', 'read', 'link-108');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">length</tt><tt class="py-op">)</tt> </tt> <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> <a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-141" class="py-name"><a title="paramiko.sftp.SFTP_EOF +<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-142" class="py-name"><a title="paramiko.sftp.SFTP_EOF paramiko.sftp_attr.SFTP_EOF paramiko.sftp_client.SFTP_EOF paramiko.sftp_file.SFTP_EOF paramiko.sftp_handle.SFTP_EOF paramiko.sftp_server.SFTP_EOF -paramiko.sftp_si.SFTP_EOF" class="py-name" href="#" onclick="return doclink('link-141', 'SFTP_EOF', 'link-88');">SFTP_EOF</a></tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_EOF" class="py-name" href="#" onclick="return doclink('link-142', 'SFTP_EOF', 'link-88');">SFTP_EOF</a></tt><tt class="py-op">)</tt> </tt> <a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-142" class="py-name" targets="Variable paramiko.sftp.CMD_DATA=paramiko.sftp-module.html#CMD_DATA,Variable paramiko.sftp_attr.CMD_DATA=paramiko.sftp_attr-module.html#CMD_DATA,Variable paramiko.sftp_client.CMD_DATA=paramiko.sftp_client-module.html#CMD_DATA,Variable paramiko.sftp_file.CMD_DATA=paramiko.sftp_file-module.html#CMD_DATA,Variable paramiko.sftp_handle.CMD_DATA=paramiko.sftp_handle-module.html#CMD_DATA,Variable paramiko.sftp_server.CMD_DATA=paramiko.sftp_server-module.html#CMD_DATA,Variable paramiko.sftp_si.CMD_DATA=paramiko.sftp_si-module.html#CMD_DATA"><a title="paramiko.sftp.CMD_DATA +<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-143" class="py-name" targets="Variable paramiko.sftp.CMD_DATA=paramiko.sftp-module.html#CMD_DATA,Variable paramiko.sftp_attr.CMD_DATA=paramiko.sftp_attr-module.html#CMD_DATA,Variable paramiko.sftp_client.CMD_DATA=paramiko.sftp_client-module.html#CMD_DATA,Variable paramiko.sftp_file.CMD_DATA=paramiko.sftp_file-module.html#CMD_DATA,Variable paramiko.sftp_handle.CMD_DATA=paramiko.sftp_handle-module.html#CMD_DATA,Variable paramiko.sftp_server.CMD_DATA=paramiko.sftp_server-module.html#CMD_DATA,Variable paramiko.sftp_si.CMD_DATA=paramiko.sftp_si-module.html#CMD_DATA"><a title="paramiko.sftp.CMD_DATA paramiko.sftp_attr.CMD_DATA paramiko.sftp_client.CMD_DATA paramiko.sftp_file.CMD_DATA paramiko.sftp_handle.CMD_DATA paramiko.sftp_server.CMD_DATA -paramiko.sftp_si.CMD_DATA" class="py-name" href="#" onclick="return doclink('link-142', 'CMD_DATA', 'link-142');">CMD_DATA</a></tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_DATA" class="py-name" href="#" onclick="return doclink('link-143', 'CMD_DATA', 'link-143');">CMD_DATA</a></tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> <a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-143" class="py-name" targets="Variable paramiko.sftp.CMD_WRITE=paramiko.sftp-module.html#CMD_WRITE,Variable paramiko.sftp_attr.CMD_WRITE=paramiko.sftp_attr-module.html#CMD_WRITE,Variable paramiko.sftp_client.CMD_WRITE=paramiko.sftp_client-module.html#CMD_WRITE,Variable paramiko.sftp_file.CMD_WRITE=paramiko.sftp_file-module.html#CMD_WRITE,Variable paramiko.sftp_handle.CMD_WRITE=paramiko.sftp_handle-module.html#CMD_WRITE,Variable paramiko.sftp_server.CMD_WRITE=paramiko.sftp_server-module.html#CMD_WRITE,Variable paramiko.sftp_si.CMD_WRITE=paramiko.sftp_si-module.html#CMD_WRITE"><a title="paramiko.sftp.CMD_WRITE +<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-144" class="py-name" targets="Variable paramiko.sftp.CMD_WRITE=paramiko.sftp-module.html#CMD_WRITE,Variable paramiko.sftp_attr.CMD_WRITE=paramiko.sftp_attr-module.html#CMD_WRITE,Variable paramiko.sftp_client.CMD_WRITE=paramiko.sftp_client-module.html#CMD_WRITE,Variable paramiko.sftp_file.CMD_WRITE=paramiko.sftp_file-module.html#CMD_WRITE,Variable paramiko.sftp_handle.CMD_WRITE=paramiko.sftp_handle-module.html#CMD_WRITE,Variable paramiko.sftp_server.CMD_WRITE=paramiko.sftp_server-module.html#CMD_WRITE,Variable paramiko.sftp_si.CMD_WRITE=paramiko.sftp_si-module.html#CMD_WRITE"><a title="paramiko.sftp.CMD_WRITE paramiko.sftp_attr.CMD_WRITE paramiko.sftp_client.CMD_WRITE paramiko.sftp_file.CMD_WRITE paramiko.sftp_handle.CMD_WRITE paramiko.sftp_server.CMD_WRITE -paramiko.sftp_si.CMD_WRITE" class="py-name" href="#" onclick="return doclink('link-143', 'CMD_WRITE', 'link-143');">CMD_WRITE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-144', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-145', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-146', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_WRITE" class="py-name" href="#" onclick="return doclink('link-144', 'CMD_WRITE', 'link-144');">CMD_WRITE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-145', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.Message.get_int64" class="py-name" href="#" onclick="return doclink('link-146', 'get_int64', 'link-97');">get_int64</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-147', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">:</tt> </tt> -<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-148" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-147', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-148', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> <a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write -paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-148', 'write', 'link-148');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-149" class="py-name" targets="Variable paramiko.sftp.CMD_REMOVE=paramiko.sftp-module.html#CMD_REMOVE,Variable paramiko.sftp_attr.CMD_REMOVE=paramiko.sftp_attr-module.html#CMD_REMOVE,Variable paramiko.sftp_client.CMD_REMOVE=paramiko.sftp_client-module.html#CMD_REMOVE,Variable paramiko.sftp_file.CMD_REMOVE=paramiko.sftp_file-module.html#CMD_REMOVE,Variable paramiko.sftp_handle.CMD_REMOVE=paramiko.sftp_handle-module.html#CMD_REMOVE,Variable paramiko.sftp_server.CMD_REMOVE=paramiko.sftp_server-module.html#CMD_REMOVE,Variable paramiko.sftp_si.CMD_REMOVE=paramiko.sftp_si-module.html#CMD_REMOVE"><a title="paramiko.sftp.CMD_REMOVE +<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write +paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-149', 'write', 'link-149');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-150" class="py-name" targets="Variable paramiko.sftp.CMD_REMOVE=paramiko.sftp-module.html#CMD_REMOVE,Variable paramiko.sftp_attr.CMD_REMOVE=paramiko.sftp_attr-module.html#CMD_REMOVE,Variable paramiko.sftp_client.CMD_REMOVE=paramiko.sftp_client-module.html#CMD_REMOVE,Variable paramiko.sftp_file.CMD_REMOVE=paramiko.sftp_file-module.html#CMD_REMOVE,Variable paramiko.sftp_handle.CMD_REMOVE=paramiko.sftp_handle-module.html#CMD_REMOVE,Variable paramiko.sftp_server.CMD_REMOVE=paramiko.sftp_server-module.html#CMD_REMOVE,Variable paramiko.sftp_si.CMD_REMOVE=paramiko.sftp_si-module.html#CMD_REMOVE"><a title="paramiko.sftp.CMD_REMOVE paramiko.sftp_attr.CMD_REMOVE paramiko.sftp_client.CMD_REMOVE paramiko.sftp_file.CMD_REMOVE paramiko.sftp_handle.CMD_REMOVE paramiko.sftp_server.CMD_REMOVE -paramiko.sftp_si.CMD_REMOVE" class="py-name" href="#" onclick="return doclink('link-149', 'CMD_REMOVE', 'link-149');">CMD_REMOVE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-150', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-151', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-152', 'remove', 'link-152');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-153" class="py-name" targets="Variable paramiko.sftp.CMD_RENAME=paramiko.sftp-module.html#CMD_RENAME,Variable paramiko.sftp_attr.CMD_RENAME=paramiko.sftp_attr-module.html#CMD_RENAME,Variable paramiko.sftp_client.CMD_RENAME=paramiko.sftp_client-module.html#CMD_RENAME,Variable paramiko.sftp_file.CMD_RENAME=paramiko.sftp_file-module.html#CMD_RENAME,Variable paramiko.sftp_handle.CMD_RENAME=paramiko.sftp_handle-module.html#CMD_RENAME,Variable paramiko.sftp_server.CMD_RENAME=paramiko.sftp_server-module.html#CMD_RENAME,Variable paramiko.sftp_si.CMD_RENAME=paramiko.sftp_si-module.html#CMD_RENAME"><a title="paramiko.sftp.CMD_RENAME +paramiko.sftp_si.CMD_REMOVE" class="py-name" href="#" onclick="return doclink('link-150', 'CMD_REMOVE', 'link-150');">CMD_REMOVE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-151', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-152', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-153', 'remove', 'link-153');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-154" class="py-name" targets="Variable paramiko.sftp.CMD_RENAME=paramiko.sftp-module.html#CMD_RENAME,Variable paramiko.sftp_attr.CMD_RENAME=paramiko.sftp_attr-module.html#CMD_RENAME,Variable paramiko.sftp_client.CMD_RENAME=paramiko.sftp_client-module.html#CMD_RENAME,Variable paramiko.sftp_file.CMD_RENAME=paramiko.sftp_file-module.html#CMD_RENAME,Variable paramiko.sftp_handle.CMD_RENAME=paramiko.sftp_handle-module.html#CMD_RENAME,Variable paramiko.sftp_server.CMD_RENAME=paramiko.sftp_server-module.html#CMD_RENAME,Variable paramiko.sftp_si.CMD_RENAME=paramiko.sftp_si-module.html#CMD_RENAME"><a title="paramiko.sftp.CMD_RENAME paramiko.sftp_attr.CMD_RENAME paramiko.sftp_client.CMD_RENAME paramiko.sftp_file.CMD_RENAME paramiko.sftp_handle.CMD_RENAME paramiko.sftp_server.CMD_RENAME -paramiko.sftp_si.CMD_RENAME" class="py-name" href="#" onclick="return doclink('link-153', 'CMD_RENAME', 'link-153');">CMD_RENAME</a></tt><tt class="py-op">:</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">oldpath</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-154', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">newpath</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-155', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-156', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method paramiko.SFTPClient.rename()=paramiko.SFTPClient-class.html#rename,Method paramiko.SFTPServerInterface.rename()=paramiko.SFTPServerInterface-class.html#rename"><a title="paramiko.SFTPClient.rename -paramiko.SFTPServerInterface.rename" class="py-name" href="#" onclick="return doclink('link-157', 'rename', 'link-157');">rename</a></tt><tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-158" class="py-name" targets="Variable paramiko.sftp.CMD_MKDIR=paramiko.sftp-module.html#CMD_MKDIR,Variable paramiko.sftp_attr.CMD_MKDIR=paramiko.sftp_attr-module.html#CMD_MKDIR,Variable paramiko.sftp_client.CMD_MKDIR=paramiko.sftp_client-module.html#CMD_MKDIR,Variable paramiko.sftp_file.CMD_MKDIR=paramiko.sftp_file-module.html#CMD_MKDIR,Variable paramiko.sftp_handle.CMD_MKDIR=paramiko.sftp_handle-module.html#CMD_MKDIR,Variable paramiko.sftp_server.CMD_MKDIR=paramiko.sftp_server-module.html#CMD_MKDIR,Variable paramiko.sftp_si.CMD_MKDIR=paramiko.sftp_si-module.html#CMD_MKDIR"><a title="paramiko.sftp.CMD_MKDIR +paramiko.sftp_si.CMD_RENAME" class="py-name" href="#" onclick="return doclink('link-154', 'CMD_RENAME', 'link-154');">CMD_RENAME</a></tt><tt class="py-op">:</tt> </tt> +<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">oldpath</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-155', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">newpath</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-156', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-157', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method paramiko.SFTPClient.rename()=paramiko.SFTPClient-class.html#rename,Method paramiko.SFTPServerInterface.rename()=paramiko.SFTPServerInterface-class.html#rename"><a title="paramiko.SFTPClient.rename +paramiko.SFTPServerInterface.rename" class="py-name" href="#" onclick="return doclink('link-158', 'rename', 'link-158');">rename</a></tt><tt class="py-op">(</tt><tt class="py-name">oldpath</tt><tt class="py-op">,</tt> <tt class="py-name">newpath</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-159" class="py-name" targets="Variable paramiko.sftp.CMD_MKDIR=paramiko.sftp-module.html#CMD_MKDIR,Variable paramiko.sftp_attr.CMD_MKDIR=paramiko.sftp_attr-module.html#CMD_MKDIR,Variable paramiko.sftp_client.CMD_MKDIR=paramiko.sftp_client-module.html#CMD_MKDIR,Variable paramiko.sftp_file.CMD_MKDIR=paramiko.sftp_file-module.html#CMD_MKDIR,Variable paramiko.sftp_handle.CMD_MKDIR=paramiko.sftp_handle-module.html#CMD_MKDIR,Variable paramiko.sftp_server.CMD_MKDIR=paramiko.sftp_server-module.html#CMD_MKDIR,Variable paramiko.sftp_si.CMD_MKDIR=paramiko.sftp_si-module.html#CMD_MKDIR"><a title="paramiko.sftp.CMD_MKDIR paramiko.sftp_attr.CMD_MKDIR paramiko.sftp_client.CMD_MKDIR paramiko.sftp_file.CMD_MKDIR paramiko.sftp_handle.CMD_MKDIR paramiko.sftp_server.CMD_MKDIR -paramiko.sftp_si.CMD_MKDIR" class="py-name" href="#" onclick="return doclink('link-158', 'CMD_MKDIR', 'link-158');">CMD_MKDIR</a></tt><tt class="py-op">:</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-159', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-160', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-161', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Method paramiko.SFTPClient.mkdir()=paramiko.SFTPClient-class.html#mkdir,Method paramiko.SFTPServerInterface.mkdir()=paramiko.SFTPServerInterface-class.html#mkdir"><a title="paramiko.SFTPClient.mkdir -paramiko.SFTPServerInterface.mkdir" class="py-name" href="#" onclick="return doclink('link-162', 'mkdir', 'link-162');">mkdir</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-163" class="py-name" targets="Variable paramiko.sftp.CMD_RMDIR=paramiko.sftp-module.html#CMD_RMDIR,Variable paramiko.sftp_attr.CMD_RMDIR=paramiko.sftp_attr-module.html#CMD_RMDIR,Variable paramiko.sftp_client.CMD_RMDIR=paramiko.sftp_client-module.html#CMD_RMDIR,Variable paramiko.sftp_file.CMD_RMDIR=paramiko.sftp_file-module.html#CMD_RMDIR,Variable paramiko.sftp_handle.CMD_RMDIR=paramiko.sftp_handle-module.html#CMD_RMDIR,Variable paramiko.sftp_server.CMD_RMDIR=paramiko.sftp_server-module.html#CMD_RMDIR,Variable paramiko.sftp_si.CMD_RMDIR=paramiko.sftp_si-module.html#CMD_RMDIR"><a title="paramiko.sftp.CMD_RMDIR +paramiko.sftp_si.CMD_MKDIR" class="py-name" href="#" onclick="return doclink('link-159', 'CMD_MKDIR', 'link-159');">CMD_MKDIR</a></tt><tt class="py-op">:</tt> </tt> +<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-160', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-161', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-162', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name" targets="Method paramiko.SFTPClient.mkdir()=paramiko.SFTPClient-class.html#mkdir,Method paramiko.SFTPServerInterface.mkdir()=paramiko.SFTPServerInterface-class.html#mkdir"><a title="paramiko.SFTPClient.mkdir +paramiko.SFTPServerInterface.mkdir" class="py-name" href="#" onclick="return doclink('link-163', 'mkdir', 'link-163');">mkdir</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-164" class="py-name" targets="Variable paramiko.sftp.CMD_RMDIR=paramiko.sftp-module.html#CMD_RMDIR,Variable paramiko.sftp_attr.CMD_RMDIR=paramiko.sftp_attr-module.html#CMD_RMDIR,Variable paramiko.sftp_client.CMD_RMDIR=paramiko.sftp_client-module.html#CMD_RMDIR,Variable paramiko.sftp_file.CMD_RMDIR=paramiko.sftp_file-module.html#CMD_RMDIR,Variable paramiko.sftp_handle.CMD_RMDIR=paramiko.sftp_handle-module.html#CMD_RMDIR,Variable paramiko.sftp_server.CMD_RMDIR=paramiko.sftp_server-module.html#CMD_RMDIR,Variable paramiko.sftp_si.CMD_RMDIR=paramiko.sftp_si-module.html#CMD_RMDIR"><a title="paramiko.sftp.CMD_RMDIR paramiko.sftp_attr.CMD_RMDIR paramiko.sftp_client.CMD_RMDIR paramiko.sftp_file.CMD_RMDIR paramiko.sftp_handle.CMD_RMDIR paramiko.sftp_server.CMD_RMDIR -paramiko.sftp_si.CMD_RMDIR" class="py-name" href="#" onclick="return doclink('link-163', 'CMD_RMDIR', 'link-163');">CMD_RMDIR</a></tt><tt class="py-op">:</tt> </tt> -<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-164', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-165', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method paramiko.SFTPClient.rmdir()=paramiko.SFTPClient-class.html#rmdir,Method paramiko.SFTPServerInterface.rmdir()=paramiko.SFTPServerInterface-class.html#rmdir"><a title="paramiko.SFTPClient.rmdir -paramiko.SFTPServerInterface.rmdir" class="py-name" href="#" onclick="return doclink('link-166', 'rmdir', 'link-166');">rmdir</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-167" class="py-name" targets="Variable paramiko.sftp.CMD_OPENDIR=paramiko.sftp-module.html#CMD_OPENDIR,Variable paramiko.sftp_attr.CMD_OPENDIR=paramiko.sftp_attr-module.html#CMD_OPENDIR,Variable paramiko.sftp_client.CMD_OPENDIR=paramiko.sftp_client-module.html#CMD_OPENDIR,Variable paramiko.sftp_file.CMD_OPENDIR=paramiko.sftp_file-module.html#CMD_OPENDIR,Variable paramiko.sftp_handle.CMD_OPENDIR=paramiko.sftp_handle-module.html#CMD_OPENDIR,Variable paramiko.sftp_server.CMD_OPENDIR=paramiko.sftp_server-module.html#CMD_OPENDIR,Variable paramiko.sftp_si.CMD_OPENDIR=paramiko.sftp_si-module.html#CMD_OPENDIR"><a title="paramiko.sftp.CMD_OPENDIR +paramiko.sftp_si.CMD_RMDIR" class="py-name" href="#" onclick="return doclink('link-164', 'CMD_RMDIR', 'link-164');">CMD_RMDIR</a></tt><tt class="py-op">:</tt> </tt> +<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-165', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-166', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Method paramiko.SFTPClient.rmdir()=paramiko.SFTPClient-class.html#rmdir,Method paramiko.SFTPServerInterface.rmdir()=paramiko.SFTPServerInterface-class.html#rmdir"><a title="paramiko.SFTPClient.rmdir +paramiko.SFTPServerInterface.rmdir" class="py-name" href="#" onclick="return doclink('link-167', 'rmdir', 'link-167');">rmdir</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-168" class="py-name" targets="Variable paramiko.sftp.CMD_OPENDIR=paramiko.sftp-module.html#CMD_OPENDIR,Variable paramiko.sftp_attr.CMD_OPENDIR=paramiko.sftp_attr-module.html#CMD_OPENDIR,Variable paramiko.sftp_client.CMD_OPENDIR=paramiko.sftp_client-module.html#CMD_OPENDIR,Variable paramiko.sftp_file.CMD_OPENDIR=paramiko.sftp_file-module.html#CMD_OPENDIR,Variable paramiko.sftp_handle.CMD_OPENDIR=paramiko.sftp_handle-module.html#CMD_OPENDIR,Variable paramiko.sftp_server.CMD_OPENDIR=paramiko.sftp_server-module.html#CMD_OPENDIR,Variable paramiko.sftp_si.CMD_OPENDIR=paramiko.sftp_si-module.html#CMD_OPENDIR"><a title="paramiko.sftp.CMD_OPENDIR paramiko.sftp_attr.CMD_OPENDIR paramiko.sftp_client.CMD_OPENDIR paramiko.sftp_file.CMD_OPENDIR paramiko.sftp_handle.CMD_OPENDIR paramiko.sftp_server.CMD_OPENDIR -paramiko.sftp_si.CMD_OPENDIR" class="py-name" href="#" onclick="return doclink('link-167', 'CMD_OPENDIR', 'link-167');">CMD_OPENDIR</a></tt><tt class="py-op">:</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-168', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_OPENDIR" class="py-name" href="#" onclick="return doclink('link-168', 'CMD_OPENDIR', 'link-168');">CMD_OPENDIR</a></tt><tt class="py-op">:</tt> </tt> +<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-169', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_open_folder</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> <a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-169" class="py-name" targets="Variable paramiko.sftp.CMD_READDIR=paramiko.sftp-module.html#CMD_READDIR,Variable paramiko.sftp_attr.CMD_READDIR=paramiko.sftp_attr-module.html#CMD_READDIR,Variable paramiko.sftp_client.CMD_READDIR=paramiko.sftp_client-module.html#CMD_READDIR,Variable paramiko.sftp_file.CMD_READDIR=paramiko.sftp_file-module.html#CMD_READDIR,Variable paramiko.sftp_handle.CMD_READDIR=paramiko.sftp_handle-module.html#CMD_READDIR,Variable paramiko.sftp_server.CMD_READDIR=paramiko.sftp_server-module.html#CMD_READDIR,Variable paramiko.sftp_si.CMD_READDIR=paramiko.sftp_si-module.html#CMD_READDIR"><a title="paramiko.sftp.CMD_READDIR +<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-170" class="py-name" targets="Variable paramiko.sftp.CMD_READDIR=paramiko.sftp-module.html#CMD_READDIR,Variable paramiko.sftp_attr.CMD_READDIR=paramiko.sftp_attr-module.html#CMD_READDIR,Variable paramiko.sftp_client.CMD_READDIR=paramiko.sftp_client-module.html#CMD_READDIR,Variable paramiko.sftp_file.CMD_READDIR=paramiko.sftp_file-module.html#CMD_READDIR,Variable paramiko.sftp_handle.CMD_READDIR=paramiko.sftp_handle-module.html#CMD_READDIR,Variable paramiko.sftp_server.CMD_READDIR=paramiko.sftp_server-module.html#CMD_READDIR,Variable paramiko.sftp_si.CMD_READDIR=paramiko.sftp_si-module.html#CMD_READDIR"><a title="paramiko.sftp.CMD_READDIR paramiko.sftp_attr.CMD_READDIR paramiko.sftp_client.CMD_READDIR paramiko.sftp_file.CMD_READDIR paramiko.sftp_handle.CMD_READDIR paramiko.sftp_server.CMD_READDIR -paramiko.sftp_si.CMD_READDIR" class="py-name" href="#" onclick="return doclink('link-169', 'CMD_READDIR', 'link-169');">CMD_READDIR</a></tt><tt class="py-op">:</tt> </tt> -<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-170', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_READDIR" class="py-name" href="#" onclick="return doclink('link-170', 'CMD_READDIR', 'link-170');">CMD_READDIR</a></tt><tt class="py-op">:</tt> </tt> +<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-171', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">folder_table</tt><tt class="py-op">:</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-171" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-172" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-171', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-172', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> <a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> <a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">folder</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">folder_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt> </tt> <a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_folder</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">folder</tt><tt class="py-op">)</tt> </tt> -<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-172" class="py-name" targets="Variable paramiko.sftp.CMD_STAT=paramiko.sftp-module.html#CMD_STAT,Variable paramiko.sftp_attr.CMD_STAT=paramiko.sftp_attr-module.html#CMD_STAT,Variable paramiko.sftp_client.CMD_STAT=paramiko.sftp_client-module.html#CMD_STAT,Variable paramiko.sftp_file.CMD_STAT=paramiko.sftp_file-module.html#CMD_STAT,Variable paramiko.sftp_handle.CMD_STAT=paramiko.sftp_handle-module.html#CMD_STAT,Variable paramiko.sftp_server.CMD_STAT=paramiko.sftp_server-module.html#CMD_STAT,Variable paramiko.sftp_si.CMD_STAT=paramiko.sftp_si-module.html#CMD_STAT"><a title="paramiko.sftp.CMD_STAT +<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-173" class="py-name" targets="Variable paramiko.sftp.CMD_STAT=paramiko.sftp-module.html#CMD_STAT,Variable paramiko.sftp_attr.CMD_STAT=paramiko.sftp_attr-module.html#CMD_STAT,Variable paramiko.sftp_client.CMD_STAT=paramiko.sftp_client-module.html#CMD_STAT,Variable paramiko.sftp_file.CMD_STAT=paramiko.sftp_file-module.html#CMD_STAT,Variable paramiko.sftp_handle.CMD_STAT=paramiko.sftp_handle-module.html#CMD_STAT,Variable paramiko.sftp_server.CMD_STAT=paramiko.sftp_server-module.html#CMD_STAT,Variable paramiko.sftp_si.CMD_STAT=paramiko.sftp_si-module.html#CMD_STAT"><a title="paramiko.sftp.CMD_STAT paramiko.sftp_attr.CMD_STAT paramiko.sftp_client.CMD_STAT paramiko.sftp_file.CMD_STAT paramiko.sftp_handle.CMD_STAT paramiko.sftp_server.CMD_STAT -paramiko.sftp_si.CMD_STAT" class="py-name" href="#" onclick="return doclink('link-172', 'CMD_STAT', 'link-172');">CMD_STAT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-173', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-174', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.SFTPClient.stat +paramiko.sftp_si.CMD_STAT" class="py-name" href="#" onclick="return doclink('link-173', 'CMD_STAT', 'link-173');">CMD_STAT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-174', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-175', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-175', 'stat', 'link-104');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-176" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-176', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-177" class="py-name" targets="Variable paramiko.sftp.CMD_ATTRS=paramiko.sftp-module.html#CMD_ATTRS,Variable paramiko.sftp_attr.CMD_ATTRS=paramiko.sftp_attr-module.html#CMD_ATTRS,Variable paramiko.sftp_client.CMD_ATTRS=paramiko.sftp_client-module.html#CMD_ATTRS,Variable paramiko.sftp_file.CMD_ATTRS=paramiko.sftp_file-module.html#CMD_ATTRS,Variable paramiko.sftp_handle.CMD_ATTRS=paramiko.sftp_handle-module.html#CMD_ATTRS,Variable paramiko.sftp_server.CMD_ATTRS=paramiko.sftp_server-module.html#CMD_ATTRS,Variable paramiko.sftp_si.CMD_ATTRS=paramiko.sftp_si-module.html#CMD_ATTRS"><a title="paramiko.sftp.CMD_ATTRS +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-176', 'stat', 'link-104');">stat</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-177" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-177', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-178" class="py-name" targets="Variable paramiko.sftp.CMD_ATTRS=paramiko.sftp-module.html#CMD_ATTRS,Variable paramiko.sftp_attr.CMD_ATTRS=paramiko.sftp_attr-module.html#CMD_ATTRS,Variable paramiko.sftp_client.CMD_ATTRS=paramiko.sftp_client-module.html#CMD_ATTRS,Variable paramiko.sftp_file.CMD_ATTRS=paramiko.sftp_file-module.html#CMD_ATTRS,Variable paramiko.sftp_handle.CMD_ATTRS=paramiko.sftp_handle-module.html#CMD_ATTRS,Variable paramiko.sftp_server.CMD_ATTRS=paramiko.sftp_server-module.html#CMD_ATTRS,Variable paramiko.sftp_si.CMD_ATTRS=paramiko.sftp_si-module.html#CMD_ATTRS"><a title="paramiko.sftp.CMD_ATTRS paramiko.sftp_attr.CMD_ATTRS paramiko.sftp_client.CMD_ATTRS paramiko.sftp_file.CMD_ATTRS paramiko.sftp_handle.CMD_ATTRS paramiko.sftp_server.CMD_ATTRS -paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-177', 'CMD_ATTRS', 'link-177');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-178', 'CMD_ATTRS', 'link-178');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> <a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> -<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-178" class="py-name" targets="Variable paramiko.sftp.CMD_LSTAT=paramiko.sftp-module.html#CMD_LSTAT,Variable paramiko.sftp_attr.CMD_LSTAT=paramiko.sftp_attr-module.html#CMD_LSTAT,Variable paramiko.sftp_client.CMD_LSTAT=paramiko.sftp_client-module.html#CMD_LSTAT,Variable paramiko.sftp_file.CMD_LSTAT=paramiko.sftp_file-module.html#CMD_LSTAT,Variable paramiko.sftp_handle.CMD_LSTAT=paramiko.sftp_handle-module.html#CMD_LSTAT,Variable paramiko.sftp_server.CMD_LSTAT=paramiko.sftp_server-module.html#CMD_LSTAT,Variable paramiko.sftp_si.CMD_LSTAT=paramiko.sftp_si-module.html#CMD_LSTAT"><a title="paramiko.sftp.CMD_LSTAT +<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-179" class="py-name" targets="Variable paramiko.sftp.CMD_LSTAT=paramiko.sftp-module.html#CMD_LSTAT,Variable paramiko.sftp_attr.CMD_LSTAT=paramiko.sftp_attr-module.html#CMD_LSTAT,Variable paramiko.sftp_client.CMD_LSTAT=paramiko.sftp_client-module.html#CMD_LSTAT,Variable paramiko.sftp_file.CMD_LSTAT=paramiko.sftp_file-module.html#CMD_LSTAT,Variable paramiko.sftp_handle.CMD_LSTAT=paramiko.sftp_handle-module.html#CMD_LSTAT,Variable paramiko.sftp_server.CMD_LSTAT=paramiko.sftp_server-module.html#CMD_LSTAT,Variable paramiko.sftp_si.CMD_LSTAT=paramiko.sftp_si-module.html#CMD_LSTAT"><a title="paramiko.sftp.CMD_LSTAT paramiko.sftp_attr.CMD_LSTAT paramiko.sftp_client.CMD_LSTAT paramiko.sftp_file.CMD_LSTAT paramiko.sftp_handle.CMD_LSTAT paramiko.sftp_server.CMD_LSTAT -paramiko.sftp_si.CMD_LSTAT" class="py-name" href="#" onclick="return doclink('link-178', 'CMD_LSTAT', 'link-178');">CMD_LSTAT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-179', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-180', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method paramiko.SFTPClient.lstat()=paramiko.SFTPClient-class.html#lstat,Method paramiko.SFTPServerInterface.lstat()=paramiko.SFTPServerInterface-class.html#lstat"><a title="paramiko.SFTPClient.lstat -paramiko.SFTPServerInterface.lstat" class="py-name" href="#" onclick="return doclink('link-181', 'lstat', 'link-181');">lstat</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-182" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-182', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-183" class="py-name"><a title="paramiko.sftp.CMD_ATTRS +paramiko.sftp_si.CMD_LSTAT" class="py-name" href="#" onclick="return doclink('link-179', 'CMD_LSTAT', 'link-179');">CMD_LSTAT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-180', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-181', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method paramiko.SFTPClient.lstat()=paramiko.SFTPClient-class.html#lstat,Method paramiko.SFTPServerInterface.lstat()=paramiko.SFTPServerInterface-class.html#lstat"><a title="paramiko.SFTPClient.lstat +paramiko.SFTPServerInterface.lstat" class="py-name" href="#" onclick="return doclink('link-182', 'lstat', 'link-182');">lstat</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-183" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-183', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="paramiko.sftp.CMD_ATTRS paramiko.sftp_attr.CMD_ATTRS paramiko.sftp_client.CMD_ATTRS paramiko.sftp_file.CMD_ATTRS paramiko.sftp_handle.CMD_ATTRS paramiko.sftp_server.CMD_ATTRS -paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-183', 'CMD_ATTRS', 'link-177');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-184', 'CMD_ATTRS', 'link-178');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> <a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> -<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-184" class="py-name" targets="Variable paramiko.sftp.CMD_FSTAT=paramiko.sftp-module.html#CMD_FSTAT,Variable paramiko.sftp_attr.CMD_FSTAT=paramiko.sftp_attr-module.html#CMD_FSTAT,Variable paramiko.sftp_client.CMD_FSTAT=paramiko.sftp_client-module.html#CMD_FSTAT,Variable paramiko.sftp_file.CMD_FSTAT=paramiko.sftp_file-module.html#CMD_FSTAT,Variable paramiko.sftp_handle.CMD_FSTAT=paramiko.sftp_handle-module.html#CMD_FSTAT,Variable paramiko.sftp_server.CMD_FSTAT=paramiko.sftp_server-module.html#CMD_FSTAT,Variable paramiko.sftp_si.CMD_FSTAT=paramiko.sftp_si-module.html#CMD_FSTAT"><a title="paramiko.sftp.CMD_FSTAT +<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-185" class="py-name" targets="Variable paramiko.sftp.CMD_FSTAT=paramiko.sftp-module.html#CMD_FSTAT,Variable paramiko.sftp_attr.CMD_FSTAT=paramiko.sftp_attr-module.html#CMD_FSTAT,Variable paramiko.sftp_client.CMD_FSTAT=paramiko.sftp_client-module.html#CMD_FSTAT,Variable paramiko.sftp_file.CMD_FSTAT=paramiko.sftp_file-module.html#CMD_FSTAT,Variable paramiko.sftp_handle.CMD_FSTAT=paramiko.sftp_handle-module.html#CMD_FSTAT,Variable paramiko.sftp_server.CMD_FSTAT=paramiko.sftp_server-module.html#CMD_FSTAT,Variable paramiko.sftp_si.CMD_FSTAT=paramiko.sftp_si-module.html#CMD_FSTAT"><a title="paramiko.sftp.CMD_FSTAT paramiko.sftp_attr.CMD_FSTAT paramiko.sftp_client.CMD_FSTAT paramiko.sftp_file.CMD_FSTAT paramiko.sftp_handle.CMD_FSTAT paramiko.sftp_server.CMD_FSTAT -paramiko.sftp_si.CMD_FSTAT" class="py-name" href="#" onclick="return doclink('link-184', 'CMD_FSTAT', 'link-184');">CMD_FSTAT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-185', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_FSTAT" class="py-name" href="#" onclick="return doclink('link-185', 'CMD_FSTAT', 'link-185');">CMD_FSTAT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-186', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">:</tt> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-186" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-187" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-186', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-187', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> <a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="paramiko.SFTPClient.stat +<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="paramiko.SFTPClient.stat paramiko.SFTPFile.stat paramiko.SFTPHandle.stat -paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-187', 'stat', 'link-104');">stat</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-188" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-188', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-189" class="py-name"><a title="paramiko.sftp.CMD_ATTRS +paramiko.SFTPServerInterface.stat" class="py-name" href="#" onclick="return doclink('link-188', 'stat', 'link-104');">stat</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-189" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-189', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-190" class="py-name"><a title="paramiko.sftp.CMD_ATTRS paramiko.sftp_attr.CMD_ATTRS paramiko.sftp_client.CMD_ATTRS paramiko.sftp_file.CMD_ATTRS paramiko.sftp_handle.CMD_ATTRS paramiko.sftp_server.CMD_ATTRS -paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-189', 'CMD_ATTRS', 'link-177');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_ATTRS" class="py-name" href="#" onclick="return doclink('link-190', 'CMD_ATTRS', 'link-178');">CMD_ATTRS</a></tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> <a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> -<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-190" class="py-name" targets="Variable paramiko.sftp.CMD_SETSTAT=paramiko.sftp-module.html#CMD_SETSTAT,Variable paramiko.sftp_attr.CMD_SETSTAT=paramiko.sftp_attr-module.html#CMD_SETSTAT,Variable paramiko.sftp_client.CMD_SETSTAT=paramiko.sftp_client-module.html#CMD_SETSTAT,Variable paramiko.sftp_file.CMD_SETSTAT=paramiko.sftp_file-module.html#CMD_SETSTAT,Variable paramiko.sftp_handle.CMD_SETSTAT=paramiko.sftp_handle-module.html#CMD_SETSTAT,Variable paramiko.sftp_server.CMD_SETSTAT=paramiko.sftp_server-module.html#CMD_SETSTAT,Variable paramiko.sftp_si.CMD_SETSTAT=paramiko.sftp_si-module.html#CMD_SETSTAT"><a title="paramiko.sftp.CMD_SETSTAT +<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-191" class="py-name" targets="Variable paramiko.sftp.CMD_SETSTAT=paramiko.sftp-module.html#CMD_SETSTAT,Variable paramiko.sftp_attr.CMD_SETSTAT=paramiko.sftp_attr-module.html#CMD_SETSTAT,Variable paramiko.sftp_client.CMD_SETSTAT=paramiko.sftp_client-module.html#CMD_SETSTAT,Variable paramiko.sftp_file.CMD_SETSTAT=paramiko.sftp_file-module.html#CMD_SETSTAT,Variable paramiko.sftp_handle.CMD_SETSTAT=paramiko.sftp_handle-module.html#CMD_SETSTAT,Variable paramiko.sftp_server.CMD_SETSTAT=paramiko.sftp_server-module.html#CMD_SETSTAT,Variable paramiko.sftp_si.CMD_SETSTAT=paramiko.sftp_si-module.html#CMD_SETSTAT"><a title="paramiko.sftp.CMD_SETSTAT paramiko.sftp_attr.CMD_SETSTAT paramiko.sftp_client.CMD_SETSTAT paramiko.sftp_file.CMD_SETSTAT paramiko.sftp_handle.CMD_SETSTAT paramiko.sftp_server.CMD_SETSTAT -paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-190', 'CMD_SETSTAT', 'link-190');">CMD_SETSTAT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-191', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-192', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-193', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name" targets="Method paramiko.SFTPHandle.chattr()=paramiko.SFTPHandle-class.html#chattr,Method paramiko.SFTPServerInterface.chattr()=paramiko.SFTPServerInterface-class.html#chattr"><a title="paramiko.SFTPHandle.chattr -paramiko.SFTPServerInterface.chattr" class="py-name" href="#" onclick="return doclink('link-194', 'chattr', 'link-194');">chattr</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-195" class="py-name" targets="Variable paramiko.sftp.CMD_FSETSTAT=paramiko.sftp-module.html#CMD_FSETSTAT,Variable paramiko.sftp_attr.CMD_FSETSTAT=paramiko.sftp_attr-module.html#CMD_FSETSTAT,Variable paramiko.sftp_client.CMD_FSETSTAT=paramiko.sftp_client-module.html#CMD_FSETSTAT,Variable paramiko.sftp_file.CMD_FSETSTAT=paramiko.sftp_file-module.html#CMD_FSETSTAT,Variable paramiko.sftp_handle.CMD_FSETSTAT=paramiko.sftp_handle-module.html#CMD_FSETSTAT,Variable paramiko.sftp_server.CMD_FSETSTAT=paramiko.sftp_server-module.html#CMD_FSETSTAT,Variable paramiko.sftp_si.CMD_FSETSTAT=paramiko.sftp_si-module.html#CMD_FSETSTAT"><a title="paramiko.sftp.CMD_FSETSTAT +paramiko.sftp_si.CMD_SETSTAT" class="py-name" href="#" onclick="return doclink('link-191', 'CMD_SETSTAT', 'link-191');">CMD_SETSTAT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-192', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-193', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-194', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Method paramiko.SFTPHandle.chattr()=paramiko.SFTPHandle-class.html#chattr,Method paramiko.SFTPServerInterface.chattr()=paramiko.SFTPServerInterface-class.html#chattr"><a title="paramiko.SFTPHandle.chattr +paramiko.SFTPServerInterface.chattr" class="py-name" href="#" onclick="return doclink('link-195', 'chattr', 'link-195');">chattr</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-196" class="py-name" targets="Variable paramiko.sftp.CMD_FSETSTAT=paramiko.sftp-module.html#CMD_FSETSTAT,Variable paramiko.sftp_attr.CMD_FSETSTAT=paramiko.sftp_attr-module.html#CMD_FSETSTAT,Variable paramiko.sftp_client.CMD_FSETSTAT=paramiko.sftp_client-module.html#CMD_FSETSTAT,Variable paramiko.sftp_file.CMD_FSETSTAT=paramiko.sftp_file-module.html#CMD_FSETSTAT,Variable paramiko.sftp_handle.CMD_FSETSTAT=paramiko.sftp_handle-module.html#CMD_FSETSTAT,Variable paramiko.sftp_server.CMD_FSETSTAT=paramiko.sftp_server-module.html#CMD_FSETSTAT,Variable paramiko.sftp_si.CMD_FSETSTAT=paramiko.sftp_si-module.html#CMD_FSETSTAT"><a title="paramiko.sftp.CMD_FSETSTAT paramiko.sftp_attr.CMD_FSETSTAT paramiko.sftp_client.CMD_FSETSTAT paramiko.sftp_file.CMD_FSETSTAT paramiko.sftp_handle.CMD_FSETSTAT paramiko.sftp_server.CMD_FSETSTAT -paramiko.sftp_si.CMD_FSETSTAT" class="py-name" href="#" onclick="return doclink('link-195', 'CMD_FSETSTAT', 'link-195');">CMD_FSETSTAT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-196', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-197', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_FSETSTAT" class="py-name" href="#" onclick="return doclink('link-196', 'CMD_FSETSTAT', 'link-196');">CMD_FSETSTAT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-197', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-198', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">.</tt><tt class="py-name">_from_msg</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> <a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handle</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">:</tt> </tt> -<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-198" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE +<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-199" class="py-name"><a title="paramiko.sftp.SFTP_BAD_MESSAGE paramiko.sftp_attr.SFTP_BAD_MESSAGE paramiko.sftp_client.SFTP_BAD_MESSAGE paramiko.sftp_file.SFTP_BAD_MESSAGE paramiko.sftp_handle.SFTP_BAD_MESSAGE paramiko.sftp_server.SFTP_BAD_MESSAGE -paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-198', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_BAD_MESSAGE" class="py-name" href="#" onclick="return doclink('link-199', 'SFTP_BAD_MESSAGE', 'link-100');">SFTP_BAD_MESSAGE</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Invalid handle'</tt><tt class="py-op">)</tt> </tt> <a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="paramiko.SFTPHandle.chattr -paramiko.SFTPServerInterface.chattr" class="py-name" href="#" onclick="return doclink('link-199', 'chattr', 'link-194');">chattr</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-200" class="py-name" targets="Variable paramiko.sftp.CMD_READLINK=paramiko.sftp-module.html#CMD_READLINK,Variable paramiko.sftp_attr.CMD_READLINK=paramiko.sftp_attr-module.html#CMD_READLINK,Variable paramiko.sftp_client.CMD_READLINK=paramiko.sftp_client-module.html#CMD_READLINK,Variable paramiko.sftp_file.CMD_READLINK=paramiko.sftp_file-module.html#CMD_READLINK,Variable paramiko.sftp_handle.CMD_READLINK=paramiko.sftp_handle-module.html#CMD_READLINK,Variable paramiko.sftp_server.CMD_READLINK=paramiko.sftp_server-module.html#CMD_READLINK,Variable paramiko.sftp_si.CMD_READLINK=paramiko.sftp_si-module.html#CMD_READLINK"><a title="paramiko.sftp.CMD_READLINK +<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">file_table</tt><tt class="py-op">[</tt><tt class="py-name">handle</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="paramiko.SFTPHandle.chattr +paramiko.SFTPServerInterface.chattr" class="py-name" href="#" onclick="return doclink('link-200', 'chattr', 'link-195');">chattr</a></tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-201" class="py-name" targets="Variable paramiko.sftp.CMD_READLINK=paramiko.sftp-module.html#CMD_READLINK,Variable paramiko.sftp_attr.CMD_READLINK=paramiko.sftp_attr-module.html#CMD_READLINK,Variable paramiko.sftp_client.CMD_READLINK=paramiko.sftp_client-module.html#CMD_READLINK,Variable paramiko.sftp_file.CMD_READLINK=paramiko.sftp_file-module.html#CMD_READLINK,Variable paramiko.sftp_handle.CMD_READLINK=paramiko.sftp_handle-module.html#CMD_READLINK,Variable paramiko.sftp_server.CMD_READLINK=paramiko.sftp_server-module.html#CMD_READLINK,Variable paramiko.sftp_si.CMD_READLINK=paramiko.sftp_si-module.html#CMD_READLINK"><a title="paramiko.sftp.CMD_READLINK paramiko.sftp_attr.CMD_READLINK paramiko.sftp_client.CMD_READLINK paramiko.sftp_file.CMD_READLINK paramiko.sftp_handle.CMD_READLINK paramiko.sftp_server.CMD_READLINK -paramiko.sftp_si.CMD_READLINK" class="py-name" href="#" onclick="return doclink('link-200', 'CMD_READLINK', 'link-200');">CMD_READLINK</a></tt><tt class="py-op">:</tt> </tt> -<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-201', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-202', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name" targets="Method paramiko.SFTPClient.readlink()=paramiko.SFTPClient-class.html#readlink,Method paramiko.SFTPServerInterface.readlink()=paramiko.SFTPServerInterface-class.html#readlink"><a title="paramiko.SFTPClient.readlink -paramiko.SFTPServerInterface.readlink" class="py-name" href="#" onclick="return doclink('link-203', 'readlink', 'link-203');">readlink</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_READLINK" class="py-name" href="#" onclick="return doclink('link-201', 'CMD_READLINK', 'link-201');">CMD_READLINK</a></tt><tt class="py-op">:</tt> </tt> +<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-202', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-203', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method paramiko.SFTPClient.readlink()=paramiko.SFTPClient-class.html#readlink,Method paramiko.SFTPServerInterface.readlink()=paramiko.SFTPServerInterface-class.html#readlink"><a title="paramiko.SFTPClient.readlink +paramiko.SFTPServerInterface.readlink" class="py-name" href="#" onclick="return doclink('link-204', 'readlink', 'link-204');">readlink</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> <a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> -<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-204" class="py-name"><a title="paramiko.sftp.CMD_NAME +<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-205" class="py-name"><a title="paramiko.sftp.CMD_NAME paramiko.sftp_attr.CMD_NAME paramiko.sftp_client.CMD_NAME paramiko.sftp_file.CMD_NAME paramiko.sftp_handle.CMD_NAME paramiko.sftp_server.CMD_NAME -paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-204', 'CMD_NAME', 'link-94');">CMD_NAME</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-205" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-205', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-205', 'CMD_NAME', 'link-94');">CMD_NAME</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-206" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-206', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> <a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt> -<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-206" class="py-name" targets="Variable paramiko.sftp.CMD_SYMLINK=paramiko.sftp-module.html#CMD_SYMLINK,Variable paramiko.sftp_attr.CMD_SYMLINK=paramiko.sftp_attr-module.html#CMD_SYMLINK,Variable paramiko.sftp_client.CMD_SYMLINK=paramiko.sftp_client-module.html#CMD_SYMLINK,Variable paramiko.sftp_file.CMD_SYMLINK=paramiko.sftp_file-module.html#CMD_SYMLINK,Variable paramiko.sftp_handle.CMD_SYMLINK=paramiko.sftp_handle-module.html#CMD_SYMLINK,Variable paramiko.sftp_server.CMD_SYMLINK=paramiko.sftp_server-module.html#CMD_SYMLINK,Variable paramiko.sftp_si.CMD_SYMLINK=paramiko.sftp_si-module.html#CMD_SYMLINK"><a title="paramiko.sftp.CMD_SYMLINK +<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-207" class="py-name" targets="Variable paramiko.sftp.CMD_SYMLINK=paramiko.sftp-module.html#CMD_SYMLINK,Variable paramiko.sftp_attr.CMD_SYMLINK=paramiko.sftp_attr-module.html#CMD_SYMLINK,Variable paramiko.sftp_client.CMD_SYMLINK=paramiko.sftp_client-module.html#CMD_SYMLINK,Variable paramiko.sftp_file.CMD_SYMLINK=paramiko.sftp_file-module.html#CMD_SYMLINK,Variable paramiko.sftp_handle.CMD_SYMLINK=paramiko.sftp_handle-module.html#CMD_SYMLINK,Variable paramiko.sftp_server.CMD_SYMLINK=paramiko.sftp_server-module.html#CMD_SYMLINK,Variable paramiko.sftp_si.CMD_SYMLINK=paramiko.sftp_si-module.html#CMD_SYMLINK"><a title="paramiko.sftp.CMD_SYMLINK paramiko.sftp_attr.CMD_SYMLINK paramiko.sftp_client.CMD_SYMLINK paramiko.sftp_file.CMD_SYMLINK paramiko.sftp_handle.CMD_SYMLINK paramiko.sftp_server.CMD_SYMLINK -paramiko.sftp_si.CMD_SYMLINK" class="py-name" href="#" onclick="return doclink('link-206', 'CMD_SYMLINK', 'link-206');">CMD_SYMLINK</a></tt><tt class="py-op">:</tt> </tt> +paramiko.sftp_si.CMD_SYMLINK" class="py-name" href="#" onclick="return doclink('link-207', 'CMD_SYMLINK', 'link-207');">CMD_SYMLINK</a></tt><tt class="py-op">:</tt> </tt> <a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-comment"># the sftp 2 draft is incorrect here! path always follows target_path</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">target_path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-207', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-208', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-209', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method paramiko.SFTPClient.symlink()=paramiko.SFTPClient-class.html#symlink,Method paramiko.SFTPServerInterface.symlink()=paramiko.SFTPServerInterface-class.html#symlink"><a title="paramiko.SFTPClient.symlink -paramiko.SFTPServerInterface.symlink" class="py-name" href="#" onclick="return doclink('link-210', 'symlink', 'link-210');">symlink</a></tt><tt class="py-op">(</tt><tt class="py-name">target_path</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-211" class="py-name" targets="Variable paramiko.sftp.CMD_REALPATH=paramiko.sftp-module.html#CMD_REALPATH,Variable paramiko.sftp_attr.CMD_REALPATH=paramiko.sftp_attr-module.html#CMD_REALPATH,Variable paramiko.sftp_client.CMD_REALPATH=paramiko.sftp_client-module.html#CMD_REALPATH,Variable paramiko.sftp_file.CMD_REALPATH=paramiko.sftp_file-module.html#CMD_REALPATH,Variable paramiko.sftp_handle.CMD_REALPATH=paramiko.sftp_handle-module.html#CMD_REALPATH,Variable paramiko.sftp_server.CMD_REALPATH=paramiko.sftp_server-module.html#CMD_REALPATH,Variable paramiko.sftp_si.CMD_REALPATH=paramiko.sftp_si-module.html#CMD_REALPATH"><a title="paramiko.sftp.CMD_REALPATH +<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">target_path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-208', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-209', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-210', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method paramiko.SFTPClient.symlink()=paramiko.SFTPClient-class.html#symlink,Method paramiko.SFTPServerInterface.symlink()=paramiko.SFTPServerInterface-class.html#symlink"><a title="paramiko.SFTPClient.symlink +paramiko.SFTPServerInterface.symlink" class="py-name" href="#" onclick="return doclink('link-211', 'symlink', 'link-211');">symlink</a></tt><tt class="py-op">(</tt><tt class="py-name">target_path</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-212" class="py-name" targets="Variable paramiko.sftp.CMD_REALPATH=paramiko.sftp-module.html#CMD_REALPATH,Variable paramiko.sftp_attr.CMD_REALPATH=paramiko.sftp_attr-module.html#CMD_REALPATH,Variable paramiko.sftp_client.CMD_REALPATH=paramiko.sftp_client-module.html#CMD_REALPATH,Variable paramiko.sftp_file.CMD_REALPATH=paramiko.sftp_file-module.html#CMD_REALPATH,Variable paramiko.sftp_handle.CMD_REALPATH=paramiko.sftp_handle-module.html#CMD_REALPATH,Variable paramiko.sftp_server.CMD_REALPATH=paramiko.sftp_server-module.html#CMD_REALPATH,Variable paramiko.sftp_si.CMD_REALPATH=paramiko.sftp_si-module.html#CMD_REALPATH"><a title="paramiko.sftp.CMD_REALPATH paramiko.sftp_attr.CMD_REALPATH paramiko.sftp_client.CMD_REALPATH paramiko.sftp_file.CMD_REALPATH paramiko.sftp_handle.CMD_REALPATH paramiko.sftp_server.CMD_REALPATH -paramiko.sftp_si.CMD_REALPATH" class="py-name" href="#" onclick="return doclink('link-211', 'CMD_REALPATH', 'link-211');">CMD_REALPATH</a></tt><tt class="py-op">:</tt> </tt> -<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-212', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">rpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-213', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method paramiko.SFTPServerInterface.canonicalize()=paramiko.SFTPServerInterface-class.html#canonicalize"><a title="paramiko.SFTPServerInterface.canonicalize" class="py-name" href="#" onclick="return doclink('link-214', 'canonicalize', 'link-214');">canonicalize</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-215" class="py-name"><a title="paramiko.sftp.CMD_NAME +paramiko.sftp_si.CMD_REALPATH" class="py-name" href="#" onclick="return doclink('link-212', 'CMD_REALPATH', 'link-212');">CMD_REALPATH</a></tt><tt class="py-op">:</tt> </tt> +<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-213', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">rpath</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-214', 'server', 'link-3');">server</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Method paramiko.SFTPServerInterface.canonicalize()=paramiko.SFTPServerInterface-class.html#canonicalize"><a title="paramiko.SFTPServerInterface.canonicalize" class="py-name" href="#" onclick="return doclink('link-215', 'canonicalize', 'link-215');">canonicalize</a></tt><tt class="py-op">(</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> +<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_response</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-216" class="py-name"><a title="paramiko.sftp.CMD_NAME paramiko.sftp_attr.CMD_NAME paramiko.sftp_client.CMD_NAME paramiko.sftp_file.CMD_NAME paramiko.sftp_handle.CMD_NAME paramiko.sftp_server.CMD_NAME -paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-215', 'CMD_NAME', 'link-94');">CMD_NAME</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">rpath</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-216" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-216', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-217" class="py-name" targets="Variable paramiko.sftp.CMD_EXTENDED=paramiko.sftp-module.html#CMD_EXTENDED,Variable paramiko.sftp_attr.CMD_EXTENDED=paramiko.sftp_attr-module.html#CMD_EXTENDED,Variable paramiko.sftp_client.CMD_EXTENDED=paramiko.sftp_client-module.html#CMD_EXTENDED,Variable paramiko.sftp_file.CMD_EXTENDED=paramiko.sftp_file-module.html#CMD_EXTENDED,Variable paramiko.sftp_handle.CMD_EXTENDED=paramiko.sftp_handle-module.html#CMD_EXTENDED,Variable paramiko.sftp_server.CMD_EXTENDED=paramiko.sftp_server-module.html#CMD_EXTENDED,Variable paramiko.sftp_si.CMD_EXTENDED=paramiko.sftp_si-module.html#CMD_EXTENDED"><a title="paramiko.sftp.CMD_EXTENDED +paramiko.sftp_si.CMD_NAME" class="py-name" href="#" onclick="return doclink('link-216', 'CMD_NAME', 'link-94');">CMD_NAME</a></tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">rpath</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-217" class="py-name"><a title="paramiko.SFTPAttributes" class="py-name" href="#" onclick="return doclink('link-217', 'SFTPAttributes', 'link-80');">SFTPAttributes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op">==</tt> <tt id="link-218" class="py-name" targets="Variable paramiko.sftp.CMD_EXTENDED=paramiko.sftp-module.html#CMD_EXTENDED,Variable paramiko.sftp_attr.CMD_EXTENDED=paramiko.sftp_attr-module.html#CMD_EXTENDED,Variable paramiko.sftp_client.CMD_EXTENDED=paramiko.sftp_client-module.html#CMD_EXTENDED,Variable paramiko.sftp_file.CMD_EXTENDED=paramiko.sftp_file-module.html#CMD_EXTENDED,Variable paramiko.sftp_handle.CMD_EXTENDED=paramiko.sftp_handle-module.html#CMD_EXTENDED,Variable paramiko.sftp_server.CMD_EXTENDED=paramiko.sftp_server-module.html#CMD_EXTENDED,Variable paramiko.sftp_si.CMD_EXTENDED=paramiko.sftp_si-module.html#CMD_EXTENDED"><a title="paramiko.sftp.CMD_EXTENDED paramiko.sftp_attr.CMD_EXTENDED paramiko.sftp_client.CMD_EXTENDED paramiko.sftp_file.CMD_EXTENDED paramiko.sftp_handle.CMD_EXTENDED paramiko.sftp_server.CMD_EXTENDED -paramiko.sftp_si.CMD_EXTENDED" class="py-name" href="#" onclick="return doclink('link-217', 'CMD_EXTENDED', 'link-217');">CMD_EXTENDED</a></tt><tt class="py-op">:</tt> </tt> -<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-218', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.CMD_EXTENDED" class="py-name" href="#" onclick="return doclink('link-218', 'CMD_EXTENDED', 'link-218');">CMD_EXTENDED</a></tt><tt class="py-op">:</tt> </tt> +<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">tag</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-219', 'get_string', 'link-95');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tag</tt> <tt class="py-op">==</tt> <tt class="py-string">'check-file'</tt><tt class="py-op">:</tt> </tt> <a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_file</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> <a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name" targets="Variable paramiko.sftp.SFTP_OP_UNSUPPORTED=paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_attr.SFTP_OP_UNSUPPORTED=paramiko.sftp_attr-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_client.SFTP_OP_UNSUPPORTED=paramiko.sftp_client-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_file.SFTP_OP_UNSUPPORTED=paramiko.sftp_file-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_handle.SFTP_OP_UNSUPPORTED=paramiko.sftp_handle-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_server.SFTP_OP_UNSUPPORTED=paramiko.sftp_server-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_si.SFTP_OP_UNSUPPORTED=paramiko.sftp_si-module.html#SFTP_OP_UNSUPPORTED"><a title="paramiko.sftp.SFTP_OP_UNSUPPORTED +<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-220" class="py-name" targets="Variable paramiko.sftp.SFTP_OP_UNSUPPORTED=paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_attr.SFTP_OP_UNSUPPORTED=paramiko.sftp_attr-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_client.SFTP_OP_UNSUPPORTED=paramiko.sftp_client-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_file.SFTP_OP_UNSUPPORTED=paramiko.sftp_file-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_handle.SFTP_OP_UNSUPPORTED=paramiko.sftp_handle-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_server.SFTP_OP_UNSUPPORTED=paramiko.sftp_server-module.html#SFTP_OP_UNSUPPORTED,Variable paramiko.sftp_si.SFTP_OP_UNSUPPORTED=paramiko.sftp_si-module.html#SFTP_OP_UNSUPPORTED"><a title="paramiko.sftp.SFTP_OP_UNSUPPORTED paramiko.sftp_attr.SFTP_OP_UNSUPPORTED paramiko.sftp_client.SFTP_OP_UNSUPPORTED paramiko.sftp_file.SFTP_OP_UNSUPPORTED paramiko.sftp_handle.SFTP_OP_UNSUPPORTED paramiko.sftp_server.SFTP_OP_UNSUPPORTED -paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-219', 'SFTP_OP_UNSUPPORTED', 'link-219');">SFTP_OP_UNSUPPORTED</a></tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-220', 'SFTP_OP_UNSUPPORTED', 'link-220');">SFTP_OP_UNSUPPORTED</a></tt><tt class="py-op">)</tt> </tt> <a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-220" class="py-name"><a title="paramiko.sftp.SFTP_OP_UNSUPPORTED +<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_status</tt><tt class="py-op">(</tt><tt class="py-name">request_number</tt><tt class="py-op">,</tt> <tt id="link-221" class="py-name"><a title="paramiko.sftp.SFTP_OP_UNSUPPORTED paramiko.sftp_attr.SFTP_OP_UNSUPPORTED paramiko.sftp_client.SFTP_OP_UNSUPPORTED paramiko.sftp_file.SFTP_OP_UNSUPPORTED paramiko.sftp_handle.SFTP_OP_UNSUPPORTED paramiko.sftp_server.SFTP_OP_UNSUPPORTED -paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-220', 'SFTP_OP_UNSUPPORTED', 'link-219');">SFTP_OP_UNSUPPORTED</a></tt><tt class="py-op">)</tt> </tt> +paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return doclink('link-221', 'SFTP_OP_UNSUPPORTED', 'link-220');">SFTP_OP_UNSUPPORTED</a></tt><tt class="py-op">)</tt> </tt> </div></div><a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> </tt> <a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> </tt> -<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-221" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-221', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name" targets="Module paramiko.sftp_handle=paramiko.sftp_handle-module.html"><a title="paramiko.sftp_handle" class="py-name" href="#" onclick="return doclink('link-222', 'sftp_handle', 'link-222');">sftp_handle</a></tt> <tt class="py-keyword">import</tt> <tt id="link-223" class="py-name"><a title="paramiko.SFTPHandle" class="py-name" href="#" onclick="return doclink('link-223', 'SFTPHandle', 'link-81');">SFTPHandle</a></tt> </tt> +<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-222" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-222', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Module paramiko.sftp_handle=paramiko.sftp_handle-module.html"><a title="paramiko.sftp_handle" class="py-name" href="#" onclick="return doclink('link-223', 'sftp_handle', 'link-223');">sftp_handle</a></tt> <tt class="py-keyword">import</tt> <tt id="link-224" class="py-name"><a title="paramiko.SFTPHandle" class="py-name" href="#" onclick="return doclink('link-224', 'SFTPHandle', 'link-81');">SFTPHandle</a></tt> </tt> <a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); @@ -1174,7 +1176,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:37 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:21 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_si-module.html b/docs/paramiko.sftp_si-module.html index 4907504..f6cd90d 100644 --- a/docs/paramiko.sftp_si-module.html +++ b/docs/paramiko.sftp_si-module.html @@ -741,6 +741,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -880,7 +887,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.sftp_si-pysrc.html b/docs/paramiko.sftp_si-pysrc.html index d28e3f1..8c33f30 100644 --- a/docs/paramiko.sftp_si-pysrc.html +++ b/docs/paramiko.sftp_si-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.sftp_si-module.html" onclick="show_private();">Module paramiko.sftp_si</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{SFTPServerInterface} is an interface to override for SFTP server support.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -106,7 +106,7 @@ <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> SFTP subsystem</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> @type server: L{ServerInterface}</tt> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-4" class="py-name" targets="Class paramiko.SFTPServerInterface=paramiko.SFTPServerInterface-class.html"><a title="paramiko.SFTPServerInterface" class="py-name" href="#" onclick="return doclink('link-4', 'SFTPServerInterface', 'link-4');">SFTPServerInterface</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-4" class="py-name" targets="Class paramiko.SFTPServerInterface=paramiko.SFTPServerInterface-class.html"><a title="paramiko.SFTPServerInterface" class="py-name" href="#" onclick="return doclink('link-4', 'SFTPServerInterface', 'link-4');">SFTPServerInterface</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -147,6 +147,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-5', '__init__', 'link-5');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">largs</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> </div><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt> @@ -428,7 +429,7 @@ paramiko.sftp_si.SFTP_OP_UNSUPPORTED" class="py-name" href="#" onclick="return d <a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">normpath</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt> <tt class="py-op">+</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt> <a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-comment"># on windows, normalize backslashes to sftp/posix format</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt> +<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt> <a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> </div><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt> <a name="SFTPServerInterface.readlink"></a><div id="SFTPServerInterface.readlink-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="SFTPServerInterface.readlink-toggle" onclick="return toggle('SFTPServerInterface.readlink');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.sftp_si.SFTPServerInterface-class.html#readlink">readlink</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -505,7 +506,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:33 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ssh_exception-module.html b/docs/paramiko.ssh_exception-module.html index b679a41..44b2d9a 100644 --- a/docs/paramiko.ssh_exception-module.html +++ b/docs/paramiko.ssh_exception-module.html @@ -73,6 +73,22 @@ </td> </tr> </table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code> + </td> + </tr> +</table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> @@ -99,7 +115,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ssh_exception-pysrc.html b/docs/paramiko.ssh_exception-pysrc.html index e140015..fe82bfe 100644 --- a/docs/paramiko.ssh_exception-pysrc.html +++ b/docs/paramiko.ssh_exception-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.ssh_exception-module.html" onclick="show_private();">Module paramiko.ssh_exception</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Exceptions defined by paramiko.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -119,7 +119,7 @@ paramiko.ssh_exception.PartialAuthentication.allowed_types" class="py-name" href="#" onclick="return doclink('link-0', 'allowed_types', 'link-0');">allowed_types</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt> <a name="BadAuthenticationType.__init__"></a><div id="BadAuthenticationType.__init__-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="BadAuthenticationType.__init__-toggle" onclick="return toggle('BadAuthenticationType.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.ssh_exception.BadAuthenticationType-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">explanation</tt><tt class="py-op">,</tt> <tt class="py-param">types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="BadAuthenticationType.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BadAuthenticationType.__init__-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Class paramiko.AuthenticationException=paramiko.AuthenticationException-class.html"><a title="paramiko.AuthenticationException" class="py-name" href="#" onclick="return doclink('link-1', 'AuthenticationException', 'link-1');">AuthenticationException</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +</div><div id="BadAuthenticationType.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BadAuthenticationType.__init__-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Class paramiko.AuthenticationException=paramiko.AuthenticationException-class.html"><a title="paramiko.AuthenticationException" class="py-name" href="#" onclick="return doclink('link-1', 'AuthenticationException', 'link-1');">AuthenticationException</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -160,6 +160,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-2', '__init__', 'link-2');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">explanation</tt><tt class="py-op">)</tt> </tt> <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="paramiko.BadAuthenticationType.allowed_types @@ -226,6 +227,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-9', '__init__', 'link-2');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'partial authentication'</tt><tt class="py-op">)</tt> </tt> <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="paramiko.BadAuthenticationType.allowed_types @@ -283,6 +285,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-12', '__init__', 'link-2');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">)</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt> </tt> @@ -343,6 +346,7 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-2');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'Host key for server %s does not match!'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">hostname</tt> </tt> @@ -381,7 +385,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:36 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.ssh_exception.PartialAuthentication-class.html b/docs/paramiko.ssh_exception.PartialAuthentication-class.html index 5f7d526..66e4bcc 100644 --- a/docs/paramiko.ssh_exception.PartialAuthentication-class.html +++ b/docs/paramiko.ssh_exception.PartialAuthentication-class.html @@ -108,15 +108,20 @@ exceptions.BaseException --+ <code>__delattr__</code>, <code>__getattribute__</code>, <code>__getitem__</code>, + <code>__getslice__</code>, <code>__reduce__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__setstate__</code>, - <code>__str__</code> + <code>__str__</code>, + <code>__unicode__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__format__</code>, <code>__hash__</code>, - <code>__reduce_ex__</code> + <code>__reduce_ex__</code>, + <code>__sizeof__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -219,7 +224,7 @@ exceptions.BaseException --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.transport-module.html b/docs/paramiko.transport-module.html index 9c93b3c..0a3c3ce 100644 --- a/docs/paramiko.transport-module.html +++ b/docs/paramiko.transport-module.html @@ -432,6 +432,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -519,7 +526,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.transport-pysrc.html b/docs/paramiko.transport-pysrc.html index f0d6fb1..0a560e0 100644 --- a/docs/paramiko.transport-pysrc.html +++ b/docs/paramiko.transport-pysrc.html @@ -54,24 +54,24 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.transport-module.html" onclick="show_private();">Module paramiko.transport</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">L{Transport} handles the core SSH2 protocol.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -102,244 +102,260 @@ <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-40" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-40', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Module paramiko.ssh_exception=paramiko.ssh_exception-module.html"><a title="paramiko.ssh_exception" class="py-name" href="#" onclick="return doclink('link-41', 'ssh_exception', 'link-41');">ssh_exception</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Class paramiko.SSHException=paramiko.SSHException-class.html"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-42', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Class paramiko.BadAuthenticationType=paramiko.BadAuthenticationType-class.html"><a title="paramiko.BadAuthenticationType" class="py-name" href="#" onclick="return doclink('link-43', 'BadAuthenticationType', 'link-43');">BadAuthenticationType</a></tt><tt class="py-op">,</tt> <tt id="link-44" class="py-name" targets="Class paramiko.ChannelException=paramiko.ChannelException-class.html"><a title="paramiko.ChannelException" class="py-name" href="#" onclick="return doclink('link-44', 'ChannelException', 'link-44');">ChannelException</a></tt> </tt> <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-comment"># these come from PyCrypt</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># http://www.amk.ca/python/writing/pycrypt/</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># i believe this on the standards track.</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># PyCrypt compiled for Win32 can be downloaded from the HashTar homepage:</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># http://nitace.bsd.uchicago.edu:8080/hashtar</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Cipher</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">,</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-name">DES3</tt> </tt> +<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-comment"># http://www.amk.ca/python/writing/pycrypt/</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-comment"># i believe this on the standards track.</tt> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-comment"># PyCrypt compiled for Win32 can be downloaded from the HashTar homepage:</tt> </tt> +<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-comment"># http://nitace.bsd.uchicago.edu:8080/hashtar</tt> </tt> +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Cipher</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">,</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-name">DES3</tt><tt class="py-op">,</tt> <tt class="py-name">ARC4</tt> </tt> <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Hash</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> <tt class="py-name">MD5</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-comment"># for thread cleanup</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-45" class="py-name" targets="Variable paramiko.transport._active_threads=paramiko.transport-module.html#_active_threads"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-45', '_active_threads', 'link-45');">_active_threads</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="_join_lingering_threads"></a><div id="_join_lingering_threads-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="_join_lingering_threads-toggle" onclick="return toggle('_join_lingering_threads');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_join_lingering_threads-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_join_lingering_threads-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">thr</tt> <tt class="py-keyword">in</tt> <tt id="link-46" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-46', '_active_threads', 'link-45');">_active_threads</a></tt><tt class="py-op">:</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">thr</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method paramiko.Transport.stop_thread()=paramiko.Transport-class.html#stop_thread"><a title="paramiko.Transport.stop_thread" class="py-name" href="#" onclick="return doclink('link-47', 'stop_thread', 'link-47');">stop_thread</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">atexit</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-name">atexit</tt><tt class="py-op">.</tt><tt class="py-name">register</tt><tt class="py-op">(</tt><tt class="py-name">_join_lingering_threads</tt><tt class="py-op">)</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions"></a><div id="SecurityOptions-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="SecurityOptions-toggle" onclick="return toggle('SecurityOptions');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html">SecurityOptions</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SecurityOptions-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> Simple object containing the security preferences of an ssh transport.</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> These are tuples of acceptable ciphers, digests, key types, and key</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> exchange algorithms, listed in order of preference.</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> Changing the contents and/or order of these fields affects the underlying</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport} (but only if you change them before starting the session).</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> If you try to add an algorithm that paramiko doesn't recognize,</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> C{ValueError} will be raised. If you try to assign something besides a</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> tuple to one of the fields, C{TypeError} will be raised.</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'ciphers'</tt><tt class="py-op">,</tt> <tt class="py-string">'digests'</tt><tt class="py-op">,</tt> <tt class="py-string">'key_types'</tt><tt class="py-op">,</tt> <tt class="py-string">'kex'</tt><tt class="py-op">,</tt> <tt class="py-string">'compression'</tt><tt class="py-op">,</tt> <tt class="py-string">'_transport'</tt> <tt class="py-op">]</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions.__init__"></a><div id="SecurityOptions.__init__-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="SecurityOptions.__init__-toggle" onclick="return toggle('SecurityOptions.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">transport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions.__init__-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name" targets="Module paramiko.transport=paramiko.transport-module.html"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-48', 'transport', 'link-48');">transport</a></tt> </tt> -</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions.__repr__"></a><div id="SecurityOptions.__repr__-def"><a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="SecurityOptions.__repr__-toggle" onclick="return toggle('SecurityOptions.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions.__repr__-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<paramiko.SecurityOptions for %s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">)</tt> </tt> -</div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._get_ciphers"></a><div id="SecurityOptions._get_ciphers-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_ciphers-toggle" onclick="return toggle('SecurityOptions._get_ciphers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_ciphers">_get_ciphers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._get_ciphers-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_ciphers-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Variable paramiko.Transport._preferred_ciphers=paramiko.Transport-class.html#_preferred_ciphers"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-49', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt> </tt> -</div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._get_digests"></a><div id="SecurityOptions._get_digests-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_digests-toggle" onclick="return toggle('SecurityOptions._get_digests');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_digests">_get_digests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._get_digests-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_digests-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Variable paramiko.Transport._preferred_macs=paramiko.Transport-class.html#_preferred_macs"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-50', '_preferred_macs', 'link-50');">_preferred_macs</a></tt> </tt> -</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._get_key_types"></a><div id="SecurityOptions._get_key_types-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_key_types-toggle" onclick="return toggle('SecurityOptions._get_key_types');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_key_types">_get_key_types</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._get_key_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_key_types-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Variable paramiko.Transport._preferred_keys=paramiko.Transport-class.html#_preferred_keys"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-51', '_preferred_keys', 'link-51');">_preferred_keys</a></tt> </tt> -</div><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._get_kex"></a><div id="SecurityOptions._get_kex-def"><a name="L100"></a><tt class="py-lineno"> 100</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_kex-toggle" onclick="return toggle('SecurityOptions._get_kex');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_kex">_get_kex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._get_kex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_kex-expanded"><a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Variable paramiko.Transport._preferred_kex=paramiko.Transport-class.html#_preferred_kex"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-52', '_preferred_kex', 'link-52');">_preferred_kex</a></tt> </tt> -</div><a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._get_compression"></a><div id="SecurityOptions._get_compression-def"><a name="L103"></a><tt class="py-lineno"> 103</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_compression-toggle" onclick="return toggle('SecurityOptions._get_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_compression">_get_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._get_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_compression-expanded"><a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Variable paramiko.Transport._preferred_compression=paramiko.Transport-class.html#_preferred_compression"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-53', '_preferred_compression', 'link-53');">_preferred_compression</a></tt> </tt> -</div><a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set"></a><div id="SecurityOptions._set-def"><a name="L106"></a><tt class="py-lineno"> 106</tt> <a class="py-toggle" href="#" id="SecurityOptions._set-toggle" onclick="return toggle('SecurityOptions._set');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set">_set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">orig</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set-expanded"><a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt> -<a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -<a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> -<a name="L110"></a><tt class="py-lineno"> 110</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'expected tuple or list'</tt><tt class="py-op">)</tt> </tt> -<a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> <tt class="py-name">possible</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">,</tt> <tt class="py-name">orig</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-54', 'keys', 'link-54');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"> <tt class="py-name">forbidden</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name" targets="Method paramiko.util.PFilter.filter()=paramiko.util.PFilter-class.html#filter"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-55', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">n</tt><tt class="py-op">:</tt> <tt class="py-name">n</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">possible</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">forbidden</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'unknown cipher'</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-56', 'name', 'link-56');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set_ciphers"></a><div id="SecurityOptions._set_ciphers-def"><a name="L117"></a><tt class="py-lineno"> 117</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_ciphers-toggle" onclick="return toggle('SecurityOptions._set_ciphers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_ciphers">_set_ciphers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set_ciphers-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_ciphers-expanded"><a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_ciphers'</tt><tt class="py-op">,</tt> <tt class="py-string">'_cipher_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set_digests"></a><div id="SecurityOptions._set_digests-def"><a name="L120"></a><tt class="py-lineno"> 120</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_digests-toggle" onclick="return toggle('SecurityOptions._set_digests');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_digests">_set_digests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set_digests-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_digests-expanded"><a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_macs'</tt><tt class="py-op">,</tt> <tt class="py-string">'_mac_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set_key_types"></a><div id="SecurityOptions._set_key_types-def"><a name="L123"></a><tt class="py-lineno"> 123</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_key_types-toggle" onclick="return toggle('SecurityOptions._set_key_types');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_key_types">_set_key_types</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set_key_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_key_types-expanded"><a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_keys'</tt><tt class="py-op">,</tt> <tt class="py-string">'_key_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set_kex"></a><div id="SecurityOptions._set_kex-def"><a name="L126"></a><tt class="py-lineno"> 126</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_kex-toggle" onclick="return toggle('SecurityOptions._set_kex');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_kex">_set_kex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set_kex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_kex-expanded"><a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_kex'</tt><tt class="py-op">,</tt> <tt class="py-string">'_kex_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"> </tt> -<a name="SecurityOptions._set_compression"></a><div id="SecurityOptions._set_compression-def"><a name="L129"></a><tt class="py-lineno"> 129</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_compression-toggle" onclick="return toggle('SecurityOptions._set_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_compression">_set_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SecurityOptions._set_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_compression-expanded"><a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_compression'</tt><tt class="py-op">,</tt> <tt class="py-string">'_compression_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> -</div><a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"> </tt> -<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"> <tt id="link-57" class="py-name" targets="Variable paramiko.SecurityOptions.ciphers=paramiko.SecurityOptions-class.html#ciphers"><a title="paramiko.SecurityOptions.ciphers" class="py-name" href="#" onclick="return doclink('link-57', 'ciphers', 'link-57');">ciphers</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Method paramiko.SecurityOptions._get_ciphers()=paramiko.SecurityOptions-class.html#_get_ciphers"><a title="paramiko.SecurityOptions._get_ciphers" class="py-name" href="#" onclick="return doclink('link-58', '_get_ciphers', 'link-58');">_get_ciphers</a></tt><tt class="py-op">,</tt> <tt id="link-59" class="py-name" targets="Method paramiko.SecurityOptions._set_ciphers()=paramiko.SecurityOptions-class.html#_set_ciphers"><a title="paramiko.SecurityOptions._set_ciphers" class="py-name" href="#" onclick="return doclink('link-59', '_set_ciphers', 'link-59');">_set_ciphers</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"> <tt class="py-string">"Symmetric encryption ciphers"</tt><tt class="py-op">)</tt> </tt> -<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"> <tt id="link-60" class="py-name" targets="Variable paramiko.SecurityOptions.digests=paramiko.SecurityOptions-class.html#digests"><a title="paramiko.SecurityOptions.digests" class="py-name" href="#" onclick="return doclink('link-60', 'digests', 'link-60');">digests</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-61" class="py-name" targets="Method paramiko.SecurityOptions._get_digests()=paramiko.SecurityOptions-class.html#_get_digests"><a title="paramiko.SecurityOptions._get_digests" class="py-name" href="#" onclick="return doclink('link-61', '_get_digests', 'link-61');">_get_digests</a></tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name" targets="Method paramiko.SecurityOptions._set_digests()=paramiko.SecurityOptions-class.html#_set_digests"><a title="paramiko.SecurityOptions._set_digests" class="py-name" href="#" onclick="return doclink('link-62', '_set_digests', 'link-62');">_set_digests</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"> <tt class="py-string">"Digest (one-way hash) algorithms"</tt><tt class="py-op">)</tt> </tt> -<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"> <tt id="link-63" class="py-name" targets="Variable paramiko.SecurityOptions.key_types=paramiko.SecurityOptions-class.html#key_types"><a title="paramiko.SecurityOptions.key_types" class="py-name" href="#" onclick="return doclink('link-63', 'key_types', 'link-63');">key_types</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-64" class="py-name" targets="Method paramiko.SecurityOptions._get_key_types()=paramiko.SecurityOptions-class.html#_get_key_types"><a title="paramiko.SecurityOptions._get_key_types" class="py-name" href="#" onclick="return doclink('link-64', '_get_key_types', 'link-64');">_get_key_types</a></tt><tt class="py-op">,</tt> <tt id="link-65" class="py-name" targets="Method paramiko.SecurityOptions._set_key_types()=paramiko.SecurityOptions-class.html#_set_key_types"><a title="paramiko.SecurityOptions._set_key_types" class="py-name" href="#" onclick="return doclink('link-65', '_set_key_types', 'link-65');">_set_key_types</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"> <tt class="py-string">"Public-key algorithms"</tt><tt class="py-op">)</tt> </tt> -<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"> <tt id="link-66" class="py-name" targets="Variable paramiko.SecurityOptions.kex=paramiko.SecurityOptions-class.html#kex"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-66', 'kex', 'link-66');">kex</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-67" class="py-name" targets="Method paramiko.SecurityOptions._get_kex()=paramiko.SecurityOptions-class.html#_get_kex"><a title="paramiko.SecurityOptions._get_kex" class="py-name" href="#" onclick="return doclink('link-67', '_get_kex', 'link-67');">_get_kex</a></tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name" targets="Method paramiko.SecurityOptions._set_kex()=paramiko.SecurityOptions-class.html#_set_kex"><a title="paramiko.SecurityOptions._set_kex" class="py-name" href="#" onclick="return doclink('link-68', '_set_kex', 'link-68');">_set_kex</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">"Key exchange algorithms"</tt><tt class="py-op">)</tt> </tt> -<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"> <tt id="link-69" class="py-name" targets="Variable paramiko.SecurityOptions.compression=paramiko.SecurityOptions-class.html#compression"><a title="paramiko.SecurityOptions.compression" class="py-name" href="#" onclick="return doclink('link-69', 'compression', 'link-69');">compression</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name" targets="Method paramiko.SecurityOptions._get_compression()=paramiko.SecurityOptions-class.html#_get_compression"><a title="paramiko.SecurityOptions._get_compression" class="py-name" href="#" onclick="return doclink('link-70', '_get_compression', 'link-70');">_get_compression</a></tt><tt class="py-op">,</tt> <tt id="link-71" class="py-name" targets="Method paramiko.SecurityOptions._set_compression()=paramiko.SecurityOptions-class.html#_set_compression"><a title="paramiko.SecurityOptions._set_compression" class="py-name" href="#" onclick="return doclink('link-71', '_set_compression', 'link-71');">_set_compression</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"> <tt class="py-string">"Compression algorithms"</tt><tt class="py-op">)</tt> </tt> -</div><a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"> </tt> -<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"> </tt> -<a name="ChannelMap"></a><div id="ChannelMap-def"><a name="L143"></a><tt class="py-lineno"> 143</tt> <a class="py-toggle" href="#" id="ChannelMap-toggle" onclick="return toggle('ChannelMap');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html">ChannelMap</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelMap-expanded"><a name="ChannelMap.__init__"></a><div id="ChannelMap.__init__-def"><a name="L144"></a><tt class="py-lineno"> 144</tt> <a class="py-toggle" href="#" id="ChannelMap.__init__-toggle" onclick="return toggle('ChannelMap.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.__init__-expanded"><a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"> <tt class="py-comment"># (id -> Channel)</tt> </tt> -<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">WeakValueDictionary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L148"></a><tt class="py-lineno"> 148</tt> <tt class="py-line"> </tt> -<a name="ChannelMap.put"></a><div id="ChannelMap.put-def"><a name="L149"></a><tt class="py-lineno"> 149</tt> <a class="py-toggle" href="#" id="ChannelMap.put-toggle" onclick="return toggle('ChannelMap.put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">,</tt> <tt class="py-param">chan</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.put-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.put-expanded"><a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt> </tt> -<a name="L153"></a><tt class="py-lineno"> 153</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"> </tt> -<a name="ChannelMap.get"></a><div id="ChannelMap.get-def"><a name="L156"></a><tt class="py-lineno"> 156</tt> <a class="py-toggle" href="#" id="ChannelMap.get-toggle" onclick="return toggle('ChannelMap.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.get-expanded"><a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-72', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"> </tt> -<a name="ChannelMap.delete"></a><div id="ChannelMap.delete-def"><a name="L163"></a><tt class="py-lineno"> 163</tt> <a class="py-toggle" href="#" id="ChannelMap.delete-toggle" onclick="return toggle('ChannelMap.delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.delete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.delete-expanded"><a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> -<a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> -<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"> </tt> -<a name="ChannelMap.values"></a><div id="ChannelMap.values-def"><a name="L173"></a><tt class="py-lineno"> 173</tt> <a class="py-toggle" href="#" id="ChannelMap.values-toggle" onclick="return toggle('ChannelMap.values');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.values-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.values-expanded"><a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values -paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-73', 'values', 'link-73');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"> </tt> -<a name="ChannelMap.__len__"></a><div id="ChannelMap.__len__-def"><a name="L180"></a><tt class="py-lineno"> 180</tt> <a class="py-toggle" href="#" id="ChannelMap.__len__-toggle" onclick="return toggle('ChannelMap.__len__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#__len__">__len__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ChannelMap.__len__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.__len__-expanded"><a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">)</tt> </tt> -<a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"> </tt> -<a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"> </tt> -<a name="Transport"></a><div id="Transport-def"><a name="L188"></a><tt class="py-lineno"> 188</tt> <a class="py-toggle" href="#" id="Transport-toggle" onclick="return toggle('Transport');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html">Transport</a> <tt class="py-op">(</tt><tt class="py-base-class">threading</tt><tt class="py-op">.</tt><tt class="py-base-class">Thread</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Transport-expanded"><a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"> An SSH Transport attaches to a stream (usually a socket), negotiates an</tt> </tt> -<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> encrypted session, authenticates, and then creates stream tunnels, called</tt> </tt> -<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel}s, across the session. Multiple channels can be multiplexed</tt> </tt> -<a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"><tt class="py-docstring"> across a single session (and often are, in the case of port forwardings).</tt> </tt> -<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"> </tt> -<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"> <tt id="link-74" class="py-name" targets="Variable paramiko.Transport._PROTO_ID=paramiko.Transport-class.html#_PROTO_ID"><a title="paramiko.Transport._PROTO_ID" class="py-name" href="#" onclick="return doclink('link-74', '_PROTO_ID', 'link-74');">_PROTO_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'2.0'</tt> </tt> -<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"> <tt id="link-75" class="py-name" targets="Variable paramiko.Transport._CLIENT_ID=paramiko.Transport-class.html#_CLIENT_ID"><a title="paramiko.Transport._CLIENT_ID" class="py-name" href="#" onclick="return doclink('link-75', '_CLIENT_ID', 'link-75');">_CLIENT_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'paramiko_1.7.4'</tt> </tt> -<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"> </tt> -<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-76', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'aes128-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'blowfish-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'aes256-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'3des-cbc'</tt> <tt class="py-op">)</tt> </tt> -<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"> <tt id="link-77" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-77', '_preferred_macs', 'link-50');">_preferred_macs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'hmac-sha1'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-md5'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-sha1-96'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-md5-96'</tt> <tt class="py-op">)</tt> </tt> -<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-78', '_preferred_keys', 'link-51');">_preferred_keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">,</tt> <tt class="py-string">'ssh-dss'</tt> <tt class="py-op">)</tt> </tt> -<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> <tt id="link-79" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-79', '_preferred_kex', 'link-52');">_preferred_kex</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'diffie-hellman-group1-sha1'</tt><tt class="py-op">,</tt> <tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt> <tt class="py-op">)</tt> </tt> -<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-80', '_preferred_compression', 'link-53');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt> </tt> -<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> </tt> -<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> <tt id="link-81" class="py-name" targets="Variable paramiko.Transport._cipher_info=paramiko.Transport-class.html#_cipher_info"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-81', '_cipher_info', 'link-81');">_cipher_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"> <tt class="py-string">'blowfish-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"> <tt class="py-string">'aes128-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"> <tt class="py-string">'aes256-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">32</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"> <tt class="py-string">'3des-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">24</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"> </tt> -<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> <tt id="link-82" class="py-name" targets="Variable paramiko.Transport._mac_info=paramiko.Transport-class.html#_mac_info"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-82', '_mac_info', 'link-82');">_mac_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> <tt class="py-string">'hmac-sha1'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">20</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"> <tt class="py-string">'hmac-sha1-96'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt class="py-string">'hmac-md5'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"> <tt class="py-string">'hmac-md5-96'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> -<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"> </tt> -<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"> <tt id="link-83" class="py-name" targets="Variable paramiko.Transport._key_info=paramiko.Transport-class.html#_key_info"><a title="paramiko.Transport._key_info" class="py-name" href="#" onclick="return doclink('link-83', '_key_info', 'link-83');">_key_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> <tt id="link-84" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-84', 'RSAKey', 'link-33');">RSAKey</a></tt><tt class="py-op">,</tt> </tt> -<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"> <tt class="py-string">'ssh-dss'</tt><tt class="py-op">:</tt> <tt id="link-85" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-85', 'DSSKey', 'link-15');">DSSKey</a></tt><tt class="py-op">,</tt> </tt> -<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"> </tt> -<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"> <tt id="link-86" class="py-name" targets="Variable paramiko.Transport._kex_info=paramiko.Transport-class.html#_kex_info"><a title="paramiko.Transport._kex_info" class="py-name" href="#" onclick="return doclink('link-86', '_kex_info', 'link-86');">_kex_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"> <tt class="py-string">'diffie-hellman-group1-sha1'</tt><tt class="py-op">:</tt> <tt id="link-87" class="py-name"><a title="paramiko.kex_group1.KexGroup1" class="py-name" href="#" onclick="return doclink('link-87', 'KexGroup1', 'link-21');">KexGroup1</a></tt><tt class="py-op">,</tt> </tt> -<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"> <tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt><tt class="py-op">:</tt> <tt id="link-88" class="py-name"><a title="paramiko.kex_gex.KexGex" class="py-name" href="#" onclick="return doclink('link-88', 'KexGex', 'link-18');">KexGex</a></tt><tt class="py-op">,</tt> </tt> -<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"> </tt> -<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"> <tt id="link-89" class="py-name" targets="Variable paramiko.Transport._compression_info=paramiko.Transport-class.html#_compression_info"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-89', '_compression_info', 'link-89');">_compression_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> <tt class="py-comment"># zlib@openssh.com is just zlib, but only turned on after a successful</tt> </tt> -<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> <tt class="py-comment"># authentication. openssh servers may only offer this type because</tt> </tt> -<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-comment"># they've had troubles with security holes in zlib in the past.</tt> </tt> -<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt id="link-90" class="py-name"><a title="paramiko.compress.ZlibCompressor" class="py-name" href="#" onclick="return doclink('link-90', 'ZlibCompressor', 'link-11');">ZlibCompressor</a></tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name"><a title="paramiko.compress.ZlibDecompressor" class="py-name" href="#" onclick="return doclink('link-91', 'ZlibDecompressor', 'link-12');">ZlibDecompressor</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-string">'zlib'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt id="link-92" class="py-name"><a title="paramiko.compress.ZlibCompressor" class="py-name" href="#" onclick="return doclink('link-92', 'ZlibCompressor', 'link-11');">ZlibCompressor</a></tt><tt class="py-op">,</tt> <tt id="link-93" class="py-name"><a title="paramiko.compress.ZlibDecompressor" class="py-name" href="#" onclick="return doclink('link-93', 'ZlibDecompressor', 'link-12');">ZlibDecompressor</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-string">'none'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">Crypto</tt><tt class="py-op">.</tt><tt class="py-name">Util</tt> <tt class="py-keyword">import</tt> <tt id="link-45" class="py-name" targets="Class paramiko.util.Counter=paramiko.util.Counter-class.html"><a title="paramiko.util.Counter" class="py-name" href="#" onclick="return doclink('link-45', 'Counter', 'link-45');">Counter</a></tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> +<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-46" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-46', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-47', 'util', 'link-1');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-48" class="py-name"><a title="paramiko.util.Counter" class="py-name" href="#" onclick="return doclink('link-48', 'Counter', 'link-45');">Counter</a></tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-comment"># for thread cleanup</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-49" class="py-name" targets="Variable paramiko.transport._active_threads=paramiko.transport-module.html#_active_threads"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-49', '_active_threads', 'link-49');">_active_threads</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="_join_lingering_threads"></a><div id="_join_lingering_threads-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="_join_lingering_threads-toggle" onclick="return toggle('_join_lingering_threads');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="_join_lingering_threads-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_join_lingering_threads-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">thr</tt> <tt class="py-keyword">in</tt> <tt id="link-50" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-50', '_active_threads', 'link-49');">_active_threads</a></tt><tt class="py-op">:</tt> </tt> +<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">thr</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method paramiko.Transport.stop_thread()=paramiko.Transport-class.html#stop_thread"><a title="paramiko.Transport.stop_thread" class="py-name" href="#" onclick="return doclink('link-51', 'stop_thread', 'link-51');">stop_thread</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">atexit</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-name">atexit</tt><tt class="py-op">.</tt><tt class="py-name">register</tt><tt class="py-op">(</tt><tt class="py-name">_join_lingering_threads</tt><tt class="py-op">)</tt> </tt> +<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions"></a><div id="SecurityOptions-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="SecurityOptions-toggle" onclick="return toggle('SecurityOptions');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html">SecurityOptions</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SecurityOptions-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> Simple object containing the security preferences of an ssh transport.</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> These are tuples of acceptable ciphers, digests, key types, and key</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> exchange algorithms, listed in order of preference.</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Changing the contents and/or order of these fields affects the underlying</tt> </tt> +<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport} (but only if you change them before starting the session).</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> If you try to add an algorithm that paramiko doesn't recognize,</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> C{ValueError} will be raised. If you try to assign something besides a</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> tuple to one of the fields, C{TypeError} will be raised.</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'ciphers'</tt><tt class="py-op">,</tt> <tt class="py-string">'digests'</tt><tt class="py-op">,</tt> <tt class="py-string">'key_types'</tt><tt class="py-op">,</tt> <tt class="py-string">'kex'</tt><tt class="py-op">,</tt> <tt class="py-string">'compression'</tt><tt class="py-op">,</tt> <tt class="py-string">'_transport'</tt> <tt class="py-op">]</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions.__init__"></a><div id="SecurityOptions.__init__-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="SecurityOptions.__init__-toggle" onclick="return toggle('SecurityOptions.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">transport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions.__init__-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name" targets="Module paramiko.transport=paramiko.transport-module.html"><a title="paramiko.transport" class="py-name" href="#" onclick="return doclink('link-52', 'transport', 'link-52');">transport</a></tt> </tt> +</div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions.__repr__"></a><div id="SecurityOptions.__repr__-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="SecurityOptions.__repr__-toggle" onclick="return toggle('SecurityOptions.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions.__repr__-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<paramiko.SecurityOptions for %s>'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">)</tt> </tt> +</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._get_ciphers"></a><div id="SecurityOptions._get_ciphers-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_ciphers-toggle" onclick="return toggle('SecurityOptions._get_ciphers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_ciphers">_get_ciphers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._get_ciphers-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_ciphers-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Variable paramiko.Transport._preferred_ciphers=paramiko.Transport-class.html#_preferred_ciphers"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-53', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt> </tt> +</div><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._get_digests"></a><div id="SecurityOptions._get_digests-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_digests-toggle" onclick="return toggle('SecurityOptions._get_digests');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_digests">_get_digests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._get_digests-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_digests-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Variable paramiko.Transport._preferred_macs=paramiko.Transport-class.html#_preferred_macs"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-54', '_preferred_macs', 'link-54');">_preferred_macs</a></tt> </tt> +</div><a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._get_key_types"></a><div id="SecurityOptions._get_key_types-def"><a name="L101"></a><tt class="py-lineno"> 101</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_key_types-toggle" onclick="return toggle('SecurityOptions._get_key_types');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_key_types">_get_key_types</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._get_key_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_key_types-expanded"><a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Variable paramiko.Transport._preferred_keys=paramiko.Transport-class.html#_preferred_keys"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-55', '_preferred_keys', 'link-55');">_preferred_keys</a></tt> </tt> +</div><a name="L103"></a><tt class="py-lineno"> 103</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._get_kex"></a><div id="SecurityOptions._get_kex-def"><a name="L104"></a><tt class="py-lineno"> 104</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_kex-toggle" onclick="return toggle('SecurityOptions._get_kex');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_kex">_get_kex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._get_kex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_kex-expanded"><a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Variable paramiko.Transport._preferred_kex=paramiko.Transport-class.html#_preferred_kex"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-56', '_preferred_kex', 'link-56');">_preferred_kex</a></tt> </tt> +</div><a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._get_compression"></a><div id="SecurityOptions._get_compression-def"><a name="L107"></a><tt class="py-lineno"> 107</tt> <a class="py-toggle" href="#" id="SecurityOptions._get_compression-toggle" onclick="return toggle('SecurityOptions._get_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_get_compression">_get_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._get_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._get_compression-expanded"><a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Variable paramiko.Transport._preferred_compression=paramiko.Transport-class.html#_preferred_compression"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-57', '_preferred_compression', 'link-57');">_preferred_compression</a></tt> </tt> +</div><a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set"></a><div id="SecurityOptions._set-def"><a name="L110"></a><tt class="py-lineno"> 110</tt> <a class="py-toggle" href="#" id="SecurityOptions._set-toggle" onclick="return toggle('SecurityOptions._set');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set">_set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">orig</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set-expanded"><a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt> +<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> +<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'expected tuple or list'</tt><tt class="py-op">)</tt> </tt> +<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"> <tt class="py-name">possible</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">,</tt> <tt class="py-name">orig</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method paramiko.HostKeys.keys()=paramiko.HostKeys-class.html#keys"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-58', 'keys', 'link-58');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"> <tt class="py-name">forbidden</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name" targets="Method paramiko.util.PFilter.filter()=paramiko.util.PFilter-class.html#filter"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-59', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">n</tt><tt class="py-op">:</tt> <tt class="py-name">n</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">possible</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">forbidden</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'unknown cipher'</tt><tt class="py-op">)</tt> </tt> +<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_transport</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-60', 'name', 'link-60');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set_ciphers"></a><div id="SecurityOptions._set_ciphers-def"><a name="L121"></a><tt class="py-lineno"> 121</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_ciphers-toggle" onclick="return toggle('SecurityOptions._set_ciphers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_ciphers">_set_ciphers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set_ciphers-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_ciphers-expanded"><a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_ciphers'</tt><tt class="py-op">,</tt> <tt class="py-string">'_cipher_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set_digests"></a><div id="SecurityOptions._set_digests-def"><a name="L124"></a><tt class="py-lineno"> 124</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_digests-toggle" onclick="return toggle('SecurityOptions._set_digests');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_digests">_set_digests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set_digests-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_digests-expanded"><a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_macs'</tt><tt class="py-op">,</tt> <tt class="py-string">'_mac_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set_key_types"></a><div id="SecurityOptions._set_key_types-def"><a name="L127"></a><tt class="py-lineno"> 127</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_key_types-toggle" onclick="return toggle('SecurityOptions._set_key_types');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_key_types">_set_key_types</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set_key_types-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_key_types-expanded"><a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_keys'</tt><tt class="py-op">,</tt> <tt class="py-string">'_key_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set_kex"></a><div id="SecurityOptions._set_kex-def"><a name="L130"></a><tt class="py-lineno"> 130</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_kex-toggle" onclick="return toggle('SecurityOptions._set_kex');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_kex">_set_kex</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set_kex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_kex-expanded"><a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_kex'</tt><tt class="py-op">,</tt> <tt class="py-string">'_kex_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"> </tt> +<a name="SecurityOptions._set_compression"></a><div id="SecurityOptions._set_compression-def"><a name="L133"></a><tt class="py-lineno"> 133</tt> <a class="py-toggle" href="#" id="SecurityOptions._set_compression-toggle" onclick="return toggle('SecurityOptions._set_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.SecurityOptions-class.html#_set_compression">_set_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="SecurityOptions._set_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SecurityOptions._set_compression-expanded"><a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set</tt><tt class="py-op">(</tt><tt class="py-string">'_preferred_compression'</tt><tt class="py-op">,</tt> <tt class="py-string">'_compression_info'</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"> </tt> +<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"> <tt id="link-61" class="py-name" targets="Variable paramiko.SecurityOptions.ciphers=paramiko.SecurityOptions-class.html#ciphers"><a title="paramiko.SecurityOptions.ciphers" class="py-name" href="#" onclick="return doclink('link-61', 'ciphers', 'link-61');">ciphers</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-62" class="py-name" targets="Method paramiko.SecurityOptions._get_ciphers()=paramiko.SecurityOptions-class.html#_get_ciphers"><a title="paramiko.SecurityOptions._get_ciphers" class="py-name" href="#" onclick="return doclink('link-62', '_get_ciphers', 'link-62');">_get_ciphers</a></tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name" targets="Method paramiko.SecurityOptions._set_ciphers()=paramiko.SecurityOptions-class.html#_set_ciphers"><a title="paramiko.SecurityOptions._set_ciphers" class="py-name" href="#" onclick="return doclink('link-63', '_set_ciphers', 'link-63');">_set_ciphers</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"> <tt class="py-string">"Symmetric encryption ciphers"</tt><tt class="py-op">)</tt> </tt> +<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"> <tt id="link-64" class="py-name" targets="Variable paramiko.SecurityOptions.digests=paramiko.SecurityOptions-class.html#digests"><a title="paramiko.SecurityOptions.digests" class="py-name" href="#" onclick="return doclink('link-64', 'digests', 'link-64');">digests</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-65" class="py-name" targets="Method paramiko.SecurityOptions._get_digests()=paramiko.SecurityOptions-class.html#_get_digests"><a title="paramiko.SecurityOptions._get_digests" class="py-name" href="#" onclick="return doclink('link-65', '_get_digests', 'link-65');">_get_digests</a></tt><tt class="py-op">,</tt> <tt id="link-66" class="py-name" targets="Method paramiko.SecurityOptions._set_digests()=paramiko.SecurityOptions-class.html#_set_digests"><a title="paramiko.SecurityOptions._set_digests" class="py-name" href="#" onclick="return doclink('link-66', '_set_digests', 'link-66');">_set_digests</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"> <tt class="py-string">"Digest (one-way hash) algorithms"</tt><tt class="py-op">)</tt> </tt> +<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"> <tt id="link-67" class="py-name" targets="Variable paramiko.SecurityOptions.key_types=paramiko.SecurityOptions-class.html#key_types"><a title="paramiko.SecurityOptions.key_types" class="py-name" href="#" onclick="return doclink('link-67', 'key_types', 'link-67');">key_types</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-68" class="py-name" targets="Method paramiko.SecurityOptions._get_key_types()=paramiko.SecurityOptions-class.html#_get_key_types"><a title="paramiko.SecurityOptions._get_key_types" class="py-name" href="#" onclick="return doclink('link-68', '_get_key_types', 'link-68');">_get_key_types</a></tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name" targets="Method paramiko.SecurityOptions._set_key_types()=paramiko.SecurityOptions-class.html#_set_key_types"><a title="paramiko.SecurityOptions._set_key_types" class="py-name" href="#" onclick="return doclink('link-69', '_set_key_types', 'link-69');">_set_key_types</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"> <tt class="py-string">"Public-key algorithms"</tt><tt class="py-op">)</tt> </tt> +<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"> <tt id="link-70" class="py-name" targets="Variable paramiko.SecurityOptions.kex=paramiko.SecurityOptions-class.html#kex"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-70', 'kex', 'link-70');">kex</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name" targets="Method paramiko.SecurityOptions._get_kex()=paramiko.SecurityOptions-class.html#_get_kex"><a title="paramiko.SecurityOptions._get_kex" class="py-name" href="#" onclick="return doclink('link-71', '_get_kex', 'link-71');">_get_kex</a></tt><tt class="py-op">,</tt> <tt id="link-72" class="py-name" targets="Method paramiko.SecurityOptions._set_kex()=paramiko.SecurityOptions-class.html#_set_kex"><a title="paramiko.SecurityOptions._set_kex" class="py-name" href="#" onclick="return doclink('link-72', '_set_kex', 'link-72');">_set_kex</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">"Key exchange algorithms"</tt><tt class="py-op">)</tt> </tt> +<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"> <tt id="link-73" class="py-name" targets="Variable paramiko.SecurityOptions.compression=paramiko.SecurityOptions-class.html#compression"><a title="paramiko.SecurityOptions.compression" class="py-name" href="#" onclick="return doclink('link-73', 'compression', 'link-73');">compression</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name" targets="Method paramiko.SecurityOptions._get_compression()=paramiko.SecurityOptions-class.html#_get_compression"><a title="paramiko.SecurityOptions._get_compression" class="py-name" href="#" onclick="return doclink('link-74', '_get_compression', 'link-74');">_get_compression</a></tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name" targets="Method paramiko.SecurityOptions._set_compression()=paramiko.SecurityOptions-class.html#_set_compression"><a title="paramiko.SecurityOptions._set_compression" class="py-name" href="#" onclick="return doclink('link-75', '_set_compression', 'link-75');">_set_compression</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> +<a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"> <tt class="py-string">"Compression algorithms"</tt><tt class="py-op">)</tt> </tt> +</div><a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"> </tt> +<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"> </tt> +<a name="ChannelMap"></a><div id="ChannelMap-def"><a name="L147"></a><tt class="py-lineno"> 147</tt> <a class="py-toggle" href="#" id="ChannelMap-toggle" onclick="return toggle('ChannelMap');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html">ChannelMap</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ChannelMap-expanded"><a name="ChannelMap.__init__"></a><div id="ChannelMap.__init__-def"><a name="L148"></a><tt class="py-lineno"> 148</tt> <a class="py-toggle" href="#" id="ChannelMap.__init__-toggle" onclick="return toggle('ChannelMap.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.__init__-expanded"><a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"> <tt class="py-comment"># (id -> Channel)</tt> </tt> +<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt> <tt class="py-op">=</tt> <tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">WeakValueDictionary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> </tt> +<a name="ChannelMap.put"></a><div id="ChannelMap.put-def"><a name="L153"></a><tt class="py-lineno"> 153</tt> <a class="py-toggle" href="#" id="ChannelMap.put-toggle" onclick="return toggle('ChannelMap.put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#put">put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">,</tt> <tt class="py-param">chan</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.put-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.put-expanded"><a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">chan</tt> </tt> +<a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"> </tt> +<a name="ChannelMap.get"></a><div id="ChannelMap.get-def"><a name="L160"></a><tt class="py-lineno"> 160</tt> <a class="py-toggle" href="#" id="ChannelMap.get-toggle" onclick="return toggle('ChannelMap.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.get-expanded"><a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method paramiko.SFTPClient.get()=paramiko.SFTPClient-class.html#get,Method paramiko.transport.ChannelMap.get()=paramiko.transport.ChannelMap-class.html#get"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-76', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +<a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"> </tt> +<a name="ChannelMap.delete"></a><div id="ChannelMap.delete-def"><a name="L167"></a><tt class="py-lineno"> 167</tt> <a class="py-toggle" href="#" id="ChannelMap.delete-toggle" onclick="return toggle('ChannelMap.delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#delete">delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.delete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.delete-expanded"><a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> +<a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> +<a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"> </tt> +<a name="ChannelMap.values"></a><div id="ChannelMap.values-def"><a name="L177"></a><tt class="py-lineno"> 177</tt> <a class="py-toggle" href="#" id="ChannelMap.values-toggle" onclick="return toggle('ChannelMap.values');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.values-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.values-expanded"><a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method paramiko.HostKeys.values()=paramiko.HostKeys-class.html#values,Method paramiko.transport.ChannelMap.values()=paramiko.transport.ChannelMap-class.html#values"><a title="paramiko.HostKeys.values +paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-77', 'values', 'link-77');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> </tt> +<a name="ChannelMap.__len__"></a><div id="ChannelMap.__len__-def"><a name="L184"></a><tt class="py-lineno"> 184</tt> <a class="py-toggle" href="#" id="ChannelMap.__len__-toggle" onclick="return toggle('ChannelMap.__len__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.ChannelMap-class.html#__len__">__len__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="ChannelMap.__len__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ChannelMap.__len__-expanded"><a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_map</tt><tt class="py-op">)</tt> </tt> +<a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div></div><a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"> </tt> +<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"> </tt> +<a name="Transport"></a><div id="Transport-def"><a name="L192"></a><tt class="py-lineno"> 192</tt> <a class="py-toggle" href="#" id="Transport-toggle" onclick="return toggle('Transport');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html">Transport</a> <tt class="py-op">(</tt><tt class="py-base-class">threading</tt><tt class="py-op">.</tt><tt class="py-base-class">Thread</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Transport-expanded"><a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-docstring"> An SSH Transport attaches to a stream (usually a socket), negotiates an</tt> </tt> +<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"><tt class="py-docstring"> encrypted session, authenticates, and then creates stream tunnels, called</tt> </tt> +<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel}s, across the session. Multiple channels can be multiplexed</tt> </tt> +<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"><tt class="py-docstring"> across a single session (and often are, in the case of port forwardings).</tt> </tt> +<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"> </tt> +<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"> <tt id="link-78" class="py-name" targets="Variable paramiko.Transport._PROTO_ID=paramiko.Transport-class.html#_PROTO_ID"><a title="paramiko.Transport._PROTO_ID" class="py-name" href="#" onclick="return doclink('link-78', '_PROTO_ID', 'link-78');">_PROTO_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'2.0'</tt> </tt> +<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"> <tt id="link-79" class="py-name" targets="Variable paramiko.Transport._CLIENT_ID=paramiko.Transport-class.html#_CLIENT_ID"><a title="paramiko.Transport._CLIENT_ID" class="py-name" href="#" onclick="return doclink('link-79', '_CLIENT_ID', 'link-79');">_CLIENT_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'paramiko_1.7.6'</tt> </tt> +<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> </tt> +<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-80', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'aes128-ctr'</tt><tt class="py-op">,</tt> <tt class="py-string">'aes256-ctr'</tt><tt class="py-op">,</tt> <tt class="py-string">'aes128-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'blowfish-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'aes256-cbc'</tt><tt class="py-op">,</tt> <tt class="py-string">'3des-cbc'</tt><tt class="py-op">,</tt> </tt> +<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> <tt class="py-string">'arcfour128'</tt><tt class="py-op">,</tt> <tt class="py-string">'arcfour256'</tt> <tt class="py-op">)</tt> </tt> +<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> <tt id="link-81" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-81', '_preferred_macs', 'link-54');">_preferred_macs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'hmac-sha1'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-md5'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-sha1-96'</tt><tt class="py-op">,</tt> <tt class="py-string">'hmac-md5-96'</tt> <tt class="py-op">)</tt> </tt> +<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"> <tt id="link-82" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-82', '_preferred_keys', 'link-55');">_preferred_keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">,</tt> <tt class="py-string">'ssh-dss'</tt> <tt class="py-op">)</tt> </tt> +<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"> <tt id="link-83" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-83', '_preferred_kex', 'link-56');">_preferred_kex</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'diffie-hellman-group1-sha1'</tt><tt class="py-op">,</tt> <tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt> <tt class="py-op">)</tt> </tt> +<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"> <tt id="link-84" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-84', '_preferred_compression', 'link-57');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt> </tt> +<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"> </tt> +<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"> <tt id="link-85" class="py-name" targets="Variable paramiko.Transport._cipher_info=paramiko.Transport-class.html#_cipher_info"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-85', '_cipher_info', 'link-85');">_cipher_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"> <tt class="py-string">'aes128-ctr'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CTR</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> <tt class="py-string">'aes256-ctr'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CTR</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">32</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> <tt class="py-string">'blowfish-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">Blowfish</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"> <tt class="py-string">'aes128-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt class="py-string">'aes256-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">AES</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">32</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"> <tt class="py-string">'3des-cbc'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">DES3</tt><tt class="py-op">.</tt><tt class="py-name">MODE_CBC</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">24</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"> <tt class="py-string">'arcfour128'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">ARC4</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"> <tt class="py-string">'arcfour256'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">ARC4</tt><tt class="py-op">,</tt> <tt class="py-string">'mode'</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'block-size'</tt><tt class="py-op">:</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-string">'key-size'</tt><tt class="py-op">:</tt> <tt class="py-number">32</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> </tt> +<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"> <tt id="link-86" class="py-name" targets="Variable paramiko.Transport._mac_info=paramiko.Transport-class.html#_mac_info"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-86', '_mac_info', 'link-86');">_mac_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"> <tt class="py-string">'hmac-sha1'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">20</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"> <tt class="py-string">'hmac-sha1-96'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">SHA</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"> <tt class="py-string">'hmac-md5'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">16</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"> <tt class="py-string">'hmac-md5-96'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt> <tt class="py-string">'class'</tt><tt class="py-op">:</tt> <tt class="py-name">MD5</tt><tt class="py-op">,</tt> <tt class="py-string">'size'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt> <tt class="py-op">}</tt><tt class="py-op">,</tt> </tt> +<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"> </tt> +<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"> <tt id="link-87" class="py-name" targets="Variable paramiko.Transport._key_info=paramiko.Transport-class.html#_key_info"><a title="paramiko.Transport._key_info" class="py-name" href="#" onclick="return doclink('link-87', '_key_info', 'link-87');">_key_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"> <tt class="py-string">'ssh-rsa'</tt><tt class="py-op">:</tt> <tt id="link-88" class="py-name"><a title="paramiko.RSAKey" class="py-name" href="#" onclick="return doclink('link-88', 'RSAKey', 'link-33');">RSAKey</a></tt><tt class="py-op">,</tt> </tt> +<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> <tt class="py-string">'ssh-dss'</tt><tt class="py-op">:</tt> <tt id="link-89" class="py-name"><a title="paramiko.DSSKey" class="py-name" href="#" onclick="return doclink('link-89', 'DSSKey', 'link-15');">DSSKey</a></tt><tt class="py-op">,</tt> </tt> +<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> </tt> +<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt id="link-90" class="py-name" targets="Variable paramiko.Transport._kex_info=paramiko.Transport-class.html#_kex_info"><a title="paramiko.Transport._kex_info" class="py-name" href="#" onclick="return doclink('link-90', '_kex_info', 'link-90');">_kex_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-string">'diffie-hellman-group1-sha1'</tt><tt class="py-op">:</tt> <tt id="link-91" class="py-name"><a title="paramiko.kex_group1.KexGroup1" class="py-name" href="#" onclick="return doclink('link-91', 'KexGroup1', 'link-21');">KexGroup1</a></tt><tt class="py-op">,</tt> </tt> +<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt><tt class="py-op">:</tt> <tt id="link-92" class="py-name"><a title="paramiko.kex_gex.KexGex" class="py-name" href="#" onclick="return doclink('link-92', 'KexGex', 'link-18');">KexGex</a></tt><tt class="py-op">,</tt> </tt> +<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> <a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"> </tt> -<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> </tt> -<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt id="link-94" class="py-name" targets="Variable paramiko.Transport._modulus_pack=paramiko.Transport-class.html#_modulus_pack"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-94', '_modulus_pack', 'link-94');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> </tt> -<a name="Transport.__init__"></a><div id="Transport.__init__-def"><a name="L241"></a><tt class="py-lineno"> 241</tt> <a class="py-toggle" href="#" id="Transport.__init__-toggle" onclick="return toggle('Transport.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.__init__-expanded"><a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"><tt class="py-docstring"> Create a new SSH session over an existing socket, or socket-like</tt> </tt> -<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-docstring"> object. This only creates the Transport object; it doesn't begin the</tt> </tt> -<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-docstring"> SSH session yet. Use L{connect} or L{start_client} to begin a client</tt> </tt> -<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-docstring"> session, or L{start_server} to begin a server session.</tt> </tt> -<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"><tt class="py-docstring"> If the object is not actually a socket, it must have the following</tt> </tt> -<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"><tt class="py-docstring"> methods:</tt> </tt> -<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"><tt class="py-docstring"> - C{send(str)}: Writes from 1 to C{len(str)} bytes, and</tt> </tt> -<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"><tt class="py-docstring"> returns an int representing the number of bytes written. Returns</tt> </tt> -<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"><tt class="py-docstring"> 0 or raises C{EOFError} if the stream has been closed.</tt> </tt> -<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"><tt class="py-docstring"> - C{recv(int)}: Reads from 1 to C{int} bytes and returns them as a</tt> </tt> -<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"><tt class="py-docstring"> string. Returns 0 or raises C{EOFError} if the stream has been</tt> </tt> -<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"><tt class="py-docstring"> closed.</tt> </tt> -<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"><tt class="py-docstring"> - C{close()}: Closes the socket.</tt> </tt> -<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"><tt class="py-docstring"> - C{settimeout(n)}: Sets a (float) timeout on I/O operations.</tt> </tt> -<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"><tt class="py-docstring"> For ease of use, you may also pass in an address (as a tuple) or a host</tt> </tt> -<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"><tt class="py-docstring"> string as the C{sock} argument. (A host string is a hostname with an</tt> </tt> -<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"><tt class="py-docstring"> optional port (separated by C{":"}) which will be converted into a</tt> </tt> -<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"><tt class="py-docstring"> tuple of C{(hostname, port)}.) A socket will be connected to this</tt> </tt> -<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-docstring"> address and used for communication. Exceptions from the C{socket} call</tt> </tt> -<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-docstring"> may be thrown in this case.</tt> </tt> -<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-docstring"> @param sock: a socket or socket-like object to create the session over.</tt> </tt> -<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-docstring"> @type sock: socket</tt> </tt> -<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt> -<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"> <tt class="py-comment"># convert "host:port" into (host, port)</tt> </tt> -<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">22</tt><tt class="py-op">)</tt> </tt> -<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> -<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"> <tt class="py-comment"># connect to the given (host, port)</tt> </tt> -<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> -<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> -<a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Method paramiko.SSHClient.connect()=paramiko.SSHClient-class.html#connect,Method paramiko.Transport.connect()=paramiko.Transport-class.html#connect"><a title="paramiko.SSHClient.connect -paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-95', 'connect', 'link-95');">connect</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> <tt class="py-comment"># okay, normal socket-ish flow here...</tt> </tt> -<a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ +<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> <tt id="link-93" class="py-name" targets="Variable paramiko.Transport._compression_info=paramiko.Transport-class.html#_compression_info"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-93', '_compression_info', 'link-93');">_compression_info</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt class="py-comment"># zlib@openssh.com is just zlib, but only turned on after a successful</tt> </tt> +<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> <tt class="py-comment"># authentication. openssh servers may only offer this type because</tt> </tt> +<a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"> <tt class="py-comment"># they've had troubles with security holes in zlib in the past.</tt> </tt> +<a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt id="link-94" class="py-name"><a title="paramiko.compress.ZlibCompressor" class="py-name" href="#" onclick="return doclink('link-94', 'ZlibCompressor', 'link-11');">ZlibCompressor</a></tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="paramiko.compress.ZlibDecompressor" class="py-name" href="#" onclick="return doclink('link-95', 'ZlibDecompressor', 'link-12');">ZlibDecompressor</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> +<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"> <tt class="py-string">'zlib'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt id="link-96" class="py-name"><a title="paramiko.compress.ZlibCompressor" class="py-name" href="#" onclick="return doclink('link-96', 'ZlibCompressor', 'link-11');">ZlibCompressor</a></tt><tt class="py-op">,</tt> <tt id="link-97" class="py-name"><a title="paramiko.compress.ZlibDecompressor" class="py-name" href="#" onclick="return doclink('link-97', 'ZlibDecompressor', 'link-12');">ZlibDecompressor</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> +<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"> <tt class="py-string">'none'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> +<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"> </tt> +<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> </tt> +<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"> <tt id="link-98" class="py-name" targets="Variable paramiko.Transport._modulus_pack=paramiko.Transport-class.html#_modulus_pack"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-98', '_modulus_pack', 'link-98');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"> </tt> +<a name="Transport.__init__"></a><div id="Transport.__init__-def"><a name="L250"></a><tt class="py-lineno"> 250</tt> <a class="py-toggle" href="#" id="Transport.__init__-toggle" onclick="return toggle('Transport.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sock</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.__init__-expanded"><a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"><tt class="py-docstring"> Create a new SSH session over an existing socket, or socket-like</tt> </tt> +<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"><tt class="py-docstring"> object. This only creates the Transport object; it doesn't begin the</tt> </tt> +<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"><tt class="py-docstring"> SSH session yet. Use L{connect} or L{start_client} to begin a client</tt> </tt> +<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"><tt class="py-docstring"> session, or L{start_server} to begin a server session.</tt> </tt> +<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"><tt class="py-docstring"> If the object is not actually a socket, it must have the following</tt> </tt> +<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"><tt class="py-docstring"> methods:</tt> </tt> +<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"><tt class="py-docstring"> - C{send(str)}: Writes from 1 to C{len(str)} bytes, and</tt> </tt> +<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"><tt class="py-docstring"> returns an int representing the number of bytes written. Returns</tt> </tt> +<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"><tt class="py-docstring"> 0 or raises C{EOFError} if the stream has been closed.</tt> </tt> +<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"><tt class="py-docstring"> - C{recv(int)}: Reads from 1 to C{int} bytes and returns them as a</tt> </tt> +<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-docstring"> string. Returns 0 or raises C{EOFError} if the stream has been</tt> </tt> +<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-docstring"> closed.</tt> </tt> +<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-docstring"> - C{close()}: Closes the socket.</tt> </tt> +<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-docstring"> - C{settimeout(n)}: Sets a (float) timeout on I/O operations.</tt> </tt> +<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-docstring"> For ease of use, you may also pass in an address (as a tuple) or a host</tt> </tt> +<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"><tt class="py-docstring"> string as the C{sock} argument. (A host string is a hostname with an</tt> </tt> +<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-docstring"> optional port (separated by C{":"}) which will be converted into a</tt> </tt> +<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> tuple of C{(hostname, port)}.) A socket will be connected to this</tt> </tt> +<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-docstring"> address and used for communication. Exceptions from the C{socket} call</tt> </tt> +<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-docstring"> may be thrown in this case.</tt> </tt> +<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"><tt class="py-docstring"> @param sock: a socket or socket-like object to create the session over.</tt> </tt> +<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"><tt class="py-docstring"> @type sock: socket</tt> </tt> +<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-comment"># convert "host:port" into (host, port)</tt> </tt> +<a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"> <tt class="py-name">hl</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> +<a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">22</tt><tt class="py-op">)</tt> </tt> +<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">hl</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> +<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"> <tt class="py-comment"># connect to the given (host, port)</tt> </tt> +<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"> <tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> +<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">family</tt><tt class="py-op">,</tt> <tt class="py-name">socktype</tt><tt class="py-op">,</tt> <tt class="py-name">proto</tt><tt class="py-op">,</tt> <tt class="py-name">canonname</tt><tt class="py-op">,</tt> <tt class="py-name">sockaddr</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getaddrinfo</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_UNSPEC</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">socktype</tt> <tt class="py-op">==</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">:</tt> </tt> +<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"> <tt class="py-name">af</tt> <tt class="py-op">=</tt> <tt class="py-name">family</tt> </tt> +<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"> <tt class="py-name">addr</tt> <tt class="py-op">=</tt> <tt class="py-name">sockaddr</tt> </tt> +<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-99" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-99', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No suitable address family for %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> +<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> <tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">af</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">SOCK_STREAM</tt><tt class="py-op">)</tt> </tt> +<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method paramiko.SSHClient.connect()=paramiko.SSHClient-class.html#connect,Method paramiko.Transport.connect()=paramiko.Transport-class.html#connect"><a title="paramiko.SSHClient.connect +paramiko.Transport.connect" class="py-name" href="#" onclick="return doclink('link-100', 'connect', 'link-100');">connect</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-comment"># okay, normal socket-ish flow here...</tt> </tt> +<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method paramiko.Agent.__init__()=paramiko.Agent-class.html#__init__,Method paramiko.AgentKey.__init__()=paramiko.AgentKey-class.html#__init__,Method paramiko.BadAuthenticationType.__init__()=paramiko.BadAuthenticationType-class.html#__init__,Method paramiko.BadHostKeyException.__init__()=paramiko.BadHostKeyException-class.html#__init__,Method paramiko.BufferedFile.__init__()=paramiko.BufferedFile-class.html#__init__,Method paramiko.Channel.__init__()=paramiko.Channel-class.html#__init__,Method paramiko.ChannelException.__init__()=paramiko.ChannelException-class.html#__init__,Method paramiko.DSSKey.__init__()=paramiko.DSSKey-class.html#__init__,Method paramiko.HostKeys.__init__()=paramiko.HostKeys-class.html#__init__,Method paramiko.Message.__init__()=paramiko.Message-class.html#__init__,Method paramiko.PKey.__init__()=paramiko.PKey-class.html#__init__,Method paramiko.RSAKey.__init__()=paramiko.RSAKey-class.html#__init__,Method paramiko.SFTPAttributes.__init__()=paramiko.SFTPAttributes-class.html#__init__,Method paramiko.SFTPClient.__init__()=paramiko.SFTPClient-class.html#__init__,Method paramiko.SFTPFile.__init__()=paramiko.SFTPFile-class.html#__init__,Method paramiko.SFTPHandle.__init__()=paramiko.SFTPHandle-class.html#__init__,Method paramiko.SFTPServer.__init__()=paramiko.SFTPServer-class.html#__init__,Method paramiko.SFTPServerInterface.__init__()=paramiko.SFTPServerInterface-class.html#__init__,Method paramiko.SSHClient.__init__()=paramiko.SSHClient-class.html#__init__,Method paramiko.SSHConfig.__init__()=paramiko.SSHConfig-class.html#__init__,Method paramiko.SecurityOptions.__init__()=paramiko.SecurityOptions-class.html#__init__,Method paramiko.SubsystemHandler.__init__()=paramiko.SubsystemHandler-class.html#__init__,Method paramiko.Transport.__init__()=paramiko.Transport-class.html#__init__,Method paramiko.ber.BER.__init__()=paramiko.ber.BER-class.html#__init__,Method paramiko.buffered_pipe.BufferedPipe.__init__()=paramiko.buffered_pipe.BufferedPipe-class.html#__init__,Method paramiko.channel.ChannelStderrFile.__init__()=paramiko.channel.ChannelStderrFile-class.html#__init__,Method paramiko.compress.ZlibCompressor.__init__()=paramiko.compress.ZlibCompressor-class.html#__init__,Method paramiko.compress.ZlibDecompressor.__init__()=paramiko.compress.ZlibDecompressor-class.html#__init__,Method paramiko.hostkeys.HostKeyEntry.__init__()=paramiko.hostkeys.HostKeyEntry-class.html#__init__,Method paramiko.kex_gex.KexGex.__init__()=paramiko.kex_gex.KexGex-class.html#__init__,Method paramiko.kex_group1.KexGroup1.__init__()=paramiko.kex_group1.KexGroup1-class.html#__init__,Method paramiko.logging22.Formatter.__init__()=paramiko.logging22.Formatter-class.html#__init__,Method paramiko.logging22.StreamHandler.__init__()=paramiko.logging22.StreamHandler-class.html#__init__,Method paramiko.logging22.logger.__init__()=paramiko.logging22.logger-class.html#__init__,Method paramiko.pipe.OrPipe.__init__()=paramiko.pipe.OrPipe-class.html#__init__,Method paramiko.pipe.PosixPipe.__init__()=paramiko.pipe.PosixPipe-class.html#__init__,Method paramiko.pipe.WindowsPipe.__init__()=paramiko.pipe.WindowsPipe-class.html#__init__,Method paramiko.primes.ModulusPack.__init__()=paramiko.primes.ModulusPack-class.html#__init__,Method paramiko.rng.StrongLockingRandomPool.__init__()=paramiko.rng.StrongLockingRandomPool-class.html#__init__,Method paramiko.ssh_exception.PartialAuthentication.__init__()=paramiko.ssh_exception.PartialAuthentication-class.html#__init__,Method paramiko.transport.ChannelMap.__init__()=paramiko.transport.ChannelMap-class.html#__init__,Method paramiko.util.Counter.__init__()=paramiko.util.Counter-class.html#__init__,Method paramiko.util.enumerate.__init__()=paramiko.util.enumerate-class.html#__init__,Method paramiko.win_pageant.PageantConnection.__init__()=paramiko.win_pageant.PageantConnection-class.html#__init__"><a title="paramiko.Agent.__init__ paramiko.AgentKey.__init__ paramiko.BadAuthenticationType.__init__ paramiko.BadHostKeyException.__init__ @@ -380,9 +396,11 @@ paramiko.primes.ModulusPack.__init__ paramiko.rng.StrongLockingRandomPool.__init__ paramiko.ssh_exception.PartialAuthentication.__init__ paramiko.transport.ChannelMap.__init__ +paramiko.util.Counter.__init__ paramiko.util.enumerate.__init__ -paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-96', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool +paramiko.win_pageant.PageantConnection.__init__" class="py-name" href="#" onclick="return doclink('link-101', '__init__', 'link-101');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">setDaemon</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Variable paramiko.auth_handler.randpool=paramiko.auth_handler-module.html#randpool,Variable paramiko.channel.randpool=paramiko.channel-module.html#randpool,Variable paramiko.client.randpool=paramiko.client-module.html#randpool,Variable paramiko.common.randpool=paramiko.common-module.html#randpool,Variable paramiko.dsskey.randpool=paramiko.dsskey-module.html#randpool,Variable paramiko.hostkeys.randpool=paramiko.hostkeys-module.html#randpool,Variable paramiko.kex_gex.randpool=paramiko.kex_gex-module.html#randpool,Variable paramiko.kex_group1.randpool=paramiko.kex_group1-module.html#randpool,Variable paramiko.packet.randpool=paramiko.packet-module.html#randpool,Variable paramiko.pkey.randpool=paramiko.pkey-module.html#randpool,Variable paramiko.rsakey.randpool=paramiko.rsakey-module.html#randpool,Variable paramiko.server.randpool=paramiko.server-module.html#randpool,Variable paramiko.sftp.randpool=paramiko.sftp-module.html#randpool,Variable paramiko.sftp_attr.randpool=paramiko.sftp_attr-module.html#randpool,Variable paramiko.sftp_client.randpool=paramiko.sftp_client-module.html#randpool,Variable paramiko.sftp_file.randpool=paramiko.sftp_file-module.html#randpool,Variable paramiko.sftp_handle.randpool=paramiko.sftp_handle-module.html#randpool,Variable paramiko.sftp_server.randpool=paramiko.sftp_server-module.html#randpool,Variable paramiko.sftp_si.randpool=paramiko.sftp_si-module.html#randpool,Variable paramiko.transport.randpool=paramiko.transport-module.html#randpool,Variable paramiko.util.randpool=paramiko.util-module.html#randpool"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -402,7 +420,7 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-97', 'randpool', 'link-97');">randpool</a></tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-102', 'randpool', 'link-102');">randpool</a></tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -422,104 +440,105 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-98', 'randpool', 'link-97');">randpool</a></tt> </tt> -<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> -<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"> <tt class="py-comment"># Python < 2.3 doesn't have the settimeout method - RogerB</tt> </tt> -<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"> <tt class="py-comment"># we set the timeout so we can check self.active periodically to</tt> </tt> -<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># see if we should bail. socket.timeout exception is never</tt> </tt> -<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># propagated.</tt> </tt> -<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout -paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-99', 'settimeout', 'link-99');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt> -<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"> </tt> -<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"> <tt class="py-comment"># negotiated crypto parameters</tt> </tt> -<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt> <tt class="py-op">=</tt> <tt class="py-name">Packetizer</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> </tt> -<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt> <tt class="py-op">=</tt> <tt class="py-string">'SSH-'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="paramiko.Transport._PROTO_ID" class="py-name" href="#" onclick="return doclink('link-100', '_PROTO_ID', 'link-74');">_PROTO_ID</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'-'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="paramiko.Transport._CLIENT_ID" class="py-name" href="#" onclick="return doclink('link-101', '_CLIENT_ID', 'link-75');">_CLIENT_ID</a></tt> </tt> -<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"> </tt> -<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"> <tt class="py-comment"># state used during negotiation</tt> </tt> -<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-103', 'randpool', 'link-102');">randpool</a></tt> </tt> +<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt> <tt class="py-op">=</tt> <tt class="py-name">sock</tt> </tt> +<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"> <tt class="py-comment"># Python < 2.3 doesn't have the settimeout method - RogerB</tt> </tt> +<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"> <tt class="py-comment"># we set the timeout so we can check self.active periodically to</tt> </tt> +<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"> <tt class="py-comment"># see if we should bail. socket.timeout exception is never</tt> </tt> +<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"> <tt class="py-comment"># propagated.</tt> </tt> +<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method paramiko.Channel.settimeout()=paramiko.Channel-class.html#settimeout,Method paramiko.SFTPFile.settimeout()=paramiko.SFTPFile-class.html#settimeout"><a title="paramiko.Channel.settimeout +paramiko.SFTPFile.settimeout" class="py-name" href="#" onclick="return doclink('link-104', 'settimeout', 'link-104');">settimeout</a></tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt> +<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"> </tt> -<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># synchronization (always higher level than write_lock)</tt> </tt> -<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"> </tt> -<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-comment"># tracking open channels</tt> </tt> -<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name" targets="Class paramiko.transport.ChannelMap=paramiko.transport.ChannelMap-class.html"><a title="paramiko.transport.ChannelMap" class="py-name" href="#" onclick="return doclink('link-102', 'ChannelMap', 'link-102');">ChannelMap</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> <tt class="py-comment"># (id -> Event)</tt> </tt> -<a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> <tt class="py-comment"># (id -> True)</tt> </tt> -<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt> <tt class="py-op">=</tt> <tt class="py-number">65536</tt> </tt> -<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-number">34816</tt> </tt> -<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"> <tt class="py-comment"># negotiated crypto parameters</tt> </tt> +<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt> <tt class="py-op">=</tt> <tt class="py-name">Packetizer</tt><tt class="py-op">(</tt><tt class="py-name">sock</tt><tt class="py-op">)</tt> </tt> +<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt> <tt class="py-op">=</tt> <tt class="py-string">'SSH-'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="paramiko.Transport._PROTO_ID" class="py-name" href="#" onclick="return doclink('link-105', '_PROTO_ID', 'link-78');">_PROTO_ID</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'-'</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="paramiko.Transport._CLIENT_ID" class="py-name" href="#" onclick="return doclink('link-106', '_CLIENT_ID', 'link-79');">_CLIENT_ID</a></tt> </tt> +<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"> </tt> +<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-comment"># state used during negotiation</tt> </tt> +<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> <a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"> </tt> -<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'paramiko.transport'</tt> </tt> -<a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Class paramiko.logging22.logger=paramiko.logging22.logger-class.html"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-103', 'logger', 'link-103');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-104', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Function paramiko.util.get_logger()=paramiko.util-module.html#get_logger"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-105', 'get_logger', 'link-105');">get_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt><tt class="py-op">)</tt> </tt> -<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_log</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-106', 'logger', 'link-103');">logger</a></tt><tt class="py-op">)</tt> </tt> -<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-107', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># response Message from an arbitrary global request</tt> </tt> -<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># user-defined event callbacks</tt> </tt> -<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">banner_timeout</tt> <tt class="py-op">=</tt> <tt class="py-number">15</tt> <tt class="py-comment"># how long (seconds) to wait for the SSH banner</tt> </tt> -<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"> </tt> -<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"> <tt class="py-comment"># server mode:</tt> </tt> -<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> -<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-op">]</tt> </tt> -<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Condition</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">)</tt> </tt> -<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> -</div><a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"> </tt> -<a name="Transport.__repr__"></a><div id="Transport.__repr__-def"><a name="L347"></a><tt class="py-lineno"> 347</tt> <a class="py-toggle" href="#" id="Transport.__repr__-toggle" onclick="return toggle('Transport.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.__repr__-expanded"><a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> -<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">'<paramiko.Transport at %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt> </tt> -<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (unconnected)'</tt> </tt> -<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> -<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (cipher %s, %d bits)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> </tt> -<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-108', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> </tt> -<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method paramiko.Transport.is_authenticated()=paramiko.Transport-class.html#is_authenticated"><a title="paramiko.Transport.is_authenticated" class="py-name" href="#" onclick="return doclink('link-109', 'is_authenticated', 'link-109');">is_authenticated</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (active; %d open channel(s))'</tt> <tt class="py-op">%</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">)</tt> </tt> -<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">:</tt> </tt> -<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (connected; awaiting auth)'</tt> </tt> -<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (connecting)'</tt> </tt> -<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'>'</tt> </tt> -<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> </tt> -<a name="Transport.atfork"></a><div id="Transport.atfork-def"><a name="L369"></a><tt class="py-lineno"> 369</tt> <a class="py-toggle" href="#" id="Transport.atfork-toggle" onclick="return toggle('Transport.atfork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#atfork">atfork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.atfork-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.atfork-expanded"><a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"><tt class="py-docstring"> Terminate this Transport without closing the session. On posix</tt> </tt> -<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"><tt class="py-docstring"> systems, if a Transport is open during process forking, both parent</tt> </tt> -<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"><tt class="py-docstring"> and child will share the underlying socket, but only one process can</tt> </tt> -<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"><tt class="py-docstring"> use the connection (without corrupting the session). Use this method</tt> </tt> -<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"><tt class="py-docstring"> to clean up a Transport object without disrupting the other process.</tt> </tt> -<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.3</tt> </tt> -<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close +<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># synchronization (always higher level than write_lock)</tt> </tt> +<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"> </tt> +<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"> <tt class="py-comment"># tracking open channels</tt> </tt> +<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name" targets="Class paramiko.transport.ChannelMap=paramiko.transport.ChannelMap-class.html"><a title="paramiko.transport.ChannelMap" class="py-name" href="#" onclick="return doclink('link-107', 'ChannelMap', 'link-107');">ChannelMap</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> <tt class="py-comment"># (id -> Event)</tt> </tt> +<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> <tt class="py-comment"># (id -> True)</tt> </tt> +<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> +<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt> <tt class="py-op">=</tt> <tt class="py-number">65536</tt> </tt> +<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-number">34816</tt> </tt> +<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"> </tt> +<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_timeout</tt> <tt class="py-op">=</tt> <tt class="py-number">30.0</tt> </tt> +<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'paramiko.transport'</tt> </tt> +<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Class paramiko.logging22.logger=paramiko.logging22.logger-class.html"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-108');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-109', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Function paramiko.util.get_logger()=paramiko.util-module.html#get_logger"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-110', 'get_logger', 'link-110');">get_logger</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt><tt class="py-op">)</tt> </tt> +<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_log</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-111', 'logger', 'link-108');">logger</a></tt><tt class="py-op">)</tt> </tt> +<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-112', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># response Message from an arbitrary global request</tt> </tt> +<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># user-defined event callbacks</tt> </tt> +<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">banner_timeout</tt> <tt class="py-op">=</tt> <tt class="py-number">15</tt> <tt class="py-comment"># how long (seconds) to wait for the SSH banner</tt> </tt> +<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"> </tt> +<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"> <tt class="py-comment"># server mode:</tt> </tt> +<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> +<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-op">]</tt> </tt> +<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Condition</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">)</tt> </tt> +<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">}</tt> </tt> +</div><a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> </tt> +<a name="Transport.__repr__"></a><div id="Transport.__repr__-def"><a name="L365"></a><tt class="py-lineno"> 365</tt> <a class="py-toggle" href="#" id="Transport.__repr__-toggle" onclick="return toggle('Transport.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.__repr__-expanded"><a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"><tt class="py-docstring"> Returns a string representation of this object, for debugging.</tt> </tt> +<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">'<paramiko.Transport at %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt> </tt> +<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (unconnected)'</tt> </tt> +<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">!=</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> +<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (cipher %s, %d bits)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> </tt> +<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-113', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-number">8</tt><tt class="py-op">)</tt> </tt> +<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method paramiko.Transport.is_authenticated()=paramiko.Transport-class.html#is_authenticated"><a title="paramiko.Transport.is_authenticated" class="py-name" href="#" onclick="return doclink('link-114', 'is_authenticated', 'link-114');">is_authenticated</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (active; %d open channel(s))'</tt> <tt class="py-op">%</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">)</tt> </tt> +<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">:</tt> </tt> +<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (connected; awaiting auth)'</tt> </tt> +<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' (connecting)'</tt> </tt> +<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'>'</tt> </tt> +<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"> </tt> +<a name="Transport.atfork"></a><div id="Transport.atfork-def"><a name="L387"></a><tt class="py-lineno"> 387</tt> <a class="py-toggle" href="#" id="Transport.atfork-toggle" onclick="return toggle('Transport.atfork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#atfork">atfork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.atfork-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.atfork-expanded"><a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> Terminate this Transport without closing the session. On posix</tt> </tt> +<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> systems, if a Transport is open during process forking, both parent</tt> </tt> +<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> and child will share the underlying socket, but only one process can</tt> </tt> +<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"><tt class="py-docstring"> use the connection (without corrupting the session). Use this method</tt> </tt> +<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"><tt class="py-docstring"> to clean up a Transport object without disrupting the other process.</tt> </tt> +<a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.3</tt> </tt> +<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method paramiko.Agent.close()=paramiko.Agent-class.html#close,Method paramiko.BufferedFile.close()=paramiko.BufferedFile-class.html#close,Method paramiko.Channel.close()=paramiko.Channel-class.html#close,Method paramiko.SFTPClient.close()=paramiko.SFTPClient-class.html#close,Method paramiko.SFTPFile.close()=paramiko.SFTPFile-class.html#close,Method paramiko.SFTPHandle.close()=paramiko.SFTPHandle-class.html#close,Method paramiko.SSHClient.close()=paramiko.SSHClient-class.html#close,Method paramiko.Transport.close()=paramiko.Transport-class.html#close,Method paramiko.buffered_pipe.BufferedPipe.close()=paramiko.buffered_pipe.BufferedPipe-class.html#close,Method paramiko.pipe.PosixPipe.close()=paramiko.pipe.PosixPipe-class.html#close,Method paramiko.pipe.WindowsPipe.close()=paramiko.pipe.WindowsPipe-class.html#close,Method paramiko.win_pageant.PageantConnection.close()=paramiko.win_pageant.PageantConnection-class.html#close"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -530,8 +549,8 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-110', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="paramiko.Agent.close +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-115', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -542,201 +561,201 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-111', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> </tt> -<a name="Transport.get_security_options"></a><div id="Transport.get_security_options-def"><a name="L382"></a><tt class="py-lineno"> 382</tt> <a class="py-toggle" href="#" id="Transport.get_security_options-toggle" onclick="return toggle('Transport.get_security_options');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_security_options">get_security_options</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_security_options-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_security_options-expanded"><a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"><tt class="py-docstring"> Return a L{SecurityOptions} object which can be used to tweak the</tt> </tt> -<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"><tt class="py-docstring"> encryption algorithms this transport will permit, and the order of</tt> </tt> -<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-docstring"> preference for them.</tt> </tt> -<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object that can be used to change the preferred algorithms</tt> </tt> -<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> for encryption, digest (hash), public key, and key exchange.</tt> </tt> -<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SecurityOptions}</tt> </tt> -<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-112" class="py-name" targets="Class paramiko.SecurityOptions=paramiko.SecurityOptions-class.html"><a title="paramiko.SecurityOptions" class="py-name" href="#" onclick="return doclink('link-112', 'SecurityOptions', 'link-112');">SecurityOptions</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> </tt> -<a name="Transport.start_client"></a><div id="Transport.start_client-def"><a name="L394"></a><tt class="py-lineno"> 394</tt> <a class="py-toggle" href="#" id="Transport.start_client-toggle" onclick="return toggle('Transport.start_client');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#start_client">start_client</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.start_client-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.start_client-expanded"><a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate a new SSH2 session as a client. This is the first step after</tt> </tt> -<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> creating a new L{Transport}. A separate thread is created for protocol</tt> </tt> -<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"> negotiation.</tt> </tt> -<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-docstring"> If an event is passed in, this method returns immediately. When</tt> </tt> -<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"><tt class="py-docstring"> negotiation is done (successful or not), the given C{Event} will</tt> </tt> -<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-docstring"> be triggered. On failure, L{is_active} will return C{False}.</tt> </tt> -<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"><tt class="py-docstring"> (Since 1.4) If C{event} is C{None}, this method will not return until</tt> </tt> -<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-docstring"> negotation is done. On success, the method returns normally.</tt> </tt> -<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise an SSHException is raised.</tt> </tt> -<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"> After a successful negotiation, you will usually want to authenticate,</tt> </tt> -<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> calling L{auth_password <Transport.auth_password>} or</tt> </tt> -<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> L{auth_publickey <Transport.auth_publickey>}.</tt> </tt> -<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"><tt class="py-docstring"> @note: L{connect} is a simpler method for connecting as a client.</tt> </tt> -<a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"><tt class="py-docstring"> @note: After calling this method (or L{start_server} or L{connect}),</tt> </tt> -<a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-docstring"> you should no longer directly read from or write to the original</tt> </tt> -<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> socket object.</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-116', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"> </tt> +<a name="Transport.get_security_options"></a><div id="Transport.get_security_options-def"><a name="L400"></a><tt class="py-lineno"> 400</tt> <a class="py-toggle" href="#" id="Transport.get_security_options-toggle" onclick="return toggle('Transport.get_security_options');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_security_options">get_security_options</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_security_options-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_security_options-expanded"><a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-docstring"> Return a L{SecurityOptions} object which can be used to tweak the</tt> </tt> +<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"><tt class="py-docstring"> encryption algorithms this transport will permit, and the order of</tt> </tt> +<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"><tt class="py-docstring"> preference for them.</tt> </tt> +<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-docstring"> @return: an object that can be used to change the preferred algorithms</tt> </tt> +<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"> for encryption, digest (hash), public key, and key exchange.</tt> </tt> +<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SecurityOptions}</tt> </tt> +<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-117" class="py-name" targets="Class paramiko.SecurityOptions=paramiko.SecurityOptions-class.html"><a title="paramiko.SecurityOptions" class="py-name" href="#" onclick="return doclink('link-117', 'SecurityOptions', 'link-117');">SecurityOptions</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +</div><a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"> </tt> +<a name="Transport.start_client"></a><div id="Transport.start_client-def"><a name="L412"></a><tt class="py-lineno"> 412</tt> <a class="py-toggle" href="#" id="Transport.start_client-toggle" onclick="return toggle('Transport.start_client');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#start_client">start_client</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.start_client-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.start_client-expanded"><a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate a new SSH2 session as a client. This is the first step after</tt> </tt> +<a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-docstring"> creating a new L{Transport}. A separate thread is created for protocol</tt> </tt> +<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> negotiation.</tt> </tt> <a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when negotiation is complete</tt> </tt> -<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-docstring"> (optional)</tt> </tt> -<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> +<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-docstring"> If an event is passed in, this method returns immediately. When</tt> </tt> +<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-docstring"> negotiation is done (successful or not), the given C{Event} will</tt> </tt> +<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-docstring"> be triggered. On failure, L{is_active} will return C{False}.</tt> </tt> <a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if negotiation fails (and no C{event} was passed</tt> </tt> -<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"><tt class="py-docstring"> in)</tt> </tt> -<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"> <tt class="py-comment"># async, return immediately and let the app poll for completion</tt> </tt> -<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> -<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"> </tt> -<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"> <tt class="py-comment"># synchronous, wait for a result</tt> </tt> -<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method paramiko.Transport.get_exception()=paramiko.Transport-class.html#get_exception"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-113', 'get_exception', 'link-113');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-114" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-114', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -</div><a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> </tt> -<a name="Transport.start_server"></a><div id="Transport.start_server-def"><a name="L445"></a><tt class="py-lineno"> 445</tt> <a class="py-toggle" href="#" id="Transport.start_server-toggle" onclick="return toggle('Transport.start_server');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#start_server">start_server</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">server</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.start_server-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.start_server-expanded"><a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate a new SSH2 session as a server. This is the first step after</tt> </tt> -<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"><tt class="py-docstring"> creating a new L{Transport} and setting up your server host key(s). A</tt> </tt> -<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"><tt class="py-docstring"> separate thread is created for protocol negotiation.</tt> </tt> -<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"><tt class="py-docstring"> If an event is passed in, this method returns immediately. When</tt> </tt> -<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"><tt class="py-docstring"> negotiation is done (successful or not), the given C{Event} will</tt> </tt> -<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"><tt class="py-docstring"> be triggered. On failure, L{is_active} will return C{False}.</tt> </tt> -<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"><tt class="py-docstring"> (Since 1.4) If C{event} is C{None}, this method will not return until</tt> </tt> -<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"><tt class="py-docstring"> negotation is done. On success, the method returns normally.</tt> </tt> -<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise an SSHException is raised.</tt> </tt> -<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"><tt class="py-docstring"> After a successful negotiation, the client will need to authenticate.</tt> </tt> -<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"><tt class="py-docstring"> Override the methods</tt> </tt> -<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"><tt class="py-docstring"> L{get_allowed_auths <ServerInterface.get_allowed_auths>},</tt> </tt> -<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_none <ServerInterface.check_auth_none>},</tt> </tt> -<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_password <ServerInterface.check_auth_password>}, and</tt> </tt> -<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_publickey <ServerInterface.check_auth_publickey>} in the</tt> </tt> -<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> given C{server} object to control the authentication process.</tt> </tt> -<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"><tt class="py-docstring"> After a successful authentication, the client should request to open</tt> </tt> -<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"><tt class="py-docstring"> a channel. Override</tt> </tt> -<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"><tt class="py-docstring"> L{check_channel_request <ServerInterface.check_channel_request>} in the</tt> </tt> -<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"><tt class="py-docstring"> given C{server} object to allow channels to be opened.</tt> </tt> -<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-docstring"> @note: After calling this method (or L{start_client} or L{connect}),</tt> </tt> -<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-docstring"> you should no longer directly read from or write to the original</tt> </tt> -<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-docstring"> socket object.</tt> </tt> -<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when negotiation is complete.</tt> </tt> -<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> -<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> @param server: an object used to perform authentication and create</tt> </tt> -<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel}s.</tt> </tt> -<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> @type server: L{server.ServerInterface}</tt> </tt> -<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if negotiation fails (and no C{event} was passed</tt> </tt> -<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"><tt class="py-docstring"> in)</tt> </tt> -<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-115" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-115', 'server', 'link-35');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"> <tt id="link-116" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-116', 'server', 'link-35');">server</a></tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="paramiko.ServerInterface" class="py-name" href="#" onclick="return doclink('link-117', 'ServerInterface', 'link-36');">ServerInterface</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-118', 'server', 'link-35');">server</a></tt> </tt> -<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"> <tt class="py-comment"># async, return immediately and let the app poll for completion</tt> </tt> -<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> -<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> </tt> -<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> <tt class="py-comment"># synchronous, wait for a result</tt> </tt> -<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-119', 'get_exception', 'link-113');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-120" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-120', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -</div><a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> </tt> -<a name="Transport.add_server_key"></a><div id="Transport.add_server_key-def"><a name="L509"></a><tt class="py-lineno"> 509</tt> <a class="py-toggle" href="#" id="Transport.add_server_key-toggle" onclick="return toggle('Transport.add_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#add_server_key">add_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.add_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.add_server_key-expanded"><a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-docstring"> Add a host key to the list of keys used for server mode. When behaving</tt> </tt> -<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-docstring"> as a server, the host key is used to sign certain packets during the</tt> </tt> -<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-docstring"> SSH2 negotiation, so that the client can trust that we are who we say</tt> </tt> -<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"><tt class="py-docstring"> we are. Because this is used for signing, the key must contain private</tt> </tt> -<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"><tt class="py-docstring"> key info, not just the public half. Only one key of each type (RSA or</tt> </tt> -<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"><tt class="py-docstring"> DSS) is kept.</tt> </tt> -<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the host key to add, usually an L{RSAKey <rsakey.RSAKey>} or</tt> </tt> -<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"><tt class="py-docstring"> L{DSSKey <dsskey.DSSKey>}.</tt> </tt> -<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey <pkey.PKey>}</tt> </tt> -<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name +<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-docstring"> (Since 1.4) If C{event} is C{None}, this method will not return until</tt> </tt> +<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"><tt class="py-docstring"> negotation is done. On success, the method returns normally.</tt> </tt> +<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise an SSHException is raised.</tt> </tt> +<a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"><tt class="py-docstring"> After a successful negotiation, you will usually want to authenticate,</tt> </tt> +<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"><tt class="py-docstring"> calling L{auth_password <Transport.auth_password>} or</tt> </tt> +<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-docstring"> L{auth_publickey <Transport.auth_publickey>}.</tt> </tt> +<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> @note: L{connect} is a simpler method for connecting as a client.</tt> </tt> +<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"><tt class="py-docstring"> @note: After calling this method (or L{start_server} or L{connect}),</tt> </tt> +<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-docstring"> you should no longer directly read from or write to the original</tt> </tt> +<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"><tt class="py-docstring"> socket object.</tt> </tt> +<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when negotiation is complete</tt> </tt> +<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"><tt class="py-docstring"> (optional)</tt> </tt> +<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> +<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if negotiation fails (and no C{event} was passed</tt> </tt> +<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"><tt class="py-docstring"> in)</tt> </tt> +<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"> <tt class="py-comment"># async, return immediately and let the app poll for completion</tt> </tt> +<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> +<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"> </tt> +<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> <tt class="py-comment"># synchronous, wait for a result</tt> </tt> +<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method paramiko.Transport.get_exception()=paramiko.Transport-class.html#get_exception"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-118', 'get_exception', 'link-118');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-119" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-119', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +</div><a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"> </tt> +<a name="Transport.start_server"></a><div id="Transport.start_server-def"><a name="L463"></a><tt class="py-lineno"> 463</tt> <a class="py-toggle" href="#" id="Transport.start_server-toggle" onclick="return toggle('Transport.start_server');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#start_server">start_server</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">server</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.start_server-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.start_server-expanded"><a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate a new SSH2 session as a server. This is the first step after</tt> </tt> +<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"><tt class="py-docstring"> creating a new L{Transport} and setting up your server host key(s). A</tt> </tt> +<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"><tt class="py-docstring"> separate thread is created for protocol negotiation.</tt> </tt> +<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"><tt class="py-docstring"> If an event is passed in, this method returns immediately. When</tt> </tt> +<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"><tt class="py-docstring"> negotiation is done (successful or not), the given C{Event} will</tt> </tt> +<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"><tt class="py-docstring"> be triggered. On failure, L{is_active} will return C{False}.</tt> </tt> +<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-docstring"> (Since 1.4) If C{event} is C{None}, this method will not return until</tt> </tt> +<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-docstring"> negotation is done. On success, the method returns normally.</tt> </tt> +<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise an SSHException is raised.</tt> </tt> +<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> After a successful negotiation, the client will need to authenticate.</tt> </tt> +<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> Override the methods</tt> </tt> +<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"> L{get_allowed_auths <ServerInterface.get_allowed_auths>},</tt> </tt> +<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_none <ServerInterface.check_auth_none>},</tt> </tt> +<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_password <ServerInterface.check_auth_password>}, and</tt> </tt> +<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"><tt class="py-docstring"> L{check_auth_publickey <ServerInterface.check_auth_publickey>} in the</tt> </tt> +<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"><tt class="py-docstring"> given C{server} object to control the authentication process.</tt> </tt> +<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"><tt class="py-docstring"> After a successful authentication, the client should request to open</tt> </tt> +<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"><tt class="py-docstring"> a channel. Override</tt> </tt> +<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"><tt class="py-docstring"> L{check_channel_request <ServerInterface.check_channel_request>} in the</tt> </tt> +<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-docstring"> given C{server} object to allow channels to be opened.</tt> </tt> +<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"><tt class="py-docstring"> @note: After calling this method (or L{start_client} or L{connect}),</tt> </tt> +<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"><tt class="py-docstring"> you should no longer directly read from or write to the original</tt> </tt> +<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"><tt class="py-docstring"> socket object.</tt> </tt> +<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when negotiation is complete.</tt> </tt> +<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> +<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-docstring"> @param server: an object used to perform authentication and create</tt> </tt> +<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> L{Channel}s.</tt> </tt> +<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> @type server: L{server.ServerInterface}</tt> </tt> +<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if negotiation fails (and no C{event} was passed</tt> </tt> +<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"><tt class="py-docstring"> in)</tt> </tt> +<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-120" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-120', 'server', 'link-35');">server</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt id="link-121" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-121', 'server', 'link-35');">server</a></tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="paramiko.ServerInterface" class="py-name" href="#" onclick="return doclink('link-122', 'ServerInterface', 'link-36');">ServerInterface</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="paramiko.server" class="py-name" href="#" onclick="return doclink('link-123', 'server', 'link-35');">server</a></tt> </tt> +<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"> <tt class="py-comment"># async, return immediately and let the app poll for completion</tt> </tt> +<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> +<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"> </tt> +<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-comment"># synchronous, wait for a result</tt> </tt> +<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-124', 'get_exception', 'link-118');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-125" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-125', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +</div><a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"> </tt> +<a name="Transport.add_server_key"></a><div id="Transport.add_server_key-def"><a name="L527"></a><tt class="py-lineno"> 527</tt> <a class="py-toggle" href="#" id="Transport.add_server_key-toggle" onclick="return toggle('Transport.add_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#add_server_key">add_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.add_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.add_server_key-expanded"><a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-docstring"> Add a host key to the list of keys used for server mode. When behaving</tt> </tt> +<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"><tt class="py-docstring"> as a server, the host key is used to sign certain packets during the</tt> </tt> +<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"><tt class="py-docstring"> SSH2 negotiation, so that the client can trust that we are who we say</tt> </tt> +<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-docstring"> we are. Because this is used for signing, the key must contain private</tt> </tt> +<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-docstring"> key info, not just the public half. Only one key of each type (RSA or</tt> </tt> +<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"><tt class="py-docstring"> DSS) is kept.</tt> </tt> +<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the host key to add, usually an L{RSAKey <rsakey.RSAKey>} or</tt> </tt> +<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"><tt class="py-docstring"> L{DSSKey <dsskey.DSSKey>}.</tt> </tt> +<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey <pkey.PKey>}</tt> </tt> +<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method paramiko.AgentKey.get_name()=paramiko.AgentKey-class.html#get_name,Method paramiko.Channel.get_name()=paramiko.Channel-class.html#get_name,Method paramiko.DSSKey.get_name()=paramiko.DSSKey-class.html#get_name,Method paramiko.PKey.get_name()=paramiko.PKey-class.html#get_name,Method paramiko.RSAKey.get_name()=paramiko.RSAKey-class.html#get_name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-121', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> </tt> -<a name="Transport.get_server_key"></a><div id="Transport.get_server_key-def"><a name="L524"></a><tt class="py-lineno"> 524</tt> <a class="py-toggle" href="#" id="Transport.get_server_key-toggle" onclick="return toggle('Transport.get_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_server_key">get_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_server_key-expanded"><a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-docstring"> Return the active host key, in server mode. After negotiating with the</tt> </tt> -<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-docstring"> client, this method will return the negotiated host key. If only one</tt> </tt> -<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-docstring"> type of host key was set with L{add_server_key}, that's the only key</tt> </tt> -<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-docstring"> that will ever be returned. But in cases where you have set more than</tt> </tt> -<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"><tt class="py-docstring"> one type of host key (for example, an RSA key and a DSS key), the key</tt> </tt> -<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"><tt class="py-docstring"> type will be negotiated by the client, and this method will return the</tt> </tt> -<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-docstring"> key of the type agreed on. If the host key has not been negotiated</tt> </tt> -<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-docstring"> yet, C{None} is returned. In client mode, the behavior is undefined.</tt> </tt> -<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"><tt class="py-docstring"> @return: host key of the type negotiated by the client, or C{None}.</tt> </tt> -<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{PKey <pkey.PKey>}</tt> </tt> -<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">]</tt> </tt> -<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> -<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> </tt> -<a name="Transport.load_server_moduli"></a><div id="Transport.load_server_moduli-def"><a name="L544"></a><tt class="py-lineno"> 544</tt> <a class="py-toggle" href="#" id="Transport.load_server_moduli-toggle" onclick="return toggle('Transport.load_server_moduli');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#load_server_moduli">load_server_moduli</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.load_server_moduli-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.load_server_moduli-expanded"><a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"><tt class="py-docstring"> I{(optional)}</tt> </tt> -<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-docstring"> Load a file of prime moduli for use in doing group-exchange key</tt> </tt> -<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-docstring"> negotiation in server mode. It's a rather obscure option and can be</tt> </tt> -<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"><tt class="py-docstring"> safely ignored.</tt> </tt> -<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"><tt class="py-docstring"> In server mode, the remote client may request "group-exchange" key</tt> </tt> -<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"><tt class="py-docstring"> negotiation, which asks the server to send a random prime number that</tt> </tt> -<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"><tt class="py-docstring"> fits certain criteria. These primes are pretty difficult to compute,</tt> </tt> -<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"><tt class="py-docstring"> so they can't be generated on demand. But many systems contain a file</tt> </tt> -<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"><tt class="py-docstring"> of suitable primes (usually named something like C{/etc/ssh/moduli}).</tt> </tt> -<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"><tt class="py-docstring"> If you call C{load_server_moduli} and it returns C{True}, then this</tt> </tt> -<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"><tt class="py-docstring"> file of primes has been loaded and we will support "group-exchange" in</tt> </tt> -<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"><tt class="py-docstring"> server mode. Otherwise server mode will just claim that it doesn't</tt> </tt> -<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"><tt class="py-docstring"> support that method of key negotiation.</tt> </tt> -<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: optional path to the moduli file, if you happen to</tt> </tt> -<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"><tt class="py-docstring"> know that it's not in a standard location.</tt> </tt> -<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if a moduli file was successfully loaded; False</tt> </tt> -<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> otherwise.</tt> </tt> -<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"><tt class="py-docstring"> @note: This has no effect when used in client mode.</tt> </tt> -<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> <tt id="link-122" class="py-name" targets="Class paramiko.Transport=paramiko.Transport-class.html"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-122', 'Transport', 'link-122');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-123', '_modulus_pack', 'link-94');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt id="link-124" class="py-name"><a title="paramiko.primes.ModulusPack" class="py-name" href="#" onclick="return doclink('link-124', 'ModulusPack', 'link-30');">ModulusPack</a></tt><tt class="py-op">(</tt><tt id="link-125" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-126', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> +</div><a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> </tt> +<a name="Transport.get_server_key"></a><div id="Transport.get_server_key-def"><a name="L542"></a><tt class="py-lineno"> 542</tt> <a class="py-toggle" href="#" id="Transport.get_server_key-toggle" onclick="return toggle('Transport.get_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_server_key">get_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_server_key-expanded"><a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"><tt class="py-docstring"> Return the active host key, in server mode. After negotiating with the</tt> </tt> +<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"><tt class="py-docstring"> client, this method will return the negotiated host key. If only one</tt> </tt> +<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"><tt class="py-docstring"> type of host key was set with L{add_server_key}, that's the only key</tt> </tt> +<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-docstring"> that will ever be returned. But in cases where you have set more than</tt> </tt> +<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-docstring"> one type of host key (for example, an RSA key and a DSS key), the key</tt> </tt> +<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"><tt class="py-docstring"> type will be negotiated by the client, and this method will return the</tt> </tt> +<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"><tt class="py-docstring"> key of the type agreed on. If the host key has not been negotiated</tt> </tt> +<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"><tt class="py-docstring"> yet, C{None} is returned. In client mode, the behavior is undefined.</tt> </tt> +<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"><tt class="py-docstring"> @return: host key of the type negotiated by the client, or C{None}.</tt> </tt> +<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{PKey <pkey.PKey>}</tt> </tt> +<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">]</tt> </tt> +<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> +<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"> </tt> +<a name="Transport.load_server_moduli"></a><div id="Transport.load_server_moduli-def"><a name="L562"></a><tt class="py-lineno"> 562</tt> <a class="py-toggle" href="#" id="Transport.load_server_moduli-toggle" onclick="return toggle('Transport.load_server_moduli');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#load_server_moduli">load_server_moduli</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.load_server_moduli-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.load_server_moduli-expanded"><a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-docstring"> I{(optional)}</tt> </tt> +<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> Load a file of prime moduli for use in doing group-exchange key</tt> </tt> +<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"><tt class="py-docstring"> negotiation in server mode. It's a rather obscure option and can be</tt> </tt> +<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"><tt class="py-docstring"> safely ignored.</tt> </tt> +<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"><tt class="py-docstring"> In server mode, the remote client may request "group-exchange" key</tt> </tt> +<a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"><tt class="py-docstring"> negotiation, which asks the server to send a random prime number that</tt> </tt> +<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"><tt class="py-docstring"> fits certain criteria. These primes are pretty difficult to compute,</tt> </tt> +<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"><tt class="py-docstring"> so they can't be generated on demand. But many systems contain a file</tt> </tt> +<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"> of suitable primes (usually named something like C{/etc/ssh/moduli}).</tt> </tt> +<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"> If you call C{load_server_moduli} and it returns C{True}, then this</tt> </tt> +<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"><tt class="py-docstring"> file of primes has been loaded and we will support "group-exchange" in</tt> </tt> +<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"><tt class="py-docstring"> server mode. Otherwise server mode will just claim that it doesn't</tt> </tt> +<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"><tt class="py-docstring"> support that method of key negotiation.</tt> </tt> +<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: optional path to the moduli file, if you happen to</tt> </tt> +<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"><tt class="py-docstring"> know that it's not in a standard location.</tt> </tt> +<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if a moduli file was successfully loaded; False</tt> </tt> +<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"><tt class="py-docstring"> otherwise.</tt> </tt> +<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"><tt class="py-docstring"> @note: This has no effect when used in client mode.</tt> </tt> +<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt id="link-127" class="py-name" targets="Class paramiko.Transport=paramiko.Transport-class.html"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-127', 'Transport', 'link-127');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-128', '_modulus_pack', 'link-98');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="paramiko.primes.ModulusPack" class="py-name" href="#" onclick="return doclink('link-129', 'ModulusPack', 'link-30');">ModulusPack</a></tt><tt class="py-op">(</tt><tt id="link-130" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -756,30 +775,30 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-125', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">)</tt> </tt> -<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"> <tt class="py-comment"># places to look for the openssh "moduli" file</tt> </tt> -<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">file_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'/etc/ssh/moduli'</tt><tt class="py-op">,</tt> <tt class="py-string">'/usr/local/etc/moduli'</tt> <tt class="py-op">]</tt> </tt> -<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"> <tt class="py-name">file_list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">file_list</tt><tt class="py-op">:</tt> </tt> -<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"> <tt id="link-126" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-126', 'Transport', 'link-122');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-127', '_modulus_pack', 'link-94');">_modulus_pack</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method paramiko.primes.ModulusPack.read_file()=paramiko.primes.ModulusPack-class.html#read_file"><a title="paramiko.primes.ModulusPack.read_file" class="py-name" href="#" onclick="return doclink('link-128', 'read_file', 'link-128');">read_file</a></tt><tt class="py-op">(</tt><tt class="py-name">fn</tt><tt class="py-op">)</tt> </tt> -<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt> -<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"> <tt class="py-comment"># none succeeded</tt> </tt> -<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-129" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-129', 'Transport', 'link-122');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-130', '_modulus_pack', 'link-94');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -</div><a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt id="link-131" class="py-name" targets="Static Method paramiko.Transport.load_server_moduli()=paramiko.Transport-class.html#load_server_moduli"><a title="paramiko.Transport.load_server_moduli" class="py-name" href="#" onclick="return doclink('link-131', 'load_server_moduli', 'link-131');">load_server_moduli</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-132" class="py-name"><a title="paramiko.Transport.load_server_moduli" class="py-name" href="#" onclick="return doclink('link-132', 'load_server_moduli', 'link-131');">load_server_moduli</a></tt><tt class="py-op">)</tt> </tt> -<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> </tt> -<a name="Transport.close"></a><div id="Transport.close-def"><a name="L586"></a><tt class="py-lineno"> 586</tt> <a class="py-toggle" href="#" id="Transport.close-toggle" onclick="return toggle('Transport.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.close-expanded"><a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"><tt class="py-docstring"> Close this session, and any open channels that are tied to it.</tt> </tt> -<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="paramiko.Agent.close +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-130', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">)</tt> </tt> +<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-comment"># places to look for the openssh "moduli" file</tt> </tt> +<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-name">file_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'/etc/ssh/moduli'</tt><tt class="py-op">,</tt> <tt class="py-string">'/usr/local/etc/moduli'</tt> <tt class="py-op">]</tt> </tt> +<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">file_list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">fn</tt> <tt class="py-keyword">in</tt> <tt class="py-name">file_list</tt><tt class="py-op">:</tt> </tt> +<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-131', 'Transport', 'link-127');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-132', '_modulus_pack', 'link-98');">_modulus_pack</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Method paramiko.primes.ModulusPack.read_file()=paramiko.primes.ModulusPack-class.html#read_file"><a title="paramiko.primes.ModulusPack.read_file" class="py-name" href="#" onclick="return doclink('link-133', 'read_file', 'link-133');">read_file</a></tt><tt class="py-op">(</tt><tt class="py-name">fn</tt><tt class="py-op">)</tt> </tt> +<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> +<a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt> +<a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> +<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"> <tt class="py-comment"># none succeeded</tt> </tt> +<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"> <tt id="link-134" class="py-name"><a title="paramiko.Transport" class="py-name" href="#" onclick="return doclink('link-134', 'Transport', 'link-127');">Transport</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-135', '_modulus_pack', 'link-98');">_modulus_pack</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> +</div><a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"> <tt id="link-136" class="py-name" targets="Static Method paramiko.Transport.load_server_moduli()=paramiko.Transport-class.html#load_server_moduli"><a title="paramiko.Transport.load_server_moduli" class="py-name" href="#" onclick="return doclink('link-136', 'load_server_moduli', 'link-136');">load_server_moduli</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-137" class="py-name"><a title="paramiko.Transport.load_server_moduli" class="py-name" href="#" onclick="return doclink('link-137', 'load_server_moduli', 'link-136');">load_server_moduli</a></tt><tt class="py-op">)</tt> </tt> +<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"> </tt> +<a name="Transport.close"></a><div id="Transport.close-def"><a name="L604"></a><tt class="py-lineno"> 604</tt> <a class="py-toggle" href="#" id="Transport.close-toggle" onclick="return toggle('Transport.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.close-expanded"><a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"> Close this session, and any open channels that are tied to it.</tt> </tt> +<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -790,114 +809,114 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-133', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="paramiko.HostKeys.values -paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-134', 'values', 'link-73');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_unlink</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"> </tt> -<a name="Transport.get_remote_server_key"></a><div id="Transport.get_remote_server_key-def"><a name="L598"></a><tt class="py-lineno"> 598</tt> <a class="py-toggle" href="#" id="Transport.get_remote_server_key-toggle" onclick="return toggle('Transport.get_remote_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_remote_server_key">get_remote_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_remote_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_remote_server_key-expanded"><a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"><tt class="py-docstring"> Return the host key of the server (in client mode).</tt> </tt> -<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"><tt class="py-docstring"> @note: Previously this call returned a tuple of (key type, key string).</tt> </tt> -<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"><tt class="py-docstring"> You can get the same effect by calling</tt> </tt> -<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"><tt class="py-docstring"> L{PKey.get_name <pkey.PKey.get_name>} for the key type, and</tt> </tt> -<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-docstring"> C{str(key)} for the key string.</tt> </tt> -<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if no session is currently active.</tt> </tt> -<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"><tt class="py-docstring"> @return: public key of the remote server</tt> </tt> -<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{PKey <pkey.PKey>}</tt> </tt> -<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-135" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-135', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> -<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> </tt> +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-138', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="paramiko.HostKeys.values +paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-139', 'values', 'link-77');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_unlink</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> </div><a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> </tt> -<a name="Transport.is_active"></a><div id="Transport.is_active-def"><a name="L616"></a><tt class="py-lineno"> 616</tt> <a class="py-toggle" href="#" id="Transport.is_active-toggle" onclick="return toggle('Transport.is_active');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#is_active">is_active</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.is_active-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.is_active-expanded"><a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"><tt class="py-docstring"> Return true if this session is active (open).</tt> </tt> +<a name="Transport.get_remote_server_key"></a><div id="Transport.get_remote_server_key-def"><a name="L616"></a><tt class="py-lineno"> 616</tt> <a class="py-toggle" href="#" id="Transport.get_remote_server_key-toggle" onclick="return toggle('Transport.get_remote_server_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_remote_server_key">get_remote_server_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_remote_server_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_remote_server_key-expanded"><a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"><tt class="py-docstring"> Return the host key of the server (in client mode).</tt> </tt> <a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if the session is still active (open); False if the</tt> </tt> -<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-docstring"> session is closed</tt> </tt> -<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> </tt> -</div><a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> </tt> -<a name="Transport.open_session"></a><div id="Transport.open_session-def"><a name="L626"></a><tt class="py-lineno"> 626</tt> <a class="py-toggle" href="#" id="Transport.open_session-toggle" onclick="return toggle('Transport.open_session');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_session">open_session</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.open_session-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_session-expanded"><a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the server, of type C{"session"}. This</tt> </tt> -<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> is just an alias for C{open_channel('session')}.</tt> </tt> -<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel}</tt> </tt> -<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> -<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> -<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method paramiko.Transport.open_channel()=paramiko.Transport-class.html#open_channel"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-136', 'open_channel', 'link-136');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'session'</tt><tt class="py-op">)</tt> </tt> -</div><a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> </tt> -<a name="Transport.open_x11_channel"></a><div id="Transport.open_x11_channel-def"><a name="L639"></a><tt class="py-lineno"> 639</tt> <a class="py-toggle" href="#" id="Transport.open_x11_channel-toggle" onclick="return toggle('Transport.open_x11_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_x11_channel">open_x11_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.open_x11_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_x11_channel-expanded"><a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the client, of type C{"x11"}. This</tt> </tt> -<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"><tt class="py-docstring"> is just an alias for C{open_channel('x11', src_addr=src_addr)}.</tt> </tt> -<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: the source address of the x11 server (port is the</tt> </tt> -<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"><tt class="py-docstring"> x11 port, ie. 6010)</tt> </tt> -<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"><tt class="py-docstring"> @type src_addr: (str, int)</tt> </tt> -<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel}</tt> </tt> -<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> -<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> -<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-137', 'open_channel', 'link-136');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'x11'</tt><tt class="py-op">,</tt> <tt class="py-name">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">src_addr</tt><tt class="py-op">)</tt> </tt> -</div><a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> </tt> -<a name="Transport.open_forwarded_tcpip_channel"></a><div id="Transport.open_forwarded_tcpip_channel-def"><a name="L655"></a><tt class="py-lineno"> 655</tt> <a class="py-toggle" href="#" id="Transport.open_forwarded_tcpip_channel-toggle" onclick="return toggle('Transport.open_forwarded_tcpip_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_forwarded_tcpip_channel">open_forwarded_tcpip_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-param">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.open_forwarded_tcpip_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_forwarded_tcpip_channel-expanded"><a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel back to the client, of type C{"forwarded-tcpip"}.</tt> </tt> -<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-docstring"> This is used after a client has requested port forwarding, for sending</tt> </tt> -<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> incoming connections back to the client.</tt> </tt> -<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: originator's address</tt> </tt> -<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"><tt class="py-docstring"> @param src_port: originator's port</tt> </tt> -<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_addr: local (server) connected address</tt> </tt> -<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_port: local (server) connected port</tt> </tt> -<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-138', 'open_channel', 'link-136');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-name">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">,</tt> <tt class="py-name">src_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> </tt> -<a name="Transport.open_channel"></a><div id="Transport.open_channel-def"><a name="L668"></a><tt class="py-lineno"> 668</tt> <a class="py-toggle" href="#" id="Transport.open_channel-toggle" onclick="return toggle('Transport.open_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_channel">open_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kind</tt><tt class="py-op">,</tt> <tt class="py-param">dest_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.open_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_channel-expanded"><a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the server. L{Channel}s are socket-like</tt> </tt> -<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"><tt class="py-docstring"> objects used for the actual transfer of data across the session.</tt> </tt> -<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"><tt class="py-docstring"> You may only request a channel after negotiating encryption (using</tt> </tt> -<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"> L{connect} or L{start_client}) and authenticating.</tt> </tt> -<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> @param kind: the kind of channel requested (usually C{"session"},</tt> </tt> -<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> C{"forwarded-tcpip"}, C{"direct-tcpip"}, or C{"x11"})</tt> </tt> -<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"> @type kind: str</tt> </tt> -<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_addr: the destination address of this port forwarding,</tt> </tt> -<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-docstring"> if C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"} (ignored</tt> </tt> -<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-docstring"> for other channel types)</tt> </tt> -<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-docstring"> @type dest_addr: (str, int)</tt> </tt> -<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: the source address of this port forwarding, if</tt> </tt> -<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-docstring"> C{kind} is C{"forwarded-tcpip"}, C{"direct-tcpip"}, or C{"x11"}</tt> </tt> -<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"><tt class="py-docstring"> @type src_addr: (str, int)</tt> </tt> -<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel} on success</tt> </tt> -<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> -<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> -<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-comment"># don't bother trying to allocate a channel</tt> </tt> -<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-139', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-140', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-141" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN,Variable paramiko.channel.MSG_CHANNEL_OPEN=paramiko.channel-module.html#MSG_CHANNEL_OPEN,Variable paramiko.client.MSG_CHANNEL_OPEN=paramiko.client-module.html#MSG_CHANNEL_OPEN,Variable paramiko.common.MSG_CHANNEL_OPEN=paramiko.common-module.html#MSG_CHANNEL_OPEN,Variable paramiko.dsskey.MSG_CHANNEL_OPEN=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN,Variable paramiko.packet.MSG_CHANNEL_OPEN=paramiko.packet-module.html#MSG_CHANNEL_OPEN,Variable paramiko.pkey.MSG_CHANNEL_OPEN=paramiko.pkey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.rsakey.MSG_CHANNEL_OPEN=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.server.MSG_CHANNEL_OPEN=paramiko.server-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp.MSG_CHANNEL_OPEN=paramiko.sftp-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN,Variable paramiko.transport.MSG_CHANNEL_OPEN=paramiko.transport-module.html#MSG_CHANNEL_OPEN,Variable paramiko.util.MSG_CHANNEL_OPEN=paramiko.util-module.html#MSG_CHANNEL_OPEN"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN +<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"><tt class="py-docstring"> @note: Previously this call returned a tuple of (key type, key string).</tt> </tt> +<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-docstring"> You can get the same effect by calling</tt> </tt> +<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"> L{PKey.get_name <pkey.PKey.get_name>} for the key type, and</tt> </tt> +<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"> C{str(key)} for the key string.</tt> </tt> +<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if no session is currently active.</tt> </tt> +<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"><tt class="py-docstring"> @return: public key of the remote server</tt> </tt> +<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{PKey <pkey.PKey>}</tt> </tt> +<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-140" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-140', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> +<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> </tt> +</div><a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> </tt> +<a name="Transport.is_active"></a><div id="Transport.is_active-def"><a name="L634"></a><tt class="py-lineno"> 634</tt> <a class="py-toggle" href="#" id="Transport.is_active-toggle" onclick="return toggle('Transport.is_active');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#is_active">is_active</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.is_active-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.is_active-expanded"><a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"><tt class="py-docstring"> Return true if this session is active (open).</tt> </tt> +<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if the session is still active (open); False if the</tt> </tt> +<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"><tt class="py-docstring"> session is closed</tt> </tt> +<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> </tt> +</div><a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> </tt> +<a name="Transport.open_session"></a><div id="Transport.open_session-def"><a name="L644"></a><tt class="py-lineno"> 644</tt> <a class="py-toggle" href="#" id="Transport.open_session-toggle" onclick="return toggle('Transport.open_session');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_session">open_session</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.open_session-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_session-expanded"><a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the server, of type C{"session"}. This</tt> </tt> +<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"><tt class="py-docstring"> is just an alias for C{open_channel('session')}.</tt> </tt> +<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel}</tt> </tt> +<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> +<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> +<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method paramiko.Transport.open_channel()=paramiko.Transport-class.html#open_channel"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-141', 'open_channel', 'link-141');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'session'</tt><tt class="py-op">)</tt> </tt> +</div><a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> </tt> +<a name="Transport.open_x11_channel"></a><div id="Transport.open_x11_channel-def"><a name="L657"></a><tt class="py-lineno"> 657</tt> <a class="py-toggle" href="#" id="Transport.open_x11_channel-toggle" onclick="return toggle('Transport.open_x11_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_x11_channel">open_x11_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.open_x11_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_x11_channel-expanded"><a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the client, of type C{"x11"}. This</tt> </tt> +<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"><tt class="py-docstring"> is just an alias for C{open_channel('x11', src_addr=src_addr)}.</tt> </tt> +<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: the source address of the x11 server (port is the</tt> </tt> +<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"><tt class="py-docstring"> x11 port, ie. 6010)</tt> </tt> +<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"><tt class="py-docstring"> @type src_addr: (str, int)</tt> </tt> +<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel}</tt> </tt> +<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> +<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> +<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-142', 'open_channel', 'link-141');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'x11'</tt><tt class="py-op">,</tt> <tt class="py-name">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">src_addr</tt><tt class="py-op">)</tt> </tt> +</div><a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"> </tt> +<a name="Transport.open_forwarded_tcpip_channel"></a><div id="Transport.open_forwarded_tcpip_channel-def"><a name="L673"></a><tt class="py-lineno"> 673</tt> <a class="py-toggle" href="#" id="Transport.open_forwarded_tcpip_channel-toggle" onclick="return toggle('Transport.open_forwarded_tcpip_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_forwarded_tcpip_channel">open_forwarded_tcpip_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-param">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.open_forwarded_tcpip_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_forwarded_tcpip_channel-expanded"><a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel back to the client, of type C{"forwarded-tcpip"}.</tt> </tt> +<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> This is used after a client has requested port forwarding, for sending</tt> </tt> +<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"> incoming connections back to the client.</tt> </tt> +<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: originator's address</tt> </tt> +<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-docstring"> @param src_port: originator's port</tt> </tt> +<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_addr: local (server) connected address</tt> </tt> +<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_port: local (server) connected port</tt> </tt> +<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="paramiko.Transport.open_channel" class="py-name" href="#" onclick="return doclink('link-143', 'open_channel', 'link-141');">open_channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-name">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">,</tt> <tt class="py-name">src_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> </tt> +<a name="Transport.open_channel"></a><div id="Transport.open_channel-def"><a name="L686"></a><tt class="py-lineno"> 686</tt> <a class="py-toggle" href="#" id="Transport.open_channel-toggle" onclick="return toggle('Transport.open_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_channel">open_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kind</tt><tt class="py-op">,</tt> <tt class="py-param">dest_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">src_addr</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.open_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_channel-expanded"><a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"><tt class="py-docstring"> Request a new channel to the server. L{Channel}s are socket-like</tt> </tt> +<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"><tt class="py-docstring"> objects used for the actual transfer of data across the session.</tt> </tt> +<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"><tt class="py-docstring"> You may only request a channel after negotiating encryption (using</tt> </tt> +<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"><tt class="py-docstring"> L{connect} or L{start_client}) and authenticating.</tt> </tt> +<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"><tt class="py-docstring"> @param kind: the kind of channel requested (usually C{"session"},</tt> </tt> +<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"><tt class="py-docstring"> C{"forwarded-tcpip"}, C{"direct-tcpip"}, or C{"x11"})</tt> </tt> +<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"><tt class="py-docstring"> @type kind: str</tt> </tt> +<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"><tt class="py-docstring"> @param dest_addr: the destination address of this port forwarding,</tt> </tt> +<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"><tt class="py-docstring"> if C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"} (ignored</tt> </tt> +<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"><tt class="py-docstring"> for other channel types)</tt> </tt> +<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"><tt class="py-docstring"> @type dest_addr: (str, int)</tt> </tt> +<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"><tt class="py-docstring"> @param src_addr: the source address of this port forwarding, if</tt> </tt> +<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"><tt class="py-docstring"> C{kind} is C{"forwarded-tcpip"}, C{"direct-tcpip"}, or C{"x11"}</tt> </tt> +<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"><tt class="py-docstring"> @type src_addr: (str, int)</tt> </tt> +<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{Channel} on success</tt> </tt> +<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the request is rejected or the session ends</tt> </tt> +<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-docstring"> prematurely</tt> </tt> +<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"> <tt class="py-comment"># don't bother trying to allocate a channel</tt> </tt> +<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-144" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-144', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method paramiko.Message.add_byte()=paramiko.Message-class.html#add_byte"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-145', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-146" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN,Variable paramiko.channel.MSG_CHANNEL_OPEN=paramiko.channel-module.html#MSG_CHANNEL_OPEN,Variable paramiko.client.MSG_CHANNEL_OPEN=paramiko.client-module.html#MSG_CHANNEL_OPEN,Variable paramiko.common.MSG_CHANNEL_OPEN=paramiko.common-module.html#MSG_CHANNEL_OPEN,Variable paramiko.dsskey.MSG_CHANNEL_OPEN=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN,Variable paramiko.packet.MSG_CHANNEL_OPEN=paramiko.packet-module.html#MSG_CHANNEL_OPEN,Variable paramiko.pkey.MSG_CHANNEL_OPEN=paramiko.pkey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.rsakey.MSG_CHANNEL_OPEN=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN,Variable paramiko.server.MSG_CHANNEL_OPEN=paramiko.server-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp.MSG_CHANNEL_OPEN=paramiko.sftp-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN,Variable paramiko.transport.MSG_CHANNEL_OPEN=paramiko.transport-module.html#MSG_CHANNEL_OPEN,Variable paramiko.util.MSG_CHANNEL_OPEN=paramiko.util-module.html#MSG_CHANNEL_OPEN"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN paramiko.channel.MSG_CHANNEL_OPEN paramiko.client.MSG_CHANNEL_OPEN paramiko.common.MSG_CHANNEL_OPEN @@ -917,133 +936,133 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN paramiko.sftp_server.MSG_CHANNEL_OPEN paramiko.sftp_si.MSG_CHANNEL_OPEN paramiko.transport.MSG_CHANNEL_OPEN -paramiko.util.MSG_CHANNEL_OPEN" class="py-name" href="#" onclick="return doclink('link-141', 'MSG_CHANNEL_OPEN', 'link-141');">MSG_CHANNEL_OPEN</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-142', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-143', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-144', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">)</tt> </tt> -<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-145', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'direct-tcpip'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-146', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-147', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-148', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-149', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">:</tt> </tt> -<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-150', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-151', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-152', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method paramiko.SFTPClient.put()=paramiko.SFTPClient-class.html#put,Method paramiko.transport.ChannelMap.put()=paramiko.transport.ChannelMap-class.html#put"><a title="paramiko.SFTPClient.put -paramiko.transport.ChannelMap.put" class="py-name" href="#" onclick="return doclink('link-153', 'put', 'link-153');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> -<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_transport</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt> -<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-154', 'get_exception', 'link-113');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-155', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to open channel.'</tt><tt class="py-op">)</tt> </tt> -<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-156', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> -<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-157', 'get_exception', 'link-113');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-158', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to open channel.'</tt><tt class="py-op">)</tt> </tt> -<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -</div><a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> </tt> -<a name="Transport.request_port_forward"></a><div id="Transport.request_port_forward-def"><a name="L738"></a><tt class="py-lineno"> 738</tt> <a class="py-toggle" href="#" id="Transport.request_port_forward-toggle" onclick="return toggle('Transport.request_port_forward');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#request_port_forward">request_port_forward</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">address</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.request_port_forward-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.request_port_forward-expanded"><a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"><tt class="py-docstring"> Ask the server to forward TCP connections from a listening port on</tt> </tt> -<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"><tt class="py-docstring"> the server, across this SSH session.</tt> </tt> -<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"><tt class="py-docstring"> If a handler is given, that handler is called from a different thread</tt> </tt> -<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"><tt class="py-docstring"> whenever a forwarded connection arrives. The handler parameters are::</tt> </tt> -<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"><tt class="py-docstring"> handler(channel, (origin_addr, origin_port), (server_addr, server_port))</tt> </tt> -<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"><tt class="py-docstring"> where C{server_addr} and C{server_port} are the address and port that</tt> </tt> -<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"><tt class="py-docstring"> the server was listening on.</tt> </tt> -<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"><tt class="py-docstring"> If no handler is set, the default behavior is to send new incoming</tt> </tt> -<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"><tt class="py-docstring"> forwarded connections into the accept queue, to be picked up via</tt> </tt> -<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"><tt class="py-docstring"> L{accept}.</tt> </tt> -<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"><tt class="py-docstring"> @param address: the address to bind when forwarding</tt> </tt> -<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"><tt class="py-docstring"> @type address: str</tt> </tt> -<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the port to forward, or 0 to ask the server to allocate</tt> </tt> -<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> any port</tt> </tt> -<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> -<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: optional handler for incoming forwarded connections</tt> </tt> -<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: function(Channel, (str, int), (str, int))</tt> </tt> -<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"><tt class="py-docstring"> @return: the port # allocated by the server</tt> </tt> -<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> -<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server refused the TCP forward request</tt> </tt> -<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-159" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-159', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'SSH session not active'</tt><tt class="py-op">)</tt> </tt> -<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">)</tt> </tt> -<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> -<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method paramiko.Transport.global_request()=paramiko.Transport-class.html#global_request"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-160', 'global_request', 'link-160');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'tcpip-forward'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">response</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-161" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-161', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'TCP forwarding request denied'</tt><tt class="py-op">)</tt> </tt> -<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">port</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-162', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">default_handler</tt><tt class="py-op">(</tt><tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-param">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-163', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt class="py-name">default_handler</tt> </tt> -<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt> -<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">port</tt> </tt> -</div><a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"> </tt> -<a name="Transport.cancel_port_forward"></a><div id="Transport.cancel_port_forward-def"><a name="L783"></a><tt class="py-lineno"> 783</tt> <a class="py-toggle" href="#" id="Transport.cancel_port_forward-toggle" onclick="return toggle('Transport.cancel_port_forward');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#cancel_port_forward">cancel_port_forward</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">address</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.cancel_port_forward-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.cancel_port_forward-expanded"><a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"><tt class="py-docstring"> Ask the server to cancel a previous port-forwarding request. No more</tt> </tt> -<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"><tt class="py-docstring"> connections to the given address & port will be forwarded across this</tt> </tt> -<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"><tt class="py-docstring"> ssh connection.</tt> </tt> -<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"><tt class="py-docstring"> @param address: the address to stop forwarding</tt> </tt> -<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"><tt class="py-docstring"> @type address: str</tt> </tt> -<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the port to stop forwarding</tt> </tt> -<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> -<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-164', 'global_request', 'link-160');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'cancel-tcpip-forward'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -</div><a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> </tt> -<a name="Transport.open_sftp_client"></a><div id="Transport.open_sftp_client-def"><a name="L799"></a><tt class="py-lineno"> 799</tt> <a class="py-toggle" href="#" id="Transport.open_sftp_client-toggle" onclick="return toggle('Transport.open_sftp_client');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_sftp_client">open_sftp_client</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.open_sftp_client-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_sftp_client-expanded"><a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client channel from an open transport. On success,</tt> </tt> -<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"><tt class="py-docstring"> an SFTP session will be opened with the remote host, and a new</tt> </tt> -<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"><tt class="py-docstring"> SFTPClient object will be returned.</tt> </tt> -<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{SFTPClient} object, referring to an sftp session</tt> </tt> -<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-docstring"> (channel) across this transport</tt> </tt> -<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> -<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-165" class="py-name"><a title="paramiko.SFTPClient" class="py-name" href="#" onclick="return doclink('link-165', 'SFTPClient', 'link-39');">SFTPClient</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Class Method paramiko.SFTPClient.from_transport()=paramiko.SFTPClient-class.html#from_transport"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-166', 'from_transport', 'link-166');">from_transport</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"> </tt> -<a name="Transport.send_ignore"></a><div id="Transport.send_ignore-def"><a name="L811"></a><tt class="py-lineno"> 811</tt> <a class="py-toggle" href="#" id="Transport.send_ignore-toggle" onclick="return toggle('Transport.send_ignore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#send_ignore">send_ignore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bytes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.send_ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.send_ignore-expanded"><a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-docstring"> Send a junk packet across the encrypted link. This is sometimes used</tt> </tt> -<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-docstring"> to add "noise" to a connection to confuse would-be attackers. It can</tt> </tt> -<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-docstring"> also be used as a keep-alive for long lived connections traversing</tt> </tt> -<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-docstring"> firewalls.</tt> </tt> -<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> @param bytes: the number of random bytes to send in the payload of the</tt> </tt> -<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"><tt class="py-docstring"> ignored packet -- defaults to a random number from 10 to 41.</tt> </tt> -<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"><tt class="py-docstring"> @type bytes: int</tt> </tt> -<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-167', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-168', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-169" class="py-name" targets="Variable paramiko.auth_handler.MSG_IGNORE=paramiko.auth_handler-module.html#MSG_IGNORE,Variable paramiko.channel.MSG_IGNORE=paramiko.channel-module.html#MSG_IGNORE,Variable paramiko.client.MSG_IGNORE=paramiko.client-module.html#MSG_IGNORE,Variable paramiko.common.MSG_IGNORE=paramiko.common-module.html#MSG_IGNORE,Variable paramiko.dsskey.MSG_IGNORE=paramiko.dsskey-module.html#MSG_IGNORE,Variable paramiko.hostkeys.MSG_IGNORE=paramiko.hostkeys-module.html#MSG_IGNORE,Variable paramiko.kex_gex.MSG_IGNORE=paramiko.kex_gex-module.html#MSG_IGNORE,Variable paramiko.kex_group1.MSG_IGNORE=paramiko.kex_group1-module.html#MSG_IGNORE,Variable paramiko.packet.MSG_IGNORE=paramiko.packet-module.html#MSG_IGNORE,Variable paramiko.pkey.MSG_IGNORE=paramiko.pkey-module.html#MSG_IGNORE,Variable paramiko.rsakey.MSG_IGNORE=paramiko.rsakey-module.html#MSG_IGNORE,Variable paramiko.server.MSG_IGNORE=paramiko.server-module.html#MSG_IGNORE,Variable paramiko.sftp.MSG_IGNORE=paramiko.sftp-module.html#MSG_IGNORE,Variable paramiko.sftp_attr.MSG_IGNORE=paramiko.sftp_attr-module.html#MSG_IGNORE,Variable paramiko.sftp_client.MSG_IGNORE=paramiko.sftp_client-module.html#MSG_IGNORE,Variable paramiko.sftp_file.MSG_IGNORE=paramiko.sftp_file-module.html#MSG_IGNORE,Variable paramiko.sftp_handle.MSG_IGNORE=paramiko.sftp_handle-module.html#MSG_IGNORE,Variable paramiko.sftp_server.MSG_IGNORE=paramiko.sftp_server-module.html#MSG_IGNORE,Variable paramiko.sftp_si.MSG_IGNORE=paramiko.sftp_si-module.html#MSG_IGNORE,Variable paramiko.transport.MSG_IGNORE=paramiko.transport-module.html#MSG_IGNORE,Variable paramiko.util.MSG_IGNORE=paramiko.util-module.html#MSG_IGNORE"><a title="paramiko.auth_handler.MSG_IGNORE +paramiko.util.MSG_CHANNEL_OPEN" class="py-name" href="#" onclick="return doclink('link-146', 'MSG_CHANNEL_OPEN', 'link-146');">MSG_CHANNEL_OPEN</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method paramiko.Message.add_string()=paramiko.Message-class.html#add_string"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-147', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method paramiko.Message.add_int()=paramiko.Message-class.html#add_int"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-148', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-149', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">)</tt> </tt> +<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-150', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'direct-tcpip'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-151', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-152', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-153', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-154', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">:</tt> </tt> +<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-155', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-156', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">src_addr</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-157', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method paramiko.SFTPClient.put()=paramiko.SFTPClient-class.html#put,Method paramiko.transport.ChannelMap.put()=paramiko.transport.ChannelMap-class.html#put"><a title="paramiko.SFTPClient.put +paramiko.transport.ChannelMap.put" class="py-name" href="#" onclick="return doclink('link-158', 'put', 'link-158');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> +<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_transport</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt> +<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-159', 'get_exception', 'link-118');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-160', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to open channel.'</tt><tt class="py-op">)</tt> </tt> +<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-161', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> +<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-162', 'get_exception', 'link-118');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-163" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-163', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unable to open channel.'</tt><tt class="py-op">)</tt> </tt> +<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +</div><a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"> </tt> +<a name="Transport.request_port_forward"></a><div id="Transport.request_port_forward-def"><a name="L756"></a><tt class="py-lineno"> 756</tt> <a class="py-toggle" href="#" id="Transport.request_port_forward-toggle" onclick="return toggle('Transport.request_port_forward');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#request_port_forward">request_port_forward</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">address</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.request_port_forward-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.request_port_forward-expanded"><a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> Ask the server to forward TCP connections from a listening port on</tt> </tt> +<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"> the server, across this SSH session.</tt> </tt> +<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"><tt class="py-docstring"> If a handler is given, that handler is called from a different thread</tt> </tt> +<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"><tt class="py-docstring"> whenever a forwarded connection arrives. The handler parameters are::</tt> </tt> +<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"><tt class="py-docstring"> handler(channel, (origin_addr, origin_port), (server_addr, server_port))</tt> </tt> +<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-docstring"> where C{server_addr} and C{server_port} are the address and port that</tt> </tt> +<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"><tt class="py-docstring"> the server was listening on.</tt> </tt> +<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"><tt class="py-docstring"> If no handler is set, the default behavior is to send new incoming</tt> </tt> +<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"><tt class="py-docstring"> forwarded connections into the accept queue, to be picked up via</tt> </tt> +<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"><tt class="py-docstring"> L{accept}.</tt> </tt> +<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"><tt class="py-docstring"> @param address: the address to bind when forwarding</tt> </tt> +<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"><tt class="py-docstring"> @type address: str</tt> </tt> +<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the port to forward, or 0 to ask the server to allocate</tt> </tt> +<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"><tt class="py-docstring"> any port</tt> </tt> +<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> +<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: optional handler for incoming forwarded connections</tt> </tt> +<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: function(Channel, (str, int), (str, int))</tt> </tt> +<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"><tt class="py-docstring"> @return: the port # allocated by the server</tt> </tt> +<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: int</tt> </tt> +<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the server refused the TCP forward request</tt> </tt> +<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-164" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-164', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'SSH session not active'</tt><tt class="py-op">)</tt> </tt> +<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">)</tt> </tt> +<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> +<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method paramiko.Transport.global_request()=paramiko.Transport-class.html#global_request"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-165', 'global_request', 'link-165');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'tcpip-forward'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">response</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-166" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-166', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'TCP forwarding request denied'</tt><tt class="py-op">)</tt> </tt> +<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">port</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">response</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Method paramiko.Message.get_int()=paramiko.Message-class.html#get_int"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-167', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">default_handler</tt><tt class="py-op">(</tt><tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-param">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-168', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt class="py-name">default_handler</tt> </tt> +<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt> +<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">port</tt> </tt> +</div><a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> </tt> +<a name="Transport.cancel_port_forward"></a><div id="Transport.cancel_port_forward-def"><a name="L801"></a><tt class="py-lineno"> 801</tt> <a class="py-toggle" href="#" id="Transport.cancel_port_forward-toggle" onclick="return toggle('Transport.cancel_port_forward');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#cancel_port_forward">cancel_port_forward</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">address</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.cancel_port_forward-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.cancel_port_forward-expanded"><a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"><tt class="py-docstring"> Ask the server to cancel a previous port-forwarding request. No more</tt> </tt> +<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"><tt class="py-docstring"> connections to the given address & port will be forwarded across this</tt> </tt> +<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"><tt class="py-docstring"> ssh connection.</tt> </tt> +<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"> @param address: the address to stop forwarding</tt> </tt> +<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-docstring"> @type address: str</tt> </tt> +<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"><tt class="py-docstring"> @param port: the port to stop forwarding</tt> </tt> +<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-docstring"> @type port: int</tt> </tt> +<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-169', 'global_request', 'link-165');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'cancel-tcpip-forward'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> +</div><a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"> </tt> +<a name="Transport.open_sftp_client"></a><div id="Transport.open_sftp_client-def"><a name="L817"></a><tt class="py-lineno"> 817</tt> <a class="py-toggle" href="#" id="Transport.open_sftp_client-toggle" onclick="return toggle('Transport.open_sftp_client');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#open_sftp_client">open_sftp_client</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.open_sftp_client-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.open_sftp_client-expanded"><a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"><tt class="py-docstring"> Create an SFTP client channel from an open transport. On success,</tt> </tt> +<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"><tt class="py-docstring"> an SFTP session will be opened with the remote host, and a new</tt> </tt> +<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"><tt class="py-docstring"> SFTPClient object will be returned.</tt> </tt> +<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new L{SFTPClient} object, referring to an sftp session</tt> </tt> +<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"><tt class="py-docstring"> (channel) across this transport</tt> </tt> +<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{SFTPClient}</tt> </tt> +<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-170" class="py-name"><a title="paramiko.SFTPClient" class="py-name" href="#" onclick="return doclink('link-170', 'SFTPClient', 'link-39');">SFTPClient</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Class Method paramiko.SFTPClient.from_transport()=paramiko.SFTPClient-class.html#from_transport"><a title="paramiko.SFTPClient.from_transport" class="py-name" href="#" onclick="return doclink('link-171', 'from_transport', 'link-171');">from_transport</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +</div><a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"> </tt> +<a name="Transport.send_ignore"></a><div id="Transport.send_ignore-def"><a name="L829"></a><tt class="py-lineno"> 829</tt> <a class="py-toggle" href="#" id="Transport.send_ignore-toggle" onclick="return toggle('Transport.send_ignore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#send_ignore">send_ignore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bytes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.send_ignore-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.send_ignore-expanded"><a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-docstring"> Send a junk packet across the encrypted link. This is sometimes used</tt> </tt> +<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"> to add "noise" to a connection to confuse would-be attackers. It can</tt> </tt> +<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-docstring"> also be used as a keep-alive for long lived connections traversing</tt> </tt> +<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-docstring"> firewalls.</tt> </tt> +<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-docstring"> @param bytes: the number of random bytes to send in the payload of the</tt> </tt> +<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-docstring"> ignored packet -- defaults to a random number from 10 to 41.</tt> </tt> +<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-docstring"> @type bytes: int</tt> </tt> +<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-172', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-173', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-174" class="py-name" targets="Variable paramiko.auth_handler.MSG_IGNORE=paramiko.auth_handler-module.html#MSG_IGNORE,Variable paramiko.channel.MSG_IGNORE=paramiko.channel-module.html#MSG_IGNORE,Variable paramiko.client.MSG_IGNORE=paramiko.client-module.html#MSG_IGNORE,Variable paramiko.common.MSG_IGNORE=paramiko.common-module.html#MSG_IGNORE,Variable paramiko.dsskey.MSG_IGNORE=paramiko.dsskey-module.html#MSG_IGNORE,Variable paramiko.hostkeys.MSG_IGNORE=paramiko.hostkeys-module.html#MSG_IGNORE,Variable paramiko.kex_gex.MSG_IGNORE=paramiko.kex_gex-module.html#MSG_IGNORE,Variable paramiko.kex_group1.MSG_IGNORE=paramiko.kex_group1-module.html#MSG_IGNORE,Variable paramiko.packet.MSG_IGNORE=paramiko.packet-module.html#MSG_IGNORE,Variable paramiko.pkey.MSG_IGNORE=paramiko.pkey-module.html#MSG_IGNORE,Variable paramiko.rsakey.MSG_IGNORE=paramiko.rsakey-module.html#MSG_IGNORE,Variable paramiko.server.MSG_IGNORE=paramiko.server-module.html#MSG_IGNORE,Variable paramiko.sftp.MSG_IGNORE=paramiko.sftp-module.html#MSG_IGNORE,Variable paramiko.sftp_attr.MSG_IGNORE=paramiko.sftp_attr-module.html#MSG_IGNORE,Variable paramiko.sftp_client.MSG_IGNORE=paramiko.sftp_client-module.html#MSG_IGNORE,Variable paramiko.sftp_file.MSG_IGNORE=paramiko.sftp_file-module.html#MSG_IGNORE,Variable paramiko.sftp_handle.MSG_IGNORE=paramiko.sftp_handle-module.html#MSG_IGNORE,Variable paramiko.sftp_server.MSG_IGNORE=paramiko.sftp_server-module.html#MSG_IGNORE,Variable paramiko.sftp_si.MSG_IGNORE=paramiko.sftp_si-module.html#MSG_IGNORE,Variable paramiko.transport.MSG_IGNORE=paramiko.transport-module.html#MSG_IGNORE,Variable paramiko.util.MSG_IGNORE=paramiko.util-module.html#MSG_IGNORE"><a title="paramiko.auth_handler.MSG_IGNORE paramiko.channel.MSG_IGNORE paramiko.client.MSG_IGNORE paramiko.common.MSG_IGNORE @@ -1063,8 +1082,8 @@ paramiko.sftp_handle.MSG_IGNORE paramiko.sftp_server.MSG_IGNORE paramiko.sftp_si.MSG_IGNORE paramiko.transport.MSG_IGNORE -paramiko.util.MSG_IGNORE" class="py-name" href="#" onclick="return doclink('link-169', 'MSG_IGNORE', 'link-169');">MSG_IGNORE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"> <tt id="link-170" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.MSG_IGNORE" class="py-name" href="#" onclick="return doclink('link-174', 'MSG_IGNORE', 'link-174');">MSG_IGNORE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt id="link-175" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -1084,9 +1103,9 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-170', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-171', 'stir', 'link-171');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bytes</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"> <tt class="py-name">bytes</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt id="link-172" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-175', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method paramiko.rng.StrongLockingRandomPool.stir()=paramiko.rng.StrongLockingRandomPool-class.html#stir"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-176', 'stir', 'link-176');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bytes</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-name">bytes</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt id="link-177" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -1106,9 +1125,9 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-172', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-173', 'get_bytes', 'link-173');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">10</tt> </tt> -<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method paramiko.Message.add_bytes()=paramiko.Message-class.html#add_bytes"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-174', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-177', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Method paramiko.Message.get_bytes()=paramiko.Message-class.html#get_bytes,Method paramiko.rng.StrongLockingRandomPool.get_bytes()=paramiko.rng.StrongLockingRandomPool-class.html#get_bytes"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-178', 'get_bytes', 'link-178');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">10</tt> </tt> +<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method paramiko.Message.add_bytes()=paramiko.Message-class.html#add_bytes"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-179', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -1128,71 +1147,71 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-175', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-176', 'get_bytes', 'link-173');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">bytes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -</div><a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"> </tt> -<a name="Transport.renegotiate_keys"></a><div id="Transport.renegotiate_keys-def"><a name="L830"></a><tt class="py-lineno"> 830</tt> <a class="py-toggle" href="#" id="Transport.renegotiate_keys-toggle" onclick="return toggle('Transport.renegotiate_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#renegotiate_keys">renegotiate_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.renegotiate_keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.renegotiate_keys-expanded"><a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"> Force this session to switch to new keys. Normally this is done</tt> </tt> -<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-docstring"> automatically after the session hits a certain number of packets or</tt> </tt> -<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-docstring"> bytes sent or received, but this method gives you the option of forcing</tt> </tt> -<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-docstring"> new keys whenever you want. Negotiating new keys causes a pause in</tt> </tt> -<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-docstring"> traffic both ways as the two sides swap keys and do computations. This</tt> </tt> -<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-docstring"> method returns when the session has switched to new keys.</tt> </tt> -<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the key renegotiation failed (which causes the</tt> </tt> -<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"><tt class="py-docstring"> session to end)</tt> </tt> -<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-177', 'get_exception', 'link-113');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> -<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-178" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-178', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> </tt> -<a name="Transport.set_keepalive"></a><div id="Transport.set_keepalive-def"><a name="L855"></a><tt class="py-lineno"> 855</tt> <a class="py-toggle" href="#" id="Transport.set_keepalive-toggle" onclick="return toggle('Transport.set_keepalive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_keepalive">set_keepalive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">interval</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.set_keepalive-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_keepalive-expanded"><a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off keepalive packets (default is off). If this is set, after</tt> </tt> -<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-docstring"> C{interval} seconds without sending any data over the connection, a</tt> </tt> -<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"> "keepalive" packet will be sent (and ignored by the remote host). This</tt> </tt> -<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-docstring"> can be useful to keep connections alive over a NAT, for example.</tt> </tt> -<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"><tt class="py-docstring"> @param interval: seconds to wait before sending a keepalive packet (or</tt> </tt> -<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"><tt class="py-docstring"> 0 to disable keepalives).</tt> </tt> -<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"><tt class="py-docstring"> @type interval: int</tt> </tt> -<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method paramiko.Transport.set_keepalive()=paramiko.Transport-class.html#set_keepalive"><a title="paramiko.Transport.set_keepalive" class="py-name" href="#" onclick="return doclink('link-179', 'set_keepalive', 'link-179');">set_keepalive</a></tt><tt class="py-op">(</tt><tt class="py-name">interval</tt><tt class="py-op">,</tt> </tt> -<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">=</tt><tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">proxy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-180', 'global_request', 'link-160');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'keepalive@lag.net'</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> </tt> -<a name="Transport.global_request"></a><div id="Transport.global_request-def"><a name="L869"></a><tt class="py-lineno"> 869</tt> <a class="py-toggle" href="#" id="Transport.global_request-toggle" onclick="return toggle('Transport.global_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#global_request">global_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kind</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.global_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.global_request-expanded"><a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"><tt class="py-docstring"> Make a global request to the remote host. These are normally</tt> </tt> -<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-docstring"> extensions to the SSH2 protocol.</tt> </tt> -<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"><tt class="py-docstring"> @param kind: name of the request.</tt> </tt> -<a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"><tt class="py-docstring"> @type kind: str</tt> </tt> -<a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"><tt class="py-docstring"> @param data: an optional tuple containing additional data to attach</tt> </tt> -<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"><tt class="py-docstring"> to the request.</tt> </tt> -<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"> @type data: tuple</tt> </tt> -<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"> @param wait: C{True} if this method should not return until a response</tt> </tt> -<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> is received; C{False} otherwise.</tt> </tt> -<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> @type wait: bool</tt> </tt> -<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> @return: a L{Message} containing possible additional data if the</tt> </tt> -<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> request was successful (or an empty L{Message} if C{wait} was</tt> </tt> -<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-docstring"> C{False}); C{None} if the request was denied.</tt> </tt> -<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Message}</tt> </tt> -<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">wait</tt><tt class="py-op">:</tt> </tt> -<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-181', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-182', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name" targets="Variable paramiko.auth_handler.MSG_GLOBAL_REQUEST=paramiko.auth_handler-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.channel.MSG_GLOBAL_REQUEST=paramiko.channel-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.client.MSG_GLOBAL_REQUEST=paramiko.client-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.common.MSG_GLOBAL_REQUEST=paramiko.common-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.dsskey.MSG_GLOBAL_REQUEST=paramiko.dsskey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.hostkeys.MSG_GLOBAL_REQUEST=paramiko.hostkeys-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.kex_gex.MSG_GLOBAL_REQUEST=paramiko.kex_gex-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.kex_group1.MSG_GLOBAL_REQUEST=paramiko.kex_group1-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.packet.MSG_GLOBAL_REQUEST=paramiko.packet-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.pkey.MSG_GLOBAL_REQUEST=paramiko.pkey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.rsakey.MSG_GLOBAL_REQUEST=paramiko.rsakey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.server.MSG_GLOBAL_REQUEST=paramiko.server-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp.MSG_GLOBAL_REQUEST=paramiko.sftp-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_attr.MSG_GLOBAL_REQUEST=paramiko.sftp_attr-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_client.MSG_GLOBAL_REQUEST=paramiko.sftp_client-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_file.MSG_GLOBAL_REQUEST=paramiko.sftp_file-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_handle.MSG_GLOBAL_REQUEST=paramiko.sftp_handle-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_server.MSG_GLOBAL_REQUEST=paramiko.sftp_server-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_si.MSG_GLOBAL_REQUEST=paramiko.sftp_si-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.transport.MSG_GLOBAL_REQUEST=paramiko.transport-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.util.MSG_GLOBAL_REQUEST=paramiko.util-module.html#MSG_GLOBAL_REQUEST"><a title="paramiko.auth_handler.MSG_GLOBAL_REQUEST +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-180', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-181', 'get_bytes', 'link-178');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">bytes</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +</div><a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> </tt> +<a name="Transport.renegotiate_keys"></a><div id="Transport.renegotiate_keys-def"><a name="L848"></a><tt class="py-lineno"> 848</tt> <a class="py-toggle" href="#" id="Transport.renegotiate_keys-toggle" onclick="return toggle('Transport.renegotiate_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#renegotiate_keys">renegotiate_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.renegotiate_keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.renegotiate_keys-expanded"><a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"><tt class="py-docstring"> Force this session to switch to new keys. Normally this is done</tt> </tt> +<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"><tt class="py-docstring"> automatically after the session hits a certain number of packets or</tt> </tt> +<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"><tt class="py-docstring"> bytes sent or received, but this method gives you the option of forcing</tt> </tt> +<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"><tt class="py-docstring"> new keys whenever you want. Negotiating new keys causes a pause in</tt> </tt> +<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"><tt class="py-docstring"> traffic both ways as the two sides swap keys and do computations. This</tt> </tt> +<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"><tt class="py-docstring"> method returns when the session has switched to new keys.</tt> </tt> +<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the key renegotiation failed (which causes the</tt> </tt> +<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-docstring"> session to end)</tt> </tt> +<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="paramiko.Transport.get_exception" class="py-name" href="#" onclick="return doclink('link-182', 'get_exception', 'link-118');">get_exception</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt> +<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-183" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-183', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Negotiation failed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +</div><a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"> </tt> +<a name="Transport.set_keepalive"></a><div id="Transport.set_keepalive-def"><a name="L873"></a><tt class="py-lineno"> 873</tt> <a class="py-toggle" href="#" id="Transport.set_keepalive-toggle" onclick="return toggle('Transport.set_keepalive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_keepalive">set_keepalive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">interval</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.set_keepalive-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_keepalive-expanded"><a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off keepalive packets (default is off). If this is set, after</tt> </tt> +<a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"><tt class="py-docstring"> C{interval} seconds without sending any data over the connection, a</tt> </tt> +<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"><tt class="py-docstring"> "keepalive" packet will be sent (and ignored by the remote host). This</tt> </tt> +<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"> can be useful to keep connections alive over a NAT, for example.</tt> </tt> +<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> @param interval: seconds to wait before sending a keepalive packet (or</tt> </tt> +<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> 0 to disable keepalives).</tt> </tt> +<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> @type interval: int</tt> </tt> +<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method paramiko.Transport.set_keepalive()=paramiko.Transport-class.html#set_keepalive"><a title="paramiko.Transport.set_keepalive" class="py-name" href="#" onclick="return doclink('link-184', 'set_keepalive', 'link-184');">set_keepalive</a></tt><tt class="py-op">(</tt><tt class="py-name">interval</tt><tt class="py-op">,</tt> </tt> +<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> <tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">=</tt><tt class="py-name">weakref</tt><tt class="py-op">.</tt><tt class="py-name">proxy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="paramiko.Transport.global_request" class="py-name" href="#" onclick="return doclink('link-185', 'global_request', 'link-165');">global_request</a></tt><tt class="py-op">(</tt><tt class="py-string">'keepalive@lag.net'</tt><tt class="py-op">,</tt> <tt class="py-name">wait</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> </tt> +<a name="Transport.global_request"></a><div id="Transport.global_request-def"><a name="L887"></a><tt class="py-lineno"> 887</tt> <a class="py-toggle" href="#" id="Transport.global_request-toggle" onclick="return toggle('Transport.global_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#global_request">global_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kind</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">wait</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.global_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.global_request-expanded"><a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"><tt class="py-docstring"> Make a global request to the remote host. These are normally</tt> </tt> +<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"><tt class="py-docstring"> extensions to the SSH2 protocol.</tt> </tt> +<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"><tt class="py-docstring"> @param kind: name of the request.</tt> </tt> +<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-docstring"> @type kind: str</tt> </tt> +<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"><tt class="py-docstring"> @param data: an optional tuple containing additional data to attach</tt> </tt> +<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"><tt class="py-docstring"> to the request.</tt> </tt> +<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"><tt class="py-docstring"> @type data: tuple</tt> </tt> +<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"><tt class="py-docstring"> @param wait: C{True} if this method should not return until a response</tt> </tt> +<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"><tt class="py-docstring"> is received; C{False} otherwise.</tt> </tt> +<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"><tt class="py-docstring"> @type wait: bool</tt> </tt> +<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-docstring"> @return: a L{Message} containing possible additional data if the</tt> </tt> +<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"><tt class="py-docstring"> request was successful (or an empty L{Message} if C{wait} was</tt> </tt> +<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"><tt class="py-docstring"> C{False}); C{None} if the request was denied.</tt> </tt> +<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Message}</tt> </tt> +<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">wait</tt><tt class="py-op">:</tt> </tt> +<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-186', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-187', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name" targets="Variable paramiko.auth_handler.MSG_GLOBAL_REQUEST=paramiko.auth_handler-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.channel.MSG_GLOBAL_REQUEST=paramiko.channel-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.client.MSG_GLOBAL_REQUEST=paramiko.client-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.common.MSG_GLOBAL_REQUEST=paramiko.common-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.dsskey.MSG_GLOBAL_REQUEST=paramiko.dsskey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.hostkeys.MSG_GLOBAL_REQUEST=paramiko.hostkeys-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.kex_gex.MSG_GLOBAL_REQUEST=paramiko.kex_gex-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.kex_group1.MSG_GLOBAL_REQUEST=paramiko.kex_group1-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.packet.MSG_GLOBAL_REQUEST=paramiko.packet-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.pkey.MSG_GLOBAL_REQUEST=paramiko.pkey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.rsakey.MSG_GLOBAL_REQUEST=paramiko.rsakey-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.server.MSG_GLOBAL_REQUEST=paramiko.server-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp.MSG_GLOBAL_REQUEST=paramiko.sftp-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_attr.MSG_GLOBAL_REQUEST=paramiko.sftp_attr-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_client.MSG_GLOBAL_REQUEST=paramiko.sftp_client-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_file.MSG_GLOBAL_REQUEST=paramiko.sftp_file-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_handle.MSG_GLOBAL_REQUEST=paramiko.sftp_handle-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_server.MSG_GLOBAL_REQUEST=paramiko.sftp_server-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.sftp_si.MSG_GLOBAL_REQUEST=paramiko.sftp_si-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.transport.MSG_GLOBAL_REQUEST=paramiko.transport-module.html#MSG_GLOBAL_REQUEST,Variable paramiko.util.MSG_GLOBAL_REQUEST=paramiko.util-module.html#MSG_GLOBAL_REQUEST"><a title="paramiko.auth_handler.MSG_GLOBAL_REQUEST paramiko.channel.MSG_GLOBAL_REQUEST paramiko.client.MSG_GLOBAL_REQUEST paramiko.common.MSG_GLOBAL_REQUEST @@ -1212,13 +1231,13 @@ paramiko.sftp_handle.MSG_GLOBAL_REQUEST paramiko.sftp_server.MSG_GLOBAL_REQUEST paramiko.sftp_si.MSG_GLOBAL_REQUEST paramiko.transport.MSG_GLOBAL_REQUEST -paramiko.util.MSG_GLOBAL_REQUEST" class="py-name" href="#" onclick="return doclink('link-183', 'MSG_GLOBAL_REQUEST', 'link-183');">MSG_GLOBAL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-184', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Method paramiko.Message.add_boolean()=paramiko.Message-class.html#add_boolean"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-185', 'add_boolean', 'link-185');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">wait</tt><tt class="py-op">)</tt> </tt> -<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add -paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-186', 'add', 'link-186');">add</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-187" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_GLOBAL_REQUEST" class="py-name" href="#" onclick="return doclink('link-188', 'MSG_GLOBAL_REQUEST', 'link-188');">MSG_GLOBAL_REQUEST</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-189', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Method paramiko.Message.add_boolean()=paramiko.Message-class.html#add_boolean"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-190', 'add_boolean', 'link-190');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">wait</tt><tt class="py-op">)</tt> </tt> +<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name" targets="Method paramiko.HostKeys.add()=paramiko.HostKeys-class.html#add,Method paramiko.Message.add()=paramiko.Message-class.html#add"><a title="paramiko.HostKeys.add +paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-191', 'add', 'link-191');">add</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-192" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1239,101 +1258,101 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-187', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Sending global request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">wait</tt><tt class="py-op">:</tt> </tt> -<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> </tt> -</div><a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> </tt> -<a name="Transport.accept"></a><div id="Transport.accept-def"><a name="L907"></a><tt class="py-lineno"> 907</tt> <a class="py-toggle" href="#" id="Transport.accept-toggle" onclick="return toggle('Transport.accept');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#accept">accept</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.accept-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.accept-expanded"><a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"><tt class="py-docstring"> Return the next channel opened by the client over this transport, in</tt> </tt> -<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"><tt class="py-docstring"> server mode. If no channel is opened before the given timeout, C{None}</tt> </tt> -<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"><tt class="py-docstring"> is returned.</tt> </tt> -<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: seconds to wait for a channel, or C{None} to wait</tt> </tt> -<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"><tt class="py-docstring"> forever</tt> </tt> -<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: int</tt> </tt> -<a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new Channel opened by the client</tt> </tt> -<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> -<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"> <tt class="py-comment"># timeout</tt> </tt> -<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> -</div><a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> </tt> -<a name="Transport.connect"></a><div id="Transport.connect-def"><a name="L934"></a><tt class="py-lineno"> 934</tt> <a class="py-toggle" href="#" id="Transport.connect-toggle" onclick="return toggle('Transport.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.connect-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.connect-expanded"><a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate an SSH2 session, and optionally verify the server's host key</tt> </tt> -<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"><tt class="py-docstring"> and authenticate using a password or private key. This is a shortcut</tt> </tt> -<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"><tt class="py-docstring"> for L{start_client}, L{get_remote_server_key}, and</tt> </tt> -<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport.auth_password} or L{Transport.auth_publickey}. Use those</tt> </tt> -<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"><tt class="py-docstring"> methods if you want more control.</tt> </tt> -<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"><tt class="py-docstring"> You can use this method immediately after creating a Transport to</tt> </tt> -<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"><tt class="py-docstring"> negotiate encryption with a server. If it fails, an exception will be</tt> </tt> -<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"><tt class="py-docstring"> thrown. On success, the method will return cleanly, and an encrypted</tt> </tt> -<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"><tt class="py-docstring"> session exists. You may immediately call L{open_channel} or</tt> </tt> -<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"><tt class="py-docstring"> L{open_session} to get a L{Channel} object, which is used for data</tt> </tt> -<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"><tt class="py-docstring"> transfer.</tt> </tt> -<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"><tt class="py-docstring"> @note: If you fail to supply a password or private key, this method may</tt> </tt> -<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"><tt class="py-docstring"> succeed, but a subsequent L{open_channel} or L{open_session} call may</tt> </tt> -<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"><tt class="py-docstring"> fail because you haven't authenticated yet.</tt> </tt> -<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"><tt class="py-docstring"> @param hostkey: the host key expected from the server, or C{None} if</tt> </tt> -<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"><tt class="py-docstring"> you don't want to do host key verification.</tt> </tt> -<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"><tt class="py-docstring"> @type hostkey: L{PKey<pkey.PKey>}</tt> </tt> -<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as.</tt> </tt> -<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> -<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"><tt class="py-docstring"> @param password: a password to use for authentication, if you want to</tt> </tt> -<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"><tt class="py-docstring"> use password authentication; otherwise C{None}.</tt> </tt> -<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str</tt> </tt> -<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"><tt class="py-docstring"> @param pkey: a private key to use for authentication, if you want to</tt> </tt> -<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"><tt class="py-docstring"> use private key authentication; otherwise C{None}.</tt> </tt> -<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"><tt class="py-docstring"> @type pkey: L{PKey<pkey.PKey>}</tt> </tt> -<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the SSH2 negotiation fails, the host key</tt> </tt> -<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"><tt class="py-docstring"> supplied by the server is incorrect, or authentication fails.</tt> </tt> -<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hostkey</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-188', '_preferred_keys', 'link-51');">_preferred_keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-192', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Sending global request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_user_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">wait</tt><tt class="py-op">:</tt> </tt> +<a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> </tt> +</div><a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> </tt> +<a name="Transport.accept"></a><div id="Transport.accept-def"><a name="L925"></a><tt class="py-lineno"> 925</tt> <a class="py-toggle" href="#" id="Transport.accept-toggle" onclick="return toggle('Transport.accept');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#accept">accept</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.accept-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.accept-expanded"><a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"><tt class="py-docstring"> Return the next channel opened by the client over this transport, in</tt> </tt> +<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"><tt class="py-docstring"> server mode. If no channel is opened before the given timeout, C{None}</tt> </tt> +<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"><tt class="py-docstring"> is returned.</tt> </tt> +<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"><tt class="py-docstring"> @param timeout: seconds to wait for a channel, or C{None} to wait</tt> </tt> +<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"><tt class="py-docstring"> forever</tt> </tt> +<a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"><tt class="py-docstring"> @type timeout: int</tt> </tt> +<a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"><tt class="py-docstring"> @return: a new Channel opened by the client</tt> </tt> +<a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: L{Channel}</tt> </tt> +<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"> <tt class="py-comment"># timeout</tt> </tt> +<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chan</tt> </tt> +</div><a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> </tt> +<a name="Transport.connect"></a><div id="Transport.connect-def"><a name="L952"></a><tt class="py-lineno"> 952</tt> <a class="py-toggle" href="#" id="Transport.connect-toggle" onclick="return toggle('Transport.connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hostkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pkey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.connect-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.connect-expanded"><a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"><tt class="py-docstring"> Negotiate an SSH2 session, and optionally verify the server's host key</tt> </tt> +<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"><tt class="py-docstring"> and authenticate using a password or private key. This is a shortcut</tt> </tt> +<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"><tt class="py-docstring"> for L{start_client}, L{get_remote_server_key}, and</tt> </tt> +<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"><tt class="py-docstring"> L{Transport.auth_password} or L{Transport.auth_publickey}. Use those</tt> </tt> +<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"><tt class="py-docstring"> methods if you want more control.</tt> </tt> +<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"><tt class="py-docstring"> You can use this method immediately after creating a Transport to</tt> </tt> +<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"><tt class="py-docstring"> negotiate encryption with a server. If it fails, an exception will be</tt> </tt> +<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"><tt class="py-docstring"> thrown. On success, the method will return cleanly, and an encrypted</tt> </tt> +<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"><tt class="py-docstring"> session exists. You may immediately call L{open_channel} or</tt> </tt> +<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"><tt class="py-docstring"> L{open_session} to get a L{Channel} object, which is used for data</tt> </tt> +<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-docstring"> transfer.</tt> </tt> +<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"><tt class="py-docstring"> @note: If you fail to supply a password or private key, this method may</tt> </tt> +<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"><tt class="py-docstring"> succeed, but a subsequent L{open_channel} or L{open_session} call may</tt> </tt> +<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"><tt class="py-docstring"> fail because you haven't authenticated yet.</tt> </tt> +<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-docstring"> @param hostkey: the host key expected from the server, or C{None} if</tt> </tt> +<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"><tt class="py-docstring"> you don't want to do host key verification.</tt> </tt> +<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"><tt class="py-docstring"> @type hostkey: L{PKey<pkey.PKey>}</tt> </tt> +<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as.</tt> </tt> +<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> +<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"><tt class="py-docstring"> @param password: a password to use for authentication, if you want to</tt> </tt> +<a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"><tt class="py-docstring"> use password authentication; otherwise C{None}.</tt> </tt> +<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str</tt> </tt> +<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-docstring"> @param pkey: a private key to use for authentication, if you want to</tt> </tt> +<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"><tt class="py-docstring"> use private key authentication; otherwise C{None}.</tt> </tt> +<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"><tt class="py-docstring"> @type pkey: L{PKey<pkey.PKey>}</tt> </tt> +<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the SSH2 negotiation fails, the host key</tt> </tt> +<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"><tt class="py-docstring"> supplied by the server is incorrect, or authentication fails.</tt> </tt> +<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hostkey</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-193', '_preferred_keys', 'link-55');">_preferred_keys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-189', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt> -<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> </tt> -<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Method paramiko.Transport.start_client()=paramiko.Transport-class.html#start_client"><a title="paramiko.Transport.start_client" class="py-name" href="#" onclick="return doclink('link-190', 'start_client', 'link-190');">start_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> </tt> -<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt class="py-comment"># check host key if we were given one</tt> </tt> -<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostkey</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name" targets="Method paramiko.Transport.get_remote_server_key()=paramiko.Transport-class.html#get_remote_server_key"><a title="paramiko.Transport.get_remote_server_key" class="py-name" href="#" onclick="return doclink('link-191', 'get_remote_server_key', 'link-191');">get_remote_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-194', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt> +<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> </tt> +<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Method paramiko.Transport.start_client()=paramiko.Transport-class.html#start_client"><a title="paramiko.Transport.start_client" class="py-name" href="#" onclick="return doclink('link-195', 'start_client', 'link-195');">start_client</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> </tt> +<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> <tt class="py-comment"># check host key if we were given one</tt> </tt> +<a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">hostkey</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name" targets="Method paramiko.Transport.get_remote_server_key()=paramiko.Transport-class.html#get_remote_server_key"><a title="paramiko.Transport.get_remote_server_key" class="py-name" href="#" onclick="return doclink('link-196', 'get_remote_server_key', 'link-196');">get_remote_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-192', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-197', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-193', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-198', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1354,8 +1373,8 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-194', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Bad host key from server'</tt><tt class="py-op">)</tt> </tt> -<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-195" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-199', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Bad host key from server'</tt><tt class="py-op">)</tt> </tt> +<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1376,12 +1395,12 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-195', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Expected: %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-200', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Expected: %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-196', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-201', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">hostkey</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-202" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1402,13 +1421,13 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-197', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Got : %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-202', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Got : %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-198', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-199" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-199', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Bad host key from server'</tt><tt class="py-op">)</tt> </tt> -<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-200" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-203', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-204" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-204', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Bad host key from server'</tt><tt class="py-op">)</tt> </tt> +<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1429,15 +1448,15 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-200', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Host key verified (%s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="paramiko.AgentKey.get_name +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-205', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Host key verified (%s)'</tt> <tt class="py-op">%</tt> <tt class="py-name">hostkey</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="paramiko.AgentKey.get_name paramiko.Channel.get_name paramiko.DSSKey.get_name paramiko.PKey.get_name -paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-201', 'get_name', 'link-121');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> </tt> -<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-202" class="py-name" targets="Module paramiko.pkey=paramiko.pkey-module.html"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-202', 'pkey', 'link-202');">pkey</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-203" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.get_name" class="py-name" href="#" onclick="return doclink('link-206', 'get_name', 'link-126');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"> </tt> +<a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt id="link-207" class="py-name" targets="Module paramiko.pkey=paramiko.pkey-module.html"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-207', 'pkey', 'link-207');">pkey</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-208" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1458,10 +1477,10 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-203', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Attempting password auth...'</tt><tt class="py-op">)</tt> </tt> -<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method paramiko.Transport.auth_password()=paramiko.Transport-class.html#auth_password"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-204', 'auth_password', 'link-204');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-208', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Attempting password auth...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method paramiko.Transport.auth_password()=paramiko.Transport-class.html#auth_password"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-209', 'auth_password', 'link-209');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> +<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-210" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1482,380 +1501,380 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-205', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Attempting public-key auth...'</tt><tt class="py-op">)</tt> </tt> -<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name" targets="Method paramiko.Transport.auth_publickey()=paramiko.Transport-class.html#auth_publickey"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-206', 'auth_publickey', 'link-206');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt id="link-207" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-207', 'pkey', 'link-202');">pkey</a></tt><tt class="py-op">)</tt> </tt> -<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> </tt> -<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"> </tt> -<a name="Transport.get_exception"></a><div id="Transport.get_exception-def"><a name="L993"></a><tt class="py-lineno"> 993</tt> <a class="py-toggle" href="#" id="Transport.get_exception-toggle" onclick="return toggle('Transport.get_exception');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_exception">get_exception</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_exception-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_exception-expanded"><a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"><tt class="py-docstring"> Return any exception that happened during the last server request.</tt> </tt> -<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"><tt class="py-docstring"> This can be used to fetch more specific error information after using</tt> </tt> -<a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"><tt class="py-docstring"> calls like L{start_client}. The exception (if any) is cleared after</tt> </tt> -<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"><tt class="py-docstring"> this call.</tt> </tt> -<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"><tt class="py-docstring"> @return: an exception, or C{None} if there is no stored exception.</tt> </tt> -<a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: Exception</tt> </tt> -<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> </tt> -<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">e</tt> </tt> -<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> </tt> -<a name="Transport.set_subsystem_handler"></a><div id="Transport.set_subsystem_handler-def"><a name="L1013"></a><tt class="py-lineno">1013</tt> <a class="py-toggle" href="#" id="Transport.set_subsystem_handler-toggle" onclick="return toggle('Transport.set_subsystem_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_subsystem_handler">set_subsystem_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">larg</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwarg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.set_subsystem_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_subsystem_handler-expanded"><a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"><tt class="py-docstring"> Set the handler class for a subsystem in server mode. If a request</tt> </tt> -<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"><tt class="py-docstring"> for this subsystem is made on an open ssh channel later, this handler</tt> </tt> -<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"><tt class="py-docstring"> will be constructed and called -- see L{SubsystemHandler} for more</tt> </tt> -<a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"><tt class="py-docstring"> detailed documentation.</tt> </tt> -<a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"><tt class="py-docstring"> Any extra parameters (including keyword arguments) are saved and</tt> </tt> -<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"><tt class="py-docstring"> passed to the L{SubsystemHandler} constructor later.</tt> </tt> -<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"><tt class="py-docstring"> @param name: name of the subsystem.</tt> </tt> -<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> -<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: subclass of L{SubsystemHandler} that handles this</tt> </tt> -<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"><tt class="py-docstring"> subsystem.</tt> </tt> -<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: class</tt> </tt> -<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">[</tt><tt id="link-208" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-208', 'name', 'link-56');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">larg</tt><tt class="py-op">,</tt> <tt class="py-name">kwarg</tt><tt class="py-op">)</tt> </tt> -<a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"> </tt> -<a name="Transport.is_authenticated"></a><div id="Transport.is_authenticated-def"><a name="L1035"></a><tt class="py-lineno">1035</tt> <a class="py-toggle" href="#" id="Transport.is_authenticated-toggle" onclick="return toggle('Transport.is_authenticated');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#is_authenticated">is_authenticated</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.is_authenticated-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.is_authenticated-expanded"><a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"><tt class="py-docstring"> Return true if this session is active and authenticated.</tt> </tt> -<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if the session is still open and has been authenticated</tt> </tt> -<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"><tt class="py-docstring"> successfully; False if authentication failed and/or the session is</tt> </tt> -<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"><tt class="py-docstring"> closed.</tt> </tt> -<a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-209', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-210', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="paramiko.Transport.is_authenticated" class="py-name" href="#" onclick="return doclink('link-211', 'is_authenticated', 'link-109');">is_authenticated</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"> </tt> -<a name="Transport.get_username"></a><div id="Transport.get_username-def"><a name="L1046"></a><tt class="py-lineno">1046</tt> <a class="py-toggle" href="#" id="Transport.get_username-toggle" onclick="return toggle('Transport.get_username');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_username">get_username</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_username-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_username-expanded"><a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"><tt class="py-docstring"> Return the username this connection is authenticated for. If the</tt> </tt> -<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"><tt class="py-docstring"> session is not authenticated (or authentication failed), this method</tt> </tt> -<a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"><tt class="py-docstring"> returns C{None}.</tt> </tt> -<a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"><tt class="py-docstring"> @return: username that was authenticated, or C{None}.</tt> </tt> -<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt> -<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-212', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-213', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method paramiko.Transport.get_username()=paramiko.Transport-class.html#get_username"><a title="paramiko.Transport.get_username" class="py-name" href="#" onclick="return doclink('link-214', 'get_username', 'link-214');">get_username</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> </tt> -<a name="Transport.auth_none"></a><div id="Transport.auth_none-def"><a name="L1059"></a><tt class="py-lineno">1059</tt> <a class="py-toggle" href="#" id="Transport.auth_none-toggle" onclick="return toggle('Transport.auth_none');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_none">auth_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.auth_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_none-expanded"><a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"><tt class="py-docstring"> Try to authenticate to the server using no authentication at all.</tt> </tt> -<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"><tt class="py-docstring"> This will almost always fail. It may be useful for determining the</tt> </tt> -<a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"><tt class="py-docstring"> list of authentication types supported by the server, by catching the</tt> </tt> -<a name="L1064"></a><tt class="py-lineno">1064</tt> <tt class="py-line"><tt class="py-docstring"> L{BadAuthenticationType} exception raised.</tt> </tt> -<a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> -<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> -<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> -<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> -<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> -<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if "none" authentication isn't allowed</tt> </tt> -<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"><tt class="py-docstring"> by the server for this user</tt> </tt> -<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the authentication failed due to a network</tt> </tt> -<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"><tt class="py-docstring"> error</tt> </tt> -<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5</tt> </tt> -<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-215" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-215', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> -<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-216', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-217', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Method paramiko.Transport.auth_none()=paramiko.Transport-class.html#auth_none"><a title="paramiko.Transport.auth_none" class="py-name" href="#" onclick="return doclink('link-218', 'auth_none', 'link-218');">auth_none</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-219', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> </tt> -<a name="Transport.auth_password"></a><div id="Transport.auth_password-def"><a name="L1086"></a><tt class="py-lineno">1086</tt> <a class="py-toggle" href="#" id="Transport.auth_password-toggle" onclick="return toggle('Transport.auth_password');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_password">auth_password</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">fallback</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.auth_password-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_password-expanded"><a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server using a password. The username and password</tt> </tt> -<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"><tt class="py-docstring"> are sent over an encrypted link.</tt> </tt> -<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"><tt class="py-docstring"> If an C{event} is passed in, this method will return immediately, and</tt> </tt> -<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"><tt class="py-docstring"> the event will be triggered once authentication succeeds or fails. On</tt> </tt> -<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"><tt class="py-docstring"> success, L{is_authenticated} will return C{True}. On failure, you may</tt> </tt> -<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"><tt class="py-docstring"> use L{get_exception} to get more detailed error information.</tt> </tt> -<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.1, if no event is passed, this method will block until the</tt> </tt> -<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"><tt class="py-docstring"> authentication succeeds or fails. On failure, an exception is raised.</tt> </tt> -<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise, the method simply returns.</tt> </tt> -<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5, if no event is passed and C{fallback} is C{True} (the</tt> </tt> -<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"><tt class="py-docstring"> default), if the server doesn't support plain password authentication</tt> </tt> -<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"><tt class="py-docstring"> but does support so-called "keyboard-interactive" mode, an attempt</tt> </tt> -<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"><tt class="py-docstring"> will be made to authenticate using this interactive mode. If it fails,</tt> </tt> -<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"><tt class="py-docstring"> the normal exception will be thrown as if the attempt had never been</tt> </tt> -<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"><tt class="py-docstring"> made. This is useful for some recent Gentoo and Debian distributions,</tt> </tt> -<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-docstring"> which turn off plain password authentication in a misguided belief</tt> </tt> -<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"><tt class="py-docstring"> that interactive authentication is "more secure". (It's not.)</tt> </tt> -<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> -<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> -<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> -<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> -<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> -<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-docstring"> @param password: the password to authenticate with</tt> </tt> -<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str or unicode</tt> </tt> -<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when the authentication attempt is</tt> </tt> -<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"><tt class="py-docstring"> complete (whether it was successful or not)</tt> </tt> -<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> -<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"><tt class="py-docstring"> @param fallback: C{True} if an attempt at an automated "interactive"</tt> </tt> -<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"><tt class="py-docstring"> password auth should be made if the server doesn't support normal</tt> </tt> -<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"><tt class="py-docstring"> password auth</tt> </tt> -<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"><tt class="py-docstring"> @type fallback: bool</tt> </tt> -<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> -<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> -<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> -<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if password authentication isn't</tt> </tt> -<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user (and no event was passed in)</tt> </tt> -<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed (and no</tt> </tt> -<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"><tt class="py-docstring"> event was passed in)</tt> </tt> -<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> -<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to send the password unless we're on a secure link</tt> </tt> -<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt id="link-220" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-220', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> -<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> -<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-221', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-222', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-223', 'auth_password', 'link-204');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-comment"># caller wants to wait for event themselves</tt> </tt> -<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-224', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-225" class="py-name"><a title="paramiko.BadAuthenticationType" class="py-name" href="#" onclick="return doclink('link-225', 'BadAuthenticationType', 'link-43');">BadAuthenticationType</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> -<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt class="py-comment"># if password auth isn't allowed, but keyboard-interactive *is*, try to fudge it</tt> </tt> -<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fallback</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'keyboard-interactive'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name" targets="Variable paramiko.BadAuthenticationType.allowed_types=paramiko.BadAuthenticationType-class.html#allowed_types,Variable paramiko.ssh_exception.PartialAuthentication.allowed_types=paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><a title="paramiko.BadAuthenticationType.allowed_types -paramiko.ssh_exception.PartialAuthentication.allowed_types" class="py-name" href="#" onclick="return doclink('link-226', 'allowed_types', 'link-226');">allowed_types</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt> -<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">handler</tt><tt class="py-op">(</tt><tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">instructions</tt><tt class="py-op">,</tt> <tt class="py-param">fields</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-227" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-227', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Fallback authentication failed.'</tt><tt class="py-op">)</tt> </tt> -<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-comment"># for some reason, at least on os x, a 2nd request will</tt> </tt> -<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># be made with zero fields requested. maybe it's just</tt> </tt> -<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># to try to fake out automated scripting of the exact</tt> </tt> -<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># type we're doing here. *shrug* :)</tt> </tt> -<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">password</tt> <tt class="py-op">]</tt> </tt> -</div><a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name" targets="Method paramiko.Transport.auth_interactive()=paramiko.Transport-class.html#auth_interactive"><a title="paramiko.Transport.auth_interactive" class="py-name" href="#" onclick="return doclink('link-228', 'auth_interactive', 'link-228');">auth_interactive</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt> -<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-229" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-229', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignored</tt><tt class="py-op">:</tt> </tt> -<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-comment"># attempt failed; just raise the original exception</tt> </tt> -<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt class="py-name">x</tt> </tt> -<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> </tt> -<a name="Transport.auth_publickey"></a><div id="Transport.auth_publickey-def"><a name="L1169"></a><tt class="py-lineno">1169</tt> <a class="py-toggle" href="#" id="Transport.auth_publickey-toggle" onclick="return toggle('Transport.auth_publickey');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_publickey">auth_publickey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.auth_publickey-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_publickey-expanded"><a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server using a private key. The key is used to</tt> </tt> -<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"><tt class="py-docstring"> sign data from the server, so it must include the private part.</tt> </tt> -<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"><tt class="py-docstring"> If an C{event} is passed in, this method will return immediately, and</tt> </tt> -<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"><tt class="py-docstring"> the event will be triggered once authentication succeeds or fails. On</tt> </tt> -<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"><tt class="py-docstring"> success, L{is_authenticated} will return C{True}. On failure, you may</tt> </tt> -<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"><tt class="py-docstring"> use L{get_exception} to get more detailed error information.</tt> </tt> -<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.1, if no event is passed, this method will block until the</tt> </tt> -<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"><tt class="py-docstring"> authentication succeeds or fails. On failure, an exception is raised.</tt> </tt> -<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise, the method simply returns.</tt> </tt> -<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> -<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> -<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> -<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> -<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> -<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the private key to authenticate with</tt> </tt> -<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey <pkey.PKey>}</tt> </tt> -<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when the authentication attempt is</tt> </tt> -<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-docstring"> complete (whether it was successful or not)</tt> </tt> -<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> -<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> -<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> -<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> -<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if public-key authentication isn't</tt> </tt> -<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user (and no event was passed in)</tt> </tt> -<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed (and no</tt> </tt> -<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"><tt class="py-docstring"> event was passed in)</tt> </tt> -<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> -<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to authenticate unless we're on a secure link</tt> </tt> -<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt id="link-230" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-230', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> -<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> -<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-231', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-232', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-233', 'auth_publickey', 'link-206');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"> <tt class="py-comment"># caller wants to wait for event themselves</tt> </tt> -<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-234', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"> </tt> -<a name="Transport.auth_interactive"></a><div id="Transport.auth_interactive-def"><a name="L1218"></a><tt class="py-lineno">1218</tt> <a class="py-toggle" href="#" id="Transport.auth_interactive-toggle" onclick="return toggle('Transport.auth_interactive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_interactive">auth_interactive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">submethods</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.auth_interactive-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_interactive-expanded"><a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server interactively. A handler is used to answer</tt> </tt> -<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"><tt class="py-docstring"> arbitrary questions from the server. On many servers, this is just a</tt> </tt> -<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"><tt class="py-docstring"> dumb wrapper around PAM.</tt> </tt> -<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"><tt class="py-docstring"> This method will block until the authentication succeeds or fails,</tt> </tt> -<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"><tt class="py-docstring"> peroidically calling the handler asynchronously to get answers to</tt> </tt> -<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"><tt class="py-docstring"> authentication questions. The handler may be called more than once</tt> </tt> -<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"><tt class="py-docstring"> if the server continues to ask questions.</tt> </tt> -<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"><tt class="py-docstring"> The handler is expected to be a callable that will handle calls of the</tt> </tt> -<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"><tt class="py-docstring"> form: C{handler(title, instructions, prompt_list)}. The C{title} is</tt> </tt> -<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"><tt class="py-docstring"> meant to be a dialog-window title, and the C{instructions} are user</tt> </tt> -<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"><tt class="py-docstring"> instructions (both are strings). C{prompt_list} will be a list of</tt> </tt> -<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"><tt class="py-docstring"> prompts, each prompt being a tuple of C{(str, bool)}. The string is</tt> </tt> -<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"><tt class="py-docstring"> the prompt and the boolean indicates whether the user text should be</tt> </tt> -<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"><tt class="py-docstring"> echoed.</tt> </tt> -<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"><tt class="py-docstring"> A sample call would thus be:</tt> </tt> -<a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"><tt class="py-docstring"> C{handler('title', 'instructions', [('Password:', False)])}.</tt> </tt> -<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"><tt class="py-docstring"> The handler should return a list or tuple of answers to the server's</tt> </tt> -<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"><tt class="py-docstring"> questions.</tt> </tt> -<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> -<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> -<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-210', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Attempting public-key auth...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method paramiko.Transport.auth_publickey()=paramiko.Transport-class.html#auth_publickey"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-211', 'auth_publickey', 'link-211');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt id="link-212" class="py-name"><a title="paramiko.pkey" class="py-name" href="#" onclick="return doclink('link-212', 'pkey', 'link-207');">pkey</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> </tt> +<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +</div><a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> </tt> +<a name="Transport.get_exception"></a><div id="Transport.get_exception-def"><a name="L1011"></a><tt class="py-lineno">1011</tt> <a class="py-toggle" href="#" id="Transport.get_exception-toggle" onclick="return toggle('Transport.get_exception');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_exception">get_exception</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_exception-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_exception-expanded"><a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"><tt class="py-docstring"> Return any exception that happened during the last server request.</tt> </tt> +<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"><tt class="py-docstring"> This can be used to fetch more specific error information after using</tt> </tt> +<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"><tt class="py-docstring"> calls like L{start_client}. The exception (if any) is cleared after</tt> </tt> +<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"><tt class="py-docstring"> this call.</tt> </tt> +<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"><tt class="py-docstring"> @return: an exception, or C{None} if there is no stored exception.</tt> </tt> +<a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: Exception</tt> </tt> +<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> </tt> +<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">e</tt> </tt> +<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> </tt> +<a name="Transport.set_subsystem_handler"></a><div id="Transport.set_subsystem_handler-def"><a name="L1031"></a><tt class="py-lineno">1031</tt> <a class="py-toggle" href="#" id="Transport.set_subsystem_handler-toggle" onclick="return toggle('Transport.set_subsystem_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_subsystem_handler">set_subsystem_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">larg</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwarg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.set_subsystem_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_subsystem_handler-expanded"><a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"><tt class="py-docstring"> Set the handler class for a subsystem in server mode. If a request</tt> </tt> +<a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"><tt class="py-docstring"> for this subsystem is made on an open ssh channel later, this handler</tt> </tt> +<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"><tt class="py-docstring"> will be constructed and called -- see L{SubsystemHandler} for more</tt> </tt> +<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"><tt class="py-docstring"> detailed documentation.</tt> </tt> +<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"><tt class="py-docstring"> Any extra parameters (including keyword arguments) are saved and</tt> </tt> +<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"><tt class="py-docstring"> passed to the L{SubsystemHandler} constructor later.</tt> </tt> +<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"><tt class="py-docstring"> @param name: name of the subsystem.</tt> </tt> +<a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> +<a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: subclass of L{SubsystemHandler} that handles this</tt> </tt> +<a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"><tt class="py-docstring"> subsystem.</tt> </tt> +<a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: class</tt> </tt> +<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">[</tt><tt id="link-213" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-213', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">larg</tt><tt class="py-op">,</tt> <tt class="py-name">kwarg</tt><tt class="py-op">)</tt> </tt> +<a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"> </tt> +<a name="Transport.is_authenticated"></a><div id="Transport.is_authenticated-def"><a name="L1053"></a><tt class="py-lineno">1053</tt> <a class="py-toggle" href="#" id="Transport.is_authenticated-toggle" onclick="return toggle('Transport.is_authenticated');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#is_authenticated">is_authenticated</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.is_authenticated-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.is_authenticated-expanded"><a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"><tt class="py-docstring"> Return true if this session is active and authenticated.</tt> </tt> +<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"><tt class="py-docstring"> @return: True if the session is still open and has been authenticated</tt> </tt> +<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"><tt class="py-docstring"> successfully; False if authentication failed and/or the session is</tt> </tt> +<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"><tt class="py-docstring"> closed.</tt> </tt> +<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-214', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-215', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="paramiko.Transport.is_authenticated" class="py-name" href="#" onclick="return doclink('link-216', 'is_authenticated', 'link-114');">is_authenticated</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> </tt> +<a name="Transport.get_username"></a><div id="Transport.get_username-def"><a name="L1064"></a><tt class="py-lineno">1064</tt> <a class="py-toggle" href="#" id="Transport.get_username-toggle" onclick="return toggle('Transport.get_username');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_username">get_username</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_username-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_username-expanded"><a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"><tt class="py-docstring"> Return the username this connection is authenticated for. If the</tt> </tt> +<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-docstring"> session is not authenticated (or authentication failed), this method</tt> </tt> +<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"><tt class="py-docstring"> returns C{None}.</tt> </tt> +<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"><tt class="py-docstring"> @return: username that was authenticated, or C{None}.</tt> </tt> +<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt> +<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-217', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-218', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name" targets="Method paramiko.Transport.get_username()=paramiko.Transport-class.html#get_username"><a title="paramiko.Transport.get_username" class="py-name" href="#" onclick="return doclink('link-219', 'get_username', 'link-219');">get_username</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> </tt> +<a name="Transport.auth_none"></a><div id="Transport.auth_none-def"><a name="L1077"></a><tt class="py-lineno">1077</tt> <a class="py-toggle" href="#" id="Transport.auth_none-toggle" onclick="return toggle('Transport.auth_none');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_none">auth_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.auth_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_none-expanded"><a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"><tt class="py-docstring"> Try to authenticate to the server using no authentication at all.</tt> </tt> +<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"><tt class="py-docstring"> This will almost always fail. It may be useful for determining the</tt> </tt> +<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"><tt class="py-docstring"> list of authentication types supported by the server, by catching the</tt> </tt> +<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"><tt class="py-docstring"> L{BadAuthenticationType} exception raised.</tt> </tt> +<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> +<a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> +<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> +<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> +<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> +<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if "none" authentication isn't allowed</tt> </tt> +<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"><tt class="py-docstring"> by the server for this user</tt> </tt> +<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if the authentication failed due to a network</tt> </tt> +<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"><tt class="py-docstring"> error</tt> </tt> +<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5</tt> </tt> +<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-220" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-220', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> +<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-221', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-222', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Method paramiko.Transport.auth_none()=paramiko.Transport-class.html#auth_none"><a title="paramiko.Transport.auth_none" class="py-name" href="#" onclick="return doclink('link-223', 'auth_none', 'link-223');">auth_none</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-224', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> </tt> +<a name="Transport.auth_password"></a><div id="Transport.auth_password-def"><a name="L1104"></a><tt class="py-lineno">1104</tt> <a class="py-toggle" href="#" id="Transport.auth_password-toggle" onclick="return toggle('Transport.auth_password');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_password">auth_password</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">fallback</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.auth_password-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_password-expanded"><a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server using a password. The username and password</tt> </tt> +<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"><tt class="py-docstring"> are sent over an encrypted link.</tt> </tt> +<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"><tt class="py-docstring"> If an C{event} is passed in, this method will return immediately, and</tt> </tt> +<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"><tt class="py-docstring"> the event will be triggered once authentication succeeds or fails. On</tt> </tt> +<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"><tt class="py-docstring"> success, L{is_authenticated} will return C{True}. On failure, you may</tt> </tt> +<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-docstring"> use L{get_exception} to get more detailed error information.</tt> </tt> +<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.1, if no event is passed, this method will block until the</tt> </tt> +<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-docstring"> authentication succeeds or fails. On failure, an exception is raised.</tt> </tt> +<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise, the method simply returns.</tt> </tt> +<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5, if no event is passed and C{fallback} is C{True} (the</tt> </tt> +<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"><tt class="py-docstring"> default), if the server doesn't support plain password authentication</tt> </tt> +<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"><tt class="py-docstring"> but does support so-called "keyboard-interactive" mode, an attempt</tt> </tt> +<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"><tt class="py-docstring"> will be made to authenticate using this interactive mode. If it fails,</tt> </tt> +<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"><tt class="py-docstring"> the normal exception will be thrown as if the attempt had never been</tt> </tt> +<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"><tt class="py-docstring"> made. This is useful for some recent Gentoo and Debian distributions,</tt> </tt> +<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"><tt class="py-docstring"> which turn off plain password authentication in a misguided belief</tt> </tt> +<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"><tt class="py-docstring"> that interactive authentication is "more secure". (It's not.)</tt> </tt> +<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> +<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> +<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> +<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> +<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"><tt class="py-docstring"> @type username: str</tt> </tt> +<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"><tt class="py-docstring"> @param password: the password to authenticate with</tt> </tt> +<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str or unicode</tt> </tt> +<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when the authentication attempt is</tt> </tt> +<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"><tt class="py-docstring"> complete (whether it was successful or not)</tt> </tt> +<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> +<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"><tt class="py-docstring"> @param fallback: C{True} if an attempt at an automated "interactive"</tt> </tt> +<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"><tt class="py-docstring"> password auth should be made if the server doesn't support normal</tt> </tt> +<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"><tt class="py-docstring"> password auth</tt> </tt> +<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"><tt class="py-docstring"> @type fallback: bool</tt> </tt> +<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> +<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> +<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> +<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if password authentication isn't</tt> </tt> +<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user (and no event was passed in)</tt> </tt> +<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed (and no</tt> </tt> +<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"><tt class="py-docstring"> event was passed in)</tt> </tt> +<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> +<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to send the password unless we're on a secure link</tt> </tt> +<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-225" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-225', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> +<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> +<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-226', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-227', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="paramiko.Transport.auth_password" class="py-name" href="#" onclick="return doclink('link-228', 'auth_password', 'link-209');">auth_password</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-comment"># caller wants to wait for event themselves</tt> </tt> +<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-229', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-230" class="py-name"><a title="paramiko.BadAuthenticationType" class="py-name" href="#" onclick="return doclink('link-230', 'BadAuthenticationType', 'link-43');">BadAuthenticationType</a></tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> +<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-comment"># if password auth isn't allowed, but keyboard-interactive *is*, try to fudge it</tt> </tt> +<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">fallback</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-string">'keyboard-interactive'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Variable paramiko.BadAuthenticationType.allowed_types=paramiko.BadAuthenticationType-class.html#allowed_types,Variable paramiko.ssh_exception.PartialAuthentication.allowed_types=paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><a title="paramiko.BadAuthenticationType.allowed_types +paramiko.ssh_exception.PartialAuthentication.allowed_types" class="py-name" href="#" onclick="return doclink('link-231', 'allowed_types', 'link-231');">allowed_types</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt> +<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">handler</tt><tt class="py-op">(</tt><tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">instructions</tt><tt class="py-op">,</tt> <tt class="py-param">fields</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-232" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-232', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Fallback authentication failed.'</tt><tt class="py-op">)</tt> </tt> +<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">fields</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"> <tt class="py-comment"># for some reason, at least on os x, a 2nd request will</tt> </tt> +<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt class="py-comment"># be made with zero fields requested. maybe it's just</tt> </tt> +<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"> <tt class="py-comment"># to try to fake out automated scripting of the exact</tt> </tt> +<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-comment"># type we're doing here. *shrug* :)</tt> </tt> +<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">password</tt> <tt class="py-op">]</tt> </tt> +</div><a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Method paramiko.Transport.auth_interactive()=paramiko.Transport-class.html#auth_interactive"><a title="paramiko.Transport.auth_interactive" class="py-name" href="#" onclick="return doclink('link-233', 'auth_interactive', 'link-233');">auth_interactive</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">)</tt> </tt> +<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-234" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-234', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">ignored</tt><tt class="py-op">:</tt> </tt> +<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"> <tt class="py-comment"># attempt failed; just raise the original exception</tt> </tt> +<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">x</tt> </tt> +<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +</div><a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"> </tt> +<a name="Transport.auth_publickey"></a><div id="Transport.auth_publickey-def"><a name="L1187"></a><tt class="py-lineno">1187</tt> <a class="py-toggle" href="#" id="Transport.auth_publickey-toggle" onclick="return toggle('Transport.auth_publickey');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_publickey">auth_publickey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">event</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.auth_publickey-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_publickey-expanded"><a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server using a private key. The key is used to</tt> </tt> +<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"><tt class="py-docstring"> sign data from the server, so it must include the private part.</tt> </tt> +<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-docstring"> If an C{event} is passed in, this method will return immediately, and</tt> </tt> +<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-docstring"> the event will be triggered once authentication succeeds or fails. On</tt> </tt> +<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-docstring"> success, L{is_authenticated} will return C{True}. On failure, you may</tt> </tt> +<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-docstring"> use L{get_exception} to get more detailed error information.</tt> </tt> +<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.1, if no event is passed, this method will block until the</tt> </tt> +<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-docstring"> authentication succeeds or fails. On failure, an exception is raised.</tt> </tt> +<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-docstring"> Otherwise, the method simply returns.</tt> </tt> +<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> +<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> +<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> +<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> +<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> +<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the private key to authenticate with</tt> </tt> +<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"><tt class="py-docstring"> @type key: L{PKey <pkey.PKey>}</tt> </tt> +<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"><tt class="py-docstring"> @param event: an event to trigger when the authentication attempt is</tt> </tt> +<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"><tt class="py-docstring"> complete (whether it was successful or not)</tt> </tt> +<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"><tt class="py-docstring"> @type event: threading.Event</tt> </tt> +<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> +<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty)</tt> </tt> +<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> +<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if public-key authentication isn't</tt> </tt> +<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user (and no event was passed in)</tt> </tt> +<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed (and no</tt> </tt> +<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"><tt class="py-docstring"> event was passed in)</tt> </tt> +<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> +<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to authenticate unless we're on a secure link</tt> </tt> +<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-235" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-235', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> +<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">event</tt> </tt> +<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-236', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-237', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="paramiko.Transport.auth_publickey" class="py-name" href="#" onclick="return doclink('link-238', 'auth_publickey', 'link-211');">auth_publickey</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt class="py-comment"># caller wants to wait for event themselves</tt> </tt> +<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-239', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> </tt> +<a name="Transport.auth_interactive"></a><div id="Transport.auth_interactive-def"><a name="L1236"></a><tt class="py-lineno">1236</tt> <a class="py-toggle" href="#" id="Transport.auth_interactive-toggle" onclick="return toggle('Transport.auth_interactive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#auth_interactive">auth_interactive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">username</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">submethods</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.auth_interactive-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.auth_interactive-expanded"><a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"><tt class="py-docstring"> Authenticate to the server interactively. A handler is used to answer</tt> </tt> +<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"><tt class="py-docstring"> arbitrary questions from the server. On many servers, this is just a</tt> </tt> +<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"><tt class="py-docstring"> dumb wrapper around PAM.</tt> </tt> +<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"><tt class="py-docstring"> This method will block until the authentication succeeds or fails,</tt> </tt> +<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"><tt class="py-docstring"> peroidically calling the handler asynchronously to get answers to</tt> </tt> +<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"><tt class="py-docstring"> authentication questions. The handler may be called more than once</tt> </tt> +<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"><tt class="py-docstring"> if the server continues to ask questions.</tt> </tt> <a name="L1246"></a><tt class="py-lineno">1246</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> -<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> -<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: a handler for responding to server questions</tt> </tt> -<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: callable</tt> </tt> -<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"><tt class="py-docstring"> @param submethods: a string list of desired submethods (optional)</tt> </tt> -<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"><tt class="py-docstring"> @type submethods: str</tt> </tt> -<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> -<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty).</tt> </tt> -<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> -<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if public-key authentication isn't</tt> </tt> -<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user</tt> </tt> -<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed</tt> </tt> -<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> -<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5</tt> </tt> -<a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to authenticate unless we're on a secure link</tt> </tt> -<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">raise</tt> <tt id="link-235" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-235', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> -<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1268"></a><tt class="py-lineno">1268</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-236', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-237', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="paramiko.Transport.auth_interactive" class="py-name" href="#" onclick="return doclink('link-238', 'auth_interactive', 'link-228');">auth_interactive</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">,</tt> <tt class="py-name">submethods</tt><tt class="py-op">)</tt> </tt> -<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-239', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"> </tt> -<a name="Transport.set_log_channel"></a><div id="Transport.set_log_channel-def"><a name="L1272"></a><tt class="py-lineno">1272</tt> <a class="py-toggle" href="#" id="Transport.set_log_channel-toggle" onclick="return toggle('Transport.set_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_log_channel">set_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.set_log_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_log_channel-expanded"><a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"><tt class="py-docstring"> Set the channel for this transport's logging. The default is</tt> </tt> -<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"><tt class="py-docstring"> C{"paramiko.transport"} but it can be set to anything you want.</tt> </tt> -<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"><tt class="py-docstring"> (See the C{logging} module for more info.) SSH Channels will log</tt> </tt> -<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"><tt class="py-docstring"> to a sub-channel of the one specified.</tt> </tt> -<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name for logging</tt> </tt> -<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> -<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> -<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> <tt class="py-op">=</tt> <tt id="link-240" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-240', 'name', 'link-56');">name</a></tt> </tt> -<a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-241', 'logger', 'link-103');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-242" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-242', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-243', 'get_logger', 'link-105');">get_logger</a></tt><tt class="py-op">(</tt><tt id="link-244" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-244', 'name', 'link-56');">name</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_log</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-245', 'logger', 'link-103');">logger</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> </tt> -<a name="Transport.get_log_channel"></a><div id="Transport.get_log_channel-def"><a name="L1288"></a><tt class="py-lineno">1288</tt> <a class="py-toggle" href="#" id="Transport.get_log_channel-toggle" onclick="return toggle('Transport.get_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_log_channel">get_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_log_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_log_channel-expanded"><a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"><tt class="py-docstring"> Return the channel name used for this transport's logging.</tt> </tt> -<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"><tt class="py-docstring"> @return: channel name.</tt> </tt> -<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> -<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> </tt> -</div><a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"> </tt> -<a name="Transport.set_hexdump"></a><div id="Transport.set_hexdump-def"><a name="L1299"></a><tt class="py-lineno">1299</tt> <a class="py-toggle" href="#" id="Transport.set_hexdump-toggle" onclick="return toggle('Transport.set_hexdump');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_hexdump">set_hexdump</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hexdump</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.set_hexdump-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_hexdump-expanded"><a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off logging a hex dump of protocol traffic at DEBUG level in</tt> </tt> -<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"><tt class="py-docstring"> the logs. Normally you would want this off (which is the default),</tt> </tt> -<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"><tt class="py-docstring"> but if you are debugging something, it may be useful.</tt> </tt> -<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"><tt class="py-docstring"> @param hexdump: C{True} to log protocol traffix (in hex) to the log;</tt> </tt> -<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"><tt class="py-docstring"> C{False} otherwise.</tt> </tt> -<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"><tt class="py-docstring"> @type hexdump: bool</tt> </tt> -<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name" targets="Method paramiko.Transport.set_hexdump()=paramiko.Transport-class.html#set_hexdump"><a title="paramiko.Transport.set_hexdump" class="py-name" href="#" onclick="return doclink('link-246', 'set_hexdump', 'link-246');">set_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-name">hexdump</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> </tt> -<a name="Transport.get_hexdump"></a><div id="Transport.get_hexdump-def"><a name="L1311"></a><tt class="py-lineno">1311</tt> <a class="py-toggle" href="#" id="Transport.get_hexdump-toggle" onclick="return toggle('Transport.get_hexdump');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_hexdump">get_hexdump</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.get_hexdump-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_hexdump-expanded"><a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-docstring"> Return C{True} if the transport is currently logging hex dumps of</tt> </tt> -<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"><tt class="py-docstring"> protocol traffic.</tt> </tt> -<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if hex dumps are being logged</tt> </tt> -<a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> -<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> -<a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name" targets="Method paramiko.Transport.get_hexdump()=paramiko.Transport-class.html#get_hexdump"><a title="paramiko.Transport.get_hexdump" class="py-name" href="#" onclick="return doclink('link-247', 'get_hexdump', 'link-247');">get_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"> </tt> -<a name="Transport.use_compression"></a><div id="Transport.use_compression-def"><a name="L1323"></a><tt class="py-lineno">1323</tt> <a class="py-toggle" href="#" id="Transport.use_compression-toggle" onclick="return toggle('Transport.use_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#use_compression">use_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">compress</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.use_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.use_compression-expanded"><a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off compression. This will only have an affect before starting</tt> </tt> -<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"><tt class="py-docstring"> the transport (ie before calling L{connect}, etc). By default,</tt> </tt> -<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"><tt class="py-docstring"> compression is off since it negatively affects interactive sessions.</tt> </tt> -<a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"><tt class="py-docstring"> @param compress: C{True} to ask the remote client/server to compress</tt> </tt> -<a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"><tt class="py-docstring"> traffic; C{False} to refuse compression</tt> </tt> -<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"><tt class="py-docstring"> @type compress: bool</tt> </tt> -<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.2</tt> </tt> -<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-248" class="py-name"><a title="paramiko.compress" class="py-name" href="#" onclick="return doclink('link-248', 'compress', 'link-10');">compress</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-249', '_preferred_compression', 'link-53');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">,</tt> <tt class="py-string">'zlib'</tt><tt class="py-op">,</tt> <tt class="py-string">'none'</tt> <tt class="py-op">)</tt> </tt> -<a name="L1337"></a><tt class="py-lineno">1337</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-250', '_preferred_compression', 'link-53');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt> </tt> -</div><a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"> </tt> -<a name="Transport.getpeername"></a><div id="Transport.getpeername-def"><a name="L1340"></a><tt class="py-lineno">1340</tt> <a class="py-toggle" href="#" id="Transport.getpeername-toggle" onclick="return toggle('Transport.getpeername');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#getpeername">getpeername</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.getpeername-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.getpeername-expanded"><a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"><tt class="py-docstring"> Return the address of the remote side of this Transport, if possible.</tt> </tt> -<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"><tt class="py-docstring"> This is effectively a wrapper around C{'getpeername'} on the underlying</tt> </tt> -<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"><tt class="py-docstring"> socket. If the socket-like object has no C{'getpeername'} method,</tt> </tt> -<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"><tt class="py-docstring"> then C{("unknown", 0)} is returned.</tt> </tt> -<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"><tt class="py-docstring"> @return: the address if the remote host, if known</tt> </tt> -<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(str, int)</tt> </tt> -<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"> <tt class="py-name">gp</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">,</tt> <tt class="py-string">'getpeername'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">gp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'unknown'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">gp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> </tt> -<a name="Transport.stop_thread"></a><div id="Transport.stop_thread-def"><a name="L1355"></a><tt class="py-lineno">1355</tt> <a class="py-toggle" href="#" id="Transport.stop_thread-toggle" onclick="return toggle('Transport.stop_thread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#stop_thread">stop_thread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.stop_thread-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.stop_thread-expanded"><a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="paramiko.Agent.close +<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"><tt class="py-docstring"> The handler is expected to be a callable that will handle calls of the</tt> </tt> +<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"><tt class="py-docstring"> form: C{handler(title, instructions, prompt_list)}. The C{title} is</tt> </tt> +<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"><tt class="py-docstring"> meant to be a dialog-window title, and the C{instructions} are user</tt> </tt> +<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"><tt class="py-docstring"> instructions (both are strings). C{prompt_list} will be a list of</tt> </tt> +<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"><tt class="py-docstring"> prompts, each prompt being a tuple of C{(str, bool)}. The string is</tt> </tt> +<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"><tt class="py-docstring"> the prompt and the boolean indicates whether the user text should be</tt> </tt> +<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"><tt class="py-docstring"> echoed.</tt> </tt> +<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"><tt class="py-docstring"> A sample call would thus be:</tt> </tt> +<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"><tt class="py-docstring"> C{handler('title', 'instructions', [('Password:', False)])}.</tt> </tt> +<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"><tt class="py-docstring"> The handler should return a list or tuple of answers to the server's</tt> </tt> +<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"><tt class="py-docstring"> questions.</tt> </tt> +<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"><tt class="py-docstring"> If the server requires multi-step authentication (which is very rare),</tt> </tt> +<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"><tt class="py-docstring"> this method will return a list of auth types permissible for the next</tt> </tt> +<a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"><tt class="py-docstring"> step. Otherwise, in the normal case, an empty list is returned.</tt> </tt> +<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"><tt class="py-docstring"> @param username: the username to authenticate as</tt> </tt> +<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"><tt class="py-docstring"> @type username: string</tt> </tt> +<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"><tt class="py-docstring"> @param handler: a handler for responding to server questions</tt> </tt> +<a name="L1268"></a><tt class="py-lineno">1268</tt> <tt class="py-line"><tt class="py-docstring"> @type handler: callable</tt> </tt> +<a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"><tt class="py-docstring"> @param submethods: a string list of desired submethods (optional)</tt> </tt> +<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"><tt class="py-docstring"> @type submethods: str</tt> </tt> +<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-docstring"> @return: list of auth types permissible for the next stage of</tt> </tt> +<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"><tt class="py-docstring"> authentication (normally empty).</tt> </tt> +<a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: list</tt> </tt> +<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"><tt class="py-docstring"> @raise BadAuthenticationType: if public-key authentication isn't</tt> </tt> +<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"><tt class="py-docstring"> allowed by the server for this user</tt> </tt> +<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"><tt class="py-docstring"> @raise AuthenticationException: if the authentication failed</tt> </tt> +<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"><tt class="py-docstring"> @raise SSHException: if there was a network error</tt> </tt> +<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5</tt> </tt> +<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt class="py-comment"># we should never try to authenticate unless we're on a secure link</tt> </tt> +<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-240" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-240', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'No existing session'</tt><tt class="py-op">)</tt> </tt> +<a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-name">my_event</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Event</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-241', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-242', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="paramiko.Transport.auth_interactive" class="py-name" href="#" onclick="return doclink('link-243', 'auth_interactive', 'link-233');">auth_interactive</a></tt><tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">my_event</tt><tt class="py-op">,</tt> <tt class="py-name">submethods</tt><tt class="py-op">)</tt> </tt> +<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-244', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">wait_for_response</tt><tt class="py-op">(</tt><tt class="py-name">my_event</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"> </tt> +<a name="Transport.set_log_channel"></a><div id="Transport.set_log_channel-def"><a name="L1290"></a><tt class="py-lineno">1290</tt> <a class="py-toggle" href="#" id="Transport.set_log_channel-toggle" onclick="return toggle('Transport.set_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_log_channel">set_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.set_log_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_log_channel-expanded"><a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"><tt class="py-docstring"> Set the channel for this transport's logging. The default is</tt> </tt> +<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"><tt class="py-docstring"> C{"paramiko.transport"} but it can be set to anything you want.</tt> </tt> +<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"><tt class="py-docstring"> (See the C{logging} module for more info.) SSH Channels will log</tt> </tt> +<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"><tt class="py-docstring"> to a sub-channel of the one specified.</tt> </tt> +<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"><tt class="py-docstring"> @param name: new channel name for logging</tt> </tt> +<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> +<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.1</tt> </tt> +<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> <tt class="py-op">=</tt> <tt id="link-245" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-245', 'name', 'link-60');">name</a></tt> </tt> +<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-246', 'logger', 'link-108');">logger</a></tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-247', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="paramiko.util.get_logger" class="py-name" href="#" onclick="return doclink('link-248', 'get_logger', 'link-110');">get_logger</a></tt><tt class="py-op">(</tt><tt id="link-249" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-249', 'name', 'link-60');">name</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_log</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-250', 'logger', 'link-108');">logger</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"> </tt> +<a name="Transport.get_log_channel"></a><div id="Transport.get_log_channel-def"><a name="L1306"></a><tt class="py-lineno">1306</tt> <a class="py-toggle" href="#" id="Transport.get_log_channel-toggle" onclick="return toggle('Transport.get_log_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_log_channel">get_log_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_log_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_log_channel-expanded"><a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"><tt class="py-docstring"> Return the channel name used for this transport's logging.</tt> </tt> +<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"><tt class="py-docstring"> @return: channel name.</tt> </tt> +<a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> +<a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.2</tt> </tt> +<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_name</tt> </tt> +</div><a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"> </tt> +<a name="Transport.set_hexdump"></a><div id="Transport.set_hexdump-def"><a name="L1317"></a><tt class="py-lineno">1317</tt> <a class="py-toggle" href="#" id="Transport.set_hexdump-toggle" onclick="return toggle('Transport.set_hexdump');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#set_hexdump">set_hexdump</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">hexdump</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.set_hexdump-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.set_hexdump-expanded"><a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off logging a hex dump of protocol traffic at DEBUG level in</tt> </tt> +<a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"><tt class="py-docstring"> the logs. Normally you would want this off (which is the default),</tt> </tt> +<a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"><tt class="py-docstring"> but if you are debugging something, it may be useful.</tt> </tt> +<a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"><tt class="py-docstring"> @param hexdump: C{True} to log protocol traffix (in hex) to the log;</tt> </tt> +<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"><tt class="py-docstring"> C{False} otherwise.</tt> </tt> +<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"><tt class="py-docstring"> @type hexdump: bool</tt> </tt> +<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name" targets="Method paramiko.Transport.set_hexdump()=paramiko.Transport-class.html#set_hexdump"><a title="paramiko.Transport.set_hexdump" class="py-name" href="#" onclick="return doclink('link-251', 'set_hexdump', 'link-251');">set_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-name">hexdump</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"> </tt> +<a name="Transport.get_hexdump"></a><div id="Transport.get_hexdump-def"><a name="L1329"></a><tt class="py-lineno">1329</tt> <a class="py-toggle" href="#" id="Transport.get_hexdump-toggle" onclick="return toggle('Transport.get_hexdump');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#get_hexdump">get_hexdump</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.get_hexdump-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.get_hexdump-expanded"><a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"><tt class="py-docstring"> Return C{True} if the transport is currently logging hex dumps of</tt> </tt> +<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"><tt class="py-docstring"> protocol traffic.</tt> </tt> +<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"><tt class="py-docstring"> @return: C{True} if hex dumps are being logged</tt> </tt> +<a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: bool</tt> </tt> +<a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1337"></a><tt class="py-lineno">1337</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.4</tt> </tt> +<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name" targets="Method paramiko.Transport.get_hexdump()=paramiko.Transport-class.html#get_hexdump"><a title="paramiko.Transport.get_hexdump" class="py-name" href="#" onclick="return doclink('link-252', 'get_hexdump', 'link-252');">get_hexdump</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"> </tt> +<a name="Transport.use_compression"></a><div id="Transport.use_compression-def"><a name="L1341"></a><tt class="py-lineno">1341</tt> <a class="py-toggle" href="#" id="Transport.use_compression-toggle" onclick="return toggle('Transport.use_compression');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#use_compression">use_compression</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">compress</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.use_compression-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.use_compression-expanded"><a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"><tt class="py-docstring"> Turn on/off compression. This will only have an affect before starting</tt> </tt> +<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"><tt class="py-docstring"> the transport (ie before calling L{connect}, etc). By default,</tt> </tt> +<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"><tt class="py-docstring"> compression is off since it negatively affects interactive sessions.</tt> </tt> +<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"><tt class="py-docstring"> @param compress: C{True} to ask the remote client/server to compress</tt> </tt> +<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"><tt class="py-docstring"> traffic; C{False} to refuse compression</tt> </tt> +<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"><tt class="py-docstring"> @type compress: bool</tt> </tt> +<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"><tt class="py-docstring"> @since: 1.5.2</tt> </tt> +<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-253" class="py-name"><a title="paramiko.compress" class="py-name" href="#" onclick="return doclink('link-253', 'compress', 'link-10');">compress</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-254', '_preferred_compression', 'link-57');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">,</tt> <tt class="py-string">'zlib'</tt><tt class="py-op">,</tt> <tt class="py-string">'none'</tt> <tt class="py-op">)</tt> </tt> +<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-255', '_preferred_compression', 'link-57');">_preferred_compression</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt> </tt> +</div><a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> </tt> +<a name="Transport.getpeername"></a><div id="Transport.getpeername-def"><a name="L1358"></a><tt class="py-lineno">1358</tt> <a class="py-toggle" href="#" id="Transport.getpeername-toggle" onclick="return toggle('Transport.getpeername');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#getpeername">getpeername</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.getpeername-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.getpeername-expanded"><a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"><tt class="py-docstring"> Return the address of the remote side of this Transport, if possible.</tt> </tt> +<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"><tt class="py-docstring"> This is effectively a wrapper around C{'getpeername'} on the underlying</tt> </tt> +<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"><tt class="py-docstring"> socket. If the socket-like object has no C{'getpeername'} method,</tt> </tt> +<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"><tt class="py-docstring"> then C{("unknown", 0)} is returned.</tt> </tt> +<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"><tt class="py-docstring"> @return: the address if the remote host, if known</tt> </tt> +<a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: tuple(str, int)</tt> </tt> +<a name="L1367"></a><tt class="py-lineno">1367</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"> <tt class="py-name">gp</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">,</tt> <tt class="py-string">'getpeername'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> +<a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">gp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1370"></a><tt class="py-lineno">1370</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-string">'unknown'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">gp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"> </tt> +<a name="Transport.stop_thread"></a><div id="Transport.stop_thread-def"><a name="L1373"></a><tt class="py-lineno">1373</tt> <a class="py-toggle" href="#" id="Transport.stop_thread-toggle" onclick="return toggle('Transport.stop_thread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#stop_thread">stop_thread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.stop_thread-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.stop_thread-expanded"><a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -1866,49 +1885,50 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-251', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"> </tt> -<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> </tt> -<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> -<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> </tt> -<a name="Transport._log"></a><div id="Transport._log-def"><a name="L1363"></a><tt class="py-lineno">1363</tt> <a class="py-toggle" href="#" id="Transport._log-toggle" onclick="return toggle('Transport._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._log-expanded"><a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msg</tt><tt class="py-op">:</tt> </tt> -<a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-252', 'logger', 'link-103');">logger</a></tt><tt class="py-op">.</tt><tt id="link-253" class="py-name" targets="Method paramiko.logging22.logger.log()=paramiko.logging22.logger-class.html#log"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-253', 'log', 'link-253');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1367"></a><tt class="py-lineno">1367</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-254', 'logger', 'link-103');">logger</a></tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-255', 'log', 'link-253');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"> </tt> -<a name="Transport._get_modulus_pack"></a><div id="Transport._get_modulus_pack-def"><a name="L1370"></a><tt class="py-lineno">1370</tt> <a class="py-toggle" href="#" id="Transport._get_modulus_pack-toggle" onclick="return toggle('Transport._get_modulus_pack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_modulus_pack">_get_modulus_pack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._get_modulus_pack-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_modulus_pack-expanded"><a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"> <tt class="py-docstring">"used by KexGex to find primes for group exchange"</tt> </tt> -<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-256', '_modulus_pack', 'link-94');">_modulus_pack</a></tt> </tt> -</div><a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"> </tt> -<a name="Transport._next_channel"></a><div id="Transport._next_channel-def"><a name="L1374"></a><tt class="py-lineno">1374</tt> <a class="py-toggle" href="#" id="Transport._next_channel-toggle" onclick="return toggle('Transport._next_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_next_channel">_next_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._next_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._next_channel-expanded"><a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"> <tt class="py-docstring">"you are holding the lock"</tt> </tt> -<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> </tt> -<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-257', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffff</tt> </tt> -<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> </tt> -<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffff</tt> </tt> -<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chanid</tt> </tt> -</div><a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"> </tt> -<a name="Transport._unlink_channel"></a><div id="Transport._unlink_channel-def"><a name="L1383"></a><tt class="py-lineno">1383</tt> <a class="py-toggle" href="#" id="Transport._unlink_channel-toggle" onclick="return toggle('Transport._unlink_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_unlink_channel">_unlink_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._unlink_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._unlink_channel-expanded"><a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"> <tt class="py-docstring">"used by a Channel to remove itself from the active channel list"</tt> </tt> -<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name" targets="Method paramiko.transport.ChannelMap.delete()=paramiko.transport.ChannelMap-class.html#delete"><a title="paramiko.transport.ChannelMap.delete" class="py-name" href="#" onclick="return doclink('link-258', 'delete', 'link-258');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> </tt> -<a name="Transport._send_message"></a><div id="Transport._send_message-def"><a name="L1387"></a><tt class="py-lineno">1387</tt> <a class="py-toggle" href="#" id="Transport._send_message-toggle" onclick="return toggle('Transport._send_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_message">_send_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._send_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_message-expanded"><a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">send_message</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"> </tt> -<a name="Transport._send_user_message"></a><div id="Transport._send_user_message-def"><a name="L1390"></a><tt class="py-lineno">1390</tt> <a class="py-toggle" href="#" id="Transport._send_user_message-toggle" onclick="return toggle('Transport._send_user_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_user_message">_send_user_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._send_user_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_user_message-expanded"><a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1392"></a><tt class="py-lineno">1392</tt> <tt class="py-line"><tt class="py-docstring"> send a message, but block if we're in key negotiation. this is used</tt> </tt> -<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"><tt class="py-docstring"> for user-initiated requests.</tt> </tt> -<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> -<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-259" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-256', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"> </tt> +<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"> </tt> +<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"> <tt class="py-comment">### internals...</tt> </tt> +<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"> </tt> +<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"> </tt> +<a name="Transport._log"></a><div id="Transport._log-def"><a name="L1381"></a><tt class="py-lineno">1381</tt> <a class="py-toggle" href="#" id="Transport._log-toggle" onclick="return toggle('Transport._log');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_log">_log</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._log-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._log-expanded"><a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">m</tt> <tt class="py-keyword">in</tt> <tt class="py-name">msg</tt><tt class="py-op">:</tt> </tt> +<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-257', 'logger', 'link-108');">logger</a></tt><tt class="py-op">.</tt><tt id="link-258" class="py-name" targets="Method paramiko.logging22.logger.log()=paramiko.logging22.logger-class.html#log"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-258', 'log', 'link-258');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="paramiko.logging22.logger" class="py-name" href="#" onclick="return doclink('link-259', 'logger', 'link-108');">logger</a></tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="paramiko.logging22.logger.log" class="py-name" href="#" onclick="return doclink('link-260', 'log', 'link-258');">log</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"> </tt> +<a name="Transport._get_modulus_pack"></a><div id="Transport._get_modulus_pack-def"><a name="L1388"></a><tt class="py-lineno">1388</tt> <a class="py-toggle" href="#" id="Transport._get_modulus_pack-toggle" onclick="return toggle('Transport._get_modulus_pack');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_modulus_pack">_get_modulus_pack</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._get_modulus_pack-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_modulus_pack-expanded"><a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"> <tt class="py-docstring">"used by KexGex to find primes for group exchange"</tt> </tt> +<a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-261', '_modulus_pack', 'link-98');">_modulus_pack</a></tt> </tt> +</div><a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> </tt> +<a name="Transport._next_channel"></a><div id="Transport._next_channel-def"><a name="L1392"></a><tt class="py-lineno">1392</tt> <a class="py-toggle" href="#" id="Transport._next_channel-toggle" onclick="return toggle('Transport._next_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_next_channel">_next_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._next_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._next_channel-expanded"><a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"> <tt class="py-docstring">"you are holding the lock"</tt> </tt> +<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> </tt> +<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-262', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffff</tt> </tt> +<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> </tt> +<a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channel_counter</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffff</tt> </tt> +<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">chanid</tt> </tt> +</div><a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"> </tt> +<a name="Transport._unlink_channel"></a><div id="Transport._unlink_channel-def"><a name="L1401"></a><tt class="py-lineno">1401</tt> <a class="py-toggle" href="#" id="Transport._unlink_channel-toggle" onclick="return toggle('Transport._unlink_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_unlink_channel">_unlink_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">chanid</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._unlink_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._unlink_channel-expanded"><a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"> <tt class="py-docstring">"used by a Channel to remove itself from the active channel list"</tt> </tt> +<a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name" targets="Method paramiko.transport.ChannelMap.delete()=paramiko.transport.ChannelMap-class.html#delete"><a title="paramiko.transport.ChannelMap.delete" class="py-name" href="#" onclick="return doclink('link-263', 'delete', 'link-263');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"> </tt> +<a name="Transport._send_message"></a><div id="Transport._send_message-def"><a name="L1405"></a><tt class="py-lineno">1405</tt> <a class="py-toggle" href="#" id="Transport._send_message-toggle" onclick="return toggle('Transport._send_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_message">_send_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._send_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_message-expanded"><a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">send_message</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"> </tt> +<a name="Transport._send_user_message"></a><div id="Transport._send_user_message-def"><a name="L1408"></a><tt class="py-lineno">1408</tt> <a class="py-toggle" href="#" id="Transport._send_user_message-toggle" onclick="return toggle('Transport._send_user_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_user_message">_send_user_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._send_user_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_user_message-expanded"><a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"><tt class="py-docstring"> send a message, but block if we're in key negotiation. this is used</tt> </tt> +<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"><tt class="py-docstring"> for user-initiated requests.</tt> </tt> +<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"> <tt class="py-name">start</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> +<a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt> +<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-264" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -1929,93 +1949,113 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-259', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Dropping user packet because connection is dead.'</tt><tt class="py-op">)</tt> </tt> -<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1405"></a><tt class="py-lineno">1405</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1408"></a><tt class="py-lineno">1408</tt> <tt class="py-line"> </tt> -<a name="Transport._set_K_H"></a><div id="Transport._set_K_H-def"><a name="L1409"></a><tt class="py-lineno">1409</tt> <a class="py-toggle" href="#" id="Transport._set_K_H-toggle" onclick="return toggle('Transport._set_K_H');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_set_K_H">_set_K_H</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">k</tt><tt class="py-op">,</tt> <tt class="py-param">h</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._set_K_H-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._set_K_H-expanded"><a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"> <tt class="py-docstring">"used by a kex object to set the K (root key) and H (exchange hash)"</tt> </tt> -<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt> </tt> -<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> </tt> -<a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> </tt> -</div><a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"> </tt> -<a name="Transport._expect_packet"></a><div id="Transport._expect_packet-def"><a name="L1416"></a><tt class="py-lineno">1416</tt> <a class="py-toggle" href="#" id="Transport._expect_packet-toggle" onclick="return toggle('Transport._expect_packet');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_expect_packet">_expect_packet</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">ptypes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._expect_packet-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._expect_packet-expanded"><a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"> <tt class="py-docstring">"used by a kex object to register the next packet type it expects to see"</tt> </tt> -<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">ptypes</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"> </tt> -<a name="Transport._verify_key"></a><div id="Transport._verify_key-def"><a name="L1420"></a><tt class="py-lineno">1420</tt> <a class="py-toggle" href="#" id="Transport._verify_key-toggle" onclick="return toggle('Transport._verify_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_verify_key">_verify_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">host_key</tt><tt class="py-op">,</tt> <tt class="py-param">sig</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._verify_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._verify_key-expanded"><a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="paramiko.Transport._key_info" class="py-name" href="#" onclick="return doclink('link-260', '_key_info', 'link-83');">_key_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt id="link-261" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-261', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-262" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-262', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown host key type'</tt><tt class="py-op">)</tt> </tt> -<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name" targets="Method paramiko.DSSKey.verify_ssh_sig()=paramiko.DSSKey-class.html#verify_ssh_sig,Method paramiko.PKey.verify_ssh_sig()=paramiko.PKey-class.html#verify_ssh_sig,Method paramiko.RSAKey.verify_ssh_sig()=paramiko.RSAKey-class.html#verify_ssh_sig"><a title="paramiko.DSSKey.verify_ssh_sig +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-264', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Dropping user packet because connection is dead.'</tt><tt class="py-op">)</tt> </tt> +<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1420"></a><tt class="py-lineno">1420</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt class="py-name">isSet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">start</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_timeout</tt><tt class="py-op">:</tt> </tt> +<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-265" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-265', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Key-exchange timed out waiting for key negotiation'</tt><tt class="py-op">)</tt> </tt> +<a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1426"></a><tt class="py-lineno">1426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> +<a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"> </tt> +<a name="Transport._set_K_H"></a><div id="Transport._set_K_H-def"><a name="L1430"></a><tt class="py-lineno">1430</tt> <a class="py-toggle" href="#" id="Transport._set_K_H-toggle" onclick="return toggle('Transport._set_K_H');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_set_K_H">_set_K_H</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">k</tt><tt class="py-op">,</tt> <tt class="py-param">h</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._set_K_H-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._set_K_H-expanded"><a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"> <tt class="py-docstring">"used by a kex object to set the K (root key) and H (exchange hash)"</tt> </tt> +<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">k</tt> </tt> +<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> </tt> +<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> </tt> +</div><a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> </tt> +<a name="Transport._expect_packet"></a><div id="Transport._expect_packet-def"><a name="L1437"></a><tt class="py-lineno">1437</tt> <a class="py-toggle" href="#" id="Transport._expect_packet-toggle" onclick="return toggle('Transport._expect_packet');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_expect_packet">_expect_packet</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">ptypes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._expect_packet-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._expect_packet-expanded"><a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> <tt class="py-docstring">"used by a kex object to register the next packet type it expects to see"</tt> </tt> +<a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">ptypes</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"> </tt> +<a name="Transport._verify_key"></a><div id="Transport._verify_key-def"><a name="L1441"></a><tt class="py-lineno">1441</tt> <a class="py-toggle" href="#" id="Transport._verify_key-toggle" onclick="return toggle('Transport._verify_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_verify_key">_verify_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">host_key</tt><tt class="py-op">,</tt> <tt class="py-param">sig</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._verify_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._verify_key-expanded"><a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="paramiko.Transport._key_info" class="py-name" href="#" onclick="return doclink('link-266', '_key_info', 'link-87');">_key_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt id="link-267" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-267', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">host_key</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1443"></a><tt class="py-lineno">1443</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-268" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-268', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown host key type'</tt><tt class="py-op">)</tt> </tt> +<a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name" targets="Method paramiko.DSSKey.verify_ssh_sig()=paramiko.DSSKey-class.html#verify_ssh_sig,Method paramiko.PKey.verify_ssh_sig()=paramiko.PKey-class.html#verify_ssh_sig,Method paramiko.RSAKey.verify_ssh_sig()=paramiko.RSAKey-class.html#verify_ssh_sig"><a title="paramiko.DSSKey.verify_ssh_sig paramiko.PKey.verify_ssh_sig -paramiko.RSAKey.verify_ssh_sig" class="py-name" href="#" onclick="return doclink('link-263', 'verify_ssh_sig', 'link-263');">verify_ssh_sig</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">,</tt> <tt id="link-264" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-264', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-265" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-265', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Signature verification (%s) failed. Boo. Robey should debug this.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">)</tt> </tt> -<a name="L1426"></a><tt class="py-lineno">1426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> -</div><a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"> </tt> -<a name="Transport._compute_key"></a><div id="Transport._compute_key-def"><a name="L1428"></a><tt class="py-lineno">1428</tt> <a class="py-toggle" href="#" id="Transport._compute_key-toggle" onclick="return toggle('Transport._compute_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_compute_key">_compute_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._compute_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._compute_key-expanded"><a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"> <tt class="py-docstring">"id is 'A' - 'F' for the various keys used by ssh"</tt> </tt> -<a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-266" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-266', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method paramiko.Message.add_mpint()=paramiko.Message-class.html#add_mpint"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-267', 'add_mpint', 'link-267');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-268', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> -<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-269', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-270', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt><tt class="py-op">)</tt> </tt> -<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">sofar</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-name">nbytes</tt><tt class="py-op">:</tt> </tt> -<a name="L1437"></a><tt class="py-lineno">1437</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-271" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-271', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-272', 'add_mpint', 'link-267');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> -<a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-273', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> -<a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-274', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">sofar</tt><tt class="py-op">)</tt> </tt> -<a name="L1441"></a><tt class="py-lineno">1441</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt> </tt> -<a name="L1443"></a><tt class="py-lineno">1443</tt> <tt class="py-line"> <tt class="py-name">sofar</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt> </tt> -<a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">nbytes</tt><tt class="py-op">]</tt> </tt> -</div><a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> </tt> -<a name="Transport._get_cipher"></a><div id="Transport._get_cipher-def"><a name="L1446"></a><tt class="py-lineno">1446</tt> <a class="py-toggle" href="#" id="Transport._get_cipher-toggle" onclick="return toggle('Transport._get_cipher');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_cipher">_get_cipher</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">iv</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._get_cipher-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_cipher-expanded"><a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-275" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-275', 'name', 'link-56');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-276', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-277" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-277', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown client cipher '</tt> <tt class="py-op">+</tt> <tt id="link-278" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-278', 'name', 'link-56');">name</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-279', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-280" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-280', 'name', 'link-56');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-281', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-282" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-282', 'name', 'link-56');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">iv</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"> </tt> -<a name="Transport._set_x11_handler"></a><div id="Transport._set_x11_handler-def"><a name="L1451"></a><tt class="py-lineno">1451</tt> <a class="py-toggle" href="#" id="Transport._set_x11_handler-toggle" onclick="return toggle('Transport._set_x11_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_set_x11_handler">_set_x11_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._set_x11_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._set_x11_handler-expanded"><a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"> <tt class="py-comment"># only called if a channel has turned on x11 forwarding</tt> </tt> -<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"> <tt class="py-comment"># by default, use the same mechanism as accept()</tt> </tt> -<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">def</tt> <tt class="py-def-name">default_handler</tt><tt class="py-op">(</tt><tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt id="link-283" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-283', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">default_handler</tt> </tt> -<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt> -</div><a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"> </tt> -<a name="Transport._queue_incoming_channel"></a><div id="Transport._queue_incoming_channel-def"><a name="L1461"></a><tt class="py-lineno">1461</tt> <a class="py-toggle" href="#" id="Transport._queue_incoming_channel-toggle" onclick="return toggle('Transport._queue_incoming_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_queue_incoming_channel">_queue_incoming_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._queue_incoming_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._queue_incoming_channel-expanded"><a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-284" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-284', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">notify</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> </tt> -<a name="Transport.run"></a><div id="Transport.run-def"><a name="L1469"></a><tt class="py-lineno">1469</tt> <a class="py-toggle" href="#" id="Transport.run-toggle" onclick="return toggle('Transport.run');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport.run-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.run-expanded"><a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-comment"># (use the exposed "run" method, because if we specify a thread target</tt> </tt> -<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># of a private method, threading.Thread will keep a reference to it</tt> </tt> -<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># indefinitely, creating a GC cycle and not letting Transport ever be</tt> </tt> -<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># GC'd. it's a bug in Thread.)</tt> </tt> -<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"> <tt class="py-comment"># active=True occurs before the thread is launched, to avoid a race</tt> </tt> -<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-285" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-285', '_active_threads', 'link-45');">_active_threads</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-286" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.RSAKey.verify_ssh_sig" class="py-name" href="#" onclick="return doclink('link-269', 'verify_ssh_sig', 'link-269');">verify_ssh_sig</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">,</tt> <tt id="link-270" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-270', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-271" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-271', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Signature verification (%s) failed.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">)</tt> </tt> +<a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt> +</div><a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"> </tt> +<a name="Transport._compute_key"></a><div id="Transport._compute_key-def"><a name="L1449"></a><tt class="py-lineno">1449</tt> <a class="py-toggle" href="#" id="Transport._compute_key-toggle" onclick="return toggle('Transport._compute_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_compute_key">_compute_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._compute_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._compute_key-expanded"><a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"> <tt class="py-docstring">"id is 'A' - 'F' for the various keys used by ssh"</tt> </tt> +<a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-272', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name" targets="Method paramiko.Message.add_mpint()=paramiko.Message-class.html#add_mpint"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-273', 'add_mpint', 'link-273');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> +<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-274', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-275', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> +<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-276', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">session_id</tt><tt class="py-op">)</tt> </tt> +<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-name">sofar</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-277', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">out</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-name">nbytes</tt><tt class="py-op">:</tt> </tt> +<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-278', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="paramiko.Message.add_mpint" class="py-name" href="#" onclick="return doclink('link-279', 'add_mpint', 'link-273');">add_mpint</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt><tt class="py-op">)</tt> </tt> +<a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-280', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">H</tt><tt class="py-op">)</tt> </tt> +<a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-281', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">sofar</tt><tt class="py-op">)</tt> </tt> +<a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">SHA</tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-282', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt> </tt> +<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"> <tt class="py-name">sofar</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt> </tt> +<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">nbytes</tt><tt class="py-op">]</tt> </tt> +</div><a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> </tt> +<a name="Transport._get_cipher"></a><div id="Transport._get_cipher-def"><a name="L1467"></a><tt class="py-lineno">1467</tt> <a class="py-toggle" href="#" id="Transport._get_cipher-toggle" onclick="return toggle('Transport._get_cipher');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_cipher">_get_cipher</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">iv</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._get_cipher-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_cipher-expanded"><a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-283" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-283', 'name', 'link-60');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-284', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1469"></a><tt class="py-lineno">1469</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-285" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-285', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Unknown client cipher '</tt> <tt class="py-op">+</tt> <tt id="link-286" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-286', 'name', 'link-60');">name</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-287" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-287', 'name', 'link-60');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'arcfour128'</tt><tt class="py-op">,</tt> <tt class="py-string">'arcfour256'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"> <tt class="py-comment"># arcfour cipher</tt> </tt> +<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"> <tt class="py-name">cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-288', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-289" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-289', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-290', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"> <tt class="py-comment"># as per RFC 4345, the first 1536 bytes of keystream</tt> </tt> +<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"> <tt class="py-comment"># generated by the cipher MUST be discarded</tt> </tt> +<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"> <tt class="py-name">cipher</tt><tt class="py-op">.</tt><tt class="py-name">encrypt</tt><tt class="py-op">(</tt><tt class="py-string">" "</tt> <tt class="py-op">*</tt> <tt class="py-number">1536</tt><tt class="py-op">)</tt> </tt> +<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cipher</tt> </tt> +<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-291" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-291', 'name', 'link-60');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">"-ctr"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"> <tt class="py-comment"># CTR modes, we need a counter</tt> </tt> +<a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"> <tt class="py-name">counter</tt> <tt class="py-op">=</tt> <tt id="link-292" class="py-name"><a title="paramiko.util.Counter" class="py-name" href="#" onclick="return doclink('link-292', 'Counter', 'link-45');">Counter</a></tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-293', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">nbits</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-294', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-295" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-295', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'block-size'</tt><tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-number">8</tt><tt class="py-op">,</tt> <tt class="py-name">initial_value</tt><tt class="py-op">=</tt><tt id="link-296" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-296', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-297" class="py-name" targets="Function paramiko.util.inflate_long()=paramiko.util-module.html#inflate_long"><a title="paramiko.util.inflate_long" class="py-name" href="#" onclick="return doclink('link-297', 'inflate_long', 'link-297');">inflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">iv</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-298', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-299" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-299', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-300', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-301', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-302" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-302', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">iv</tt><tt class="py-op">,</tt> <tt class="py-name">counter</tt><tt class="py-op">)</tt> </tt> +<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-303', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-304" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-304', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-305', 'new', 'link-277');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-306', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt id="link-307" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-307', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'mode'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">iv</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"> </tt> +<a name="Transport._set_x11_handler"></a><div id="Transport._set_x11_handler-def"><a name="L1484"></a><tt class="py-lineno">1484</tt> <a class="py-toggle" href="#" id="Transport._set_x11_handler-toggle" onclick="return toggle('Transport._set_x11_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_set_x11_handler">_set_x11_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._set_x11_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._set_x11_handler-expanded"><a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"> <tt class="py-comment"># only called if a channel has turned on x11 forwarding</tt> </tt> +<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"> <tt class="py-comment"># by default, use the same mechanism as accept()</tt> </tt> +<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">default_handler</tt><tt class="py-op">(</tt><tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">src_addr</tt><tt class="py-op">,</tt> <tt class="py-param">src_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt id="link-308" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-308', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">default_handler</tt> </tt> +<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt> </tt> +</div><a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> </tt> +<a name="Transport._queue_incoming_channel"></a><div id="Transport._queue_incoming_channel-def"><a name="L1494"></a><tt class="py-lineno">1494</tt> <a class="py-toggle" href="#" id="Transport._queue_incoming_channel-toggle" onclick="return toggle('Transport._queue_incoming_channel');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_queue_incoming_channel">_queue_incoming_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">channel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._queue_incoming_channel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._queue_incoming_channel-expanded"><a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accepts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-309" class="py-name"><a title="paramiko.channel" class="py-name" href="#" onclick="return doclink('link-309', 'channel', 'link-5');">channel</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1498"></a><tt class="py-lineno">1498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">notify</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1500"></a><tt class="py-lineno">1500</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"> </tt> +<a name="Transport.run"></a><div id="Transport.run-def"><a name="L1502"></a><tt class="py-lineno">1502</tt> <a class="py-toggle" href="#" id="Transport.run-toggle" onclick="return toggle('Transport.run');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport.run-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport.run-expanded"><a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"> <tt class="py-comment"># (use the exposed "run" method, because if we specify a thread target</tt> </tt> +<a name="L1504"></a><tt class="py-lineno">1504</tt> <tt class="py-line"> <tt class="py-comment"># of a private method, threading.Thread will keep a reference to it</tt> </tt> +<a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"> <tt class="py-comment"># indefinitely, creating a GC cycle and not letting Transport ever be</tt> </tt> +<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"> <tt class="py-comment"># GC'd. it's a bug in Thread.)</tt> </tt> +<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"> </tt> +<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"> <tt class="py-comment"># active=True occurs before the thread is launched, to avoid a race</tt> </tt> +<a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"> <tt id="link-310" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-310', '_active_threads', 'link-49');">_active_threads</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1510"></a><tt class="py-lineno">1510</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-311" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2036,9 +2076,9 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-286', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'starting thread (server mode): %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-287" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-311', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'starting thread (server mode): %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-312" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2059,12 +2099,12 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-287', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'starting thread (client mode): %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">write_all</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt> <tt class="py-op">+</tt> <tt class="py-string">'\r\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_banner</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-288" class="py-name" targets="Variable paramiko.auth_handler.MSG_KEXINIT=paramiko.auth_handler-module.html#MSG_KEXINIT,Variable paramiko.channel.MSG_KEXINIT=paramiko.channel-module.html#MSG_KEXINIT,Variable paramiko.client.MSG_KEXINIT=paramiko.client-module.html#MSG_KEXINIT,Variable paramiko.common.MSG_KEXINIT=paramiko.common-module.html#MSG_KEXINIT,Variable paramiko.dsskey.MSG_KEXINIT=paramiko.dsskey-module.html#MSG_KEXINIT,Variable paramiko.hostkeys.MSG_KEXINIT=paramiko.hostkeys-module.html#MSG_KEXINIT,Variable paramiko.kex_gex.MSG_KEXINIT=paramiko.kex_gex-module.html#MSG_KEXINIT,Variable paramiko.kex_group1.MSG_KEXINIT=paramiko.kex_group1-module.html#MSG_KEXINIT,Variable paramiko.packet.MSG_KEXINIT=paramiko.packet-module.html#MSG_KEXINIT,Variable paramiko.pkey.MSG_KEXINIT=paramiko.pkey-module.html#MSG_KEXINIT,Variable paramiko.rsakey.MSG_KEXINIT=paramiko.rsakey-module.html#MSG_KEXINIT,Variable paramiko.server.MSG_KEXINIT=paramiko.server-module.html#MSG_KEXINIT,Variable paramiko.sftp.MSG_KEXINIT=paramiko.sftp-module.html#MSG_KEXINIT,Variable paramiko.sftp_attr.MSG_KEXINIT=paramiko.sftp_attr-module.html#MSG_KEXINIT,Variable paramiko.sftp_client.MSG_KEXINIT=paramiko.sftp_client-module.html#MSG_KEXINIT,Variable paramiko.sftp_file.MSG_KEXINIT=paramiko.sftp_file-module.html#MSG_KEXINIT,Variable paramiko.sftp_handle.MSG_KEXINIT=paramiko.sftp_handle-module.html#MSG_KEXINIT,Variable paramiko.sftp_server.MSG_KEXINIT=paramiko.sftp_server-module.html#MSG_KEXINIT,Variable paramiko.sftp_si.MSG_KEXINIT=paramiko.sftp_si-module.html#MSG_KEXINIT,Variable paramiko.transport.MSG_KEXINIT=paramiko.transport-module.html#MSG_KEXINIT,Variable paramiko.util.MSG_KEXINIT=paramiko.util-module.html#MSG_KEXINIT"><a title="paramiko.auth_handler.MSG_KEXINIT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-312', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'starting thread (client mode): %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">write_all</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_version</tt> <tt class="py-op">+</tt> <tt class="py-string">'\r\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_check_banner</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-313" class="py-name" targets="Variable paramiko.auth_handler.MSG_KEXINIT=paramiko.auth_handler-module.html#MSG_KEXINIT,Variable paramiko.channel.MSG_KEXINIT=paramiko.channel-module.html#MSG_KEXINIT,Variable paramiko.client.MSG_KEXINIT=paramiko.client-module.html#MSG_KEXINIT,Variable paramiko.common.MSG_KEXINIT=paramiko.common-module.html#MSG_KEXINIT,Variable paramiko.dsskey.MSG_KEXINIT=paramiko.dsskey-module.html#MSG_KEXINIT,Variable paramiko.hostkeys.MSG_KEXINIT=paramiko.hostkeys-module.html#MSG_KEXINIT,Variable paramiko.kex_gex.MSG_KEXINIT=paramiko.kex_gex-module.html#MSG_KEXINIT,Variable paramiko.kex_group1.MSG_KEXINIT=paramiko.kex_group1-module.html#MSG_KEXINIT,Variable paramiko.packet.MSG_KEXINIT=paramiko.packet-module.html#MSG_KEXINIT,Variable paramiko.pkey.MSG_KEXINIT=paramiko.pkey-module.html#MSG_KEXINIT,Variable paramiko.rsakey.MSG_KEXINIT=paramiko.rsakey-module.html#MSG_KEXINIT,Variable paramiko.server.MSG_KEXINIT=paramiko.server-module.html#MSG_KEXINIT,Variable paramiko.sftp.MSG_KEXINIT=paramiko.sftp-module.html#MSG_KEXINIT,Variable paramiko.sftp_attr.MSG_KEXINIT=paramiko.sftp_attr-module.html#MSG_KEXINIT,Variable paramiko.sftp_client.MSG_KEXINIT=paramiko.sftp_client-module.html#MSG_KEXINIT,Variable paramiko.sftp_file.MSG_KEXINIT=paramiko.sftp_file-module.html#MSG_KEXINIT,Variable paramiko.sftp_handle.MSG_KEXINIT=paramiko.sftp_handle-module.html#MSG_KEXINIT,Variable paramiko.sftp_server.MSG_KEXINIT=paramiko.sftp_server-module.html#MSG_KEXINIT,Variable paramiko.sftp_si.MSG_KEXINIT=paramiko.sftp_si-module.html#MSG_KEXINIT,Variable paramiko.transport.MSG_KEXINIT=paramiko.transport-module.html#MSG_KEXINIT,Variable paramiko.util.MSG_KEXINIT=paramiko.util-module.html#MSG_KEXINIT"><a title="paramiko.auth_handler.MSG_KEXINIT paramiko.channel.MSG_KEXINIT paramiko.client.MSG_KEXINIT paramiko.common.MSG_KEXINIT @@ -2084,16 +2124,16 @@ paramiko.sftp_handle.MSG_KEXINIT paramiko.sftp_server.MSG_KEXINIT paramiko.sftp_si.MSG_KEXINIT paramiko.transport.MSG_KEXINIT -paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-288', 'MSG_KEXINIT', 'link-288');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"> </tt> -<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt><tt class="py-op">:</tt> </tt> -<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"> <tt class="py-name">ptype</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">read_message</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-289" class="py-name"><a title="paramiko.packet.NeedRekeyException" class="py-name" href="#" onclick="return doclink('link-289', 'NeedRekeyException', 'link-27');">NeedRekeyException</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-290" class="py-name"><a title="paramiko.auth_handler.MSG_IGNORE +paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-313', 'MSG_KEXINIT', 'link-313');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> </tt> +<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt><tt class="py-op">:</tt> </tt> +<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> <tt class="py-name">ptype</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">read_message</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1525"></a><tt class="py-lineno">1525</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-314" class="py-name"><a title="paramiko.packet.NeedRekeyException" class="py-name" href="#" onclick="return doclink('link-314', 'NeedRekeyException', 'link-27');">NeedRekeyException</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-315" class="py-name"><a title="paramiko.auth_handler.MSG_IGNORE paramiko.channel.MSG_IGNORE paramiko.client.MSG_IGNORE paramiko.common.MSG_IGNORE @@ -2113,9 +2153,9 @@ paramiko.sftp_handle.MSG_IGNORE paramiko.sftp_server.MSG_IGNORE paramiko.sftp_si.MSG_IGNORE paramiko.transport.MSG_IGNORE -paramiko.util.MSG_IGNORE" class="py-name" href="#" onclick="return doclink('link-290', 'MSG_IGNORE', 'link-169');">MSG_IGNORE</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-291" class="py-name" targets="Variable paramiko.auth_handler.MSG_DISCONNECT=paramiko.auth_handler-module.html#MSG_DISCONNECT,Variable paramiko.channel.MSG_DISCONNECT=paramiko.channel-module.html#MSG_DISCONNECT,Variable paramiko.client.MSG_DISCONNECT=paramiko.client-module.html#MSG_DISCONNECT,Variable paramiko.common.MSG_DISCONNECT=paramiko.common-module.html#MSG_DISCONNECT,Variable paramiko.dsskey.MSG_DISCONNECT=paramiko.dsskey-module.html#MSG_DISCONNECT,Variable paramiko.hostkeys.MSG_DISCONNECT=paramiko.hostkeys-module.html#MSG_DISCONNECT,Variable paramiko.kex_gex.MSG_DISCONNECT=paramiko.kex_gex-module.html#MSG_DISCONNECT,Variable paramiko.kex_group1.MSG_DISCONNECT=paramiko.kex_group1-module.html#MSG_DISCONNECT,Variable paramiko.packet.MSG_DISCONNECT=paramiko.packet-module.html#MSG_DISCONNECT,Variable paramiko.pkey.MSG_DISCONNECT=paramiko.pkey-module.html#MSG_DISCONNECT,Variable paramiko.rsakey.MSG_DISCONNECT=paramiko.rsakey-module.html#MSG_DISCONNECT,Variable paramiko.server.MSG_DISCONNECT=paramiko.server-module.html#MSG_DISCONNECT,Variable paramiko.sftp.MSG_DISCONNECT=paramiko.sftp-module.html#MSG_DISCONNECT,Variable paramiko.sftp_attr.MSG_DISCONNECT=paramiko.sftp_attr-module.html#MSG_DISCONNECT,Variable paramiko.sftp_client.MSG_DISCONNECT=paramiko.sftp_client-module.html#MSG_DISCONNECT,Variable paramiko.sftp_file.MSG_DISCONNECT=paramiko.sftp_file-module.html#MSG_DISCONNECT,Variable paramiko.sftp_handle.MSG_DISCONNECT=paramiko.sftp_handle-module.html#MSG_DISCONNECT,Variable paramiko.sftp_server.MSG_DISCONNECT=paramiko.sftp_server-module.html#MSG_DISCONNECT,Variable paramiko.sftp_si.MSG_DISCONNECT=paramiko.sftp_si-module.html#MSG_DISCONNECT,Variable paramiko.transport.MSG_DISCONNECT=paramiko.transport-module.html#MSG_DISCONNECT,Variable paramiko.util.MSG_DISCONNECT=paramiko.util-module.html#MSG_DISCONNECT"><a title="paramiko.auth_handler.MSG_DISCONNECT +paramiko.util.MSG_IGNORE" class="py-name" href="#" onclick="return doclink('link-315', 'MSG_IGNORE', 'link-174');">MSG_IGNORE</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-316" class="py-name" targets="Variable paramiko.auth_handler.MSG_DISCONNECT=paramiko.auth_handler-module.html#MSG_DISCONNECT,Variable paramiko.channel.MSG_DISCONNECT=paramiko.channel-module.html#MSG_DISCONNECT,Variable paramiko.client.MSG_DISCONNECT=paramiko.client-module.html#MSG_DISCONNECT,Variable paramiko.common.MSG_DISCONNECT=paramiko.common-module.html#MSG_DISCONNECT,Variable paramiko.dsskey.MSG_DISCONNECT=paramiko.dsskey-module.html#MSG_DISCONNECT,Variable paramiko.hostkeys.MSG_DISCONNECT=paramiko.hostkeys-module.html#MSG_DISCONNECT,Variable paramiko.kex_gex.MSG_DISCONNECT=paramiko.kex_gex-module.html#MSG_DISCONNECT,Variable paramiko.kex_group1.MSG_DISCONNECT=paramiko.kex_group1-module.html#MSG_DISCONNECT,Variable paramiko.packet.MSG_DISCONNECT=paramiko.packet-module.html#MSG_DISCONNECT,Variable paramiko.pkey.MSG_DISCONNECT=paramiko.pkey-module.html#MSG_DISCONNECT,Variable paramiko.rsakey.MSG_DISCONNECT=paramiko.rsakey-module.html#MSG_DISCONNECT,Variable paramiko.server.MSG_DISCONNECT=paramiko.server-module.html#MSG_DISCONNECT,Variable paramiko.sftp.MSG_DISCONNECT=paramiko.sftp-module.html#MSG_DISCONNECT,Variable paramiko.sftp_attr.MSG_DISCONNECT=paramiko.sftp_attr-module.html#MSG_DISCONNECT,Variable paramiko.sftp_client.MSG_DISCONNECT=paramiko.sftp_client-module.html#MSG_DISCONNECT,Variable paramiko.sftp_file.MSG_DISCONNECT=paramiko.sftp_file-module.html#MSG_DISCONNECT,Variable paramiko.sftp_handle.MSG_DISCONNECT=paramiko.sftp_handle-module.html#MSG_DISCONNECT,Variable paramiko.sftp_server.MSG_DISCONNECT=paramiko.sftp_server-module.html#MSG_DISCONNECT,Variable paramiko.sftp_si.MSG_DISCONNECT=paramiko.sftp_si-module.html#MSG_DISCONNECT,Variable paramiko.transport.MSG_DISCONNECT=paramiko.transport-module.html#MSG_DISCONNECT,Variable paramiko.util.MSG_DISCONNECT=paramiko.util-module.html#MSG_DISCONNECT"><a title="paramiko.auth_handler.MSG_DISCONNECT paramiko.channel.MSG_DISCONNECT paramiko.client.MSG_DISCONNECT paramiko.common.MSG_DISCONNECT @@ -2135,10 +2175,10 @@ paramiko.sftp_handle.MSG_DISCONNECT paramiko.sftp_server.MSG_DISCONNECT paramiko.sftp_si.MSG_DISCONNECT paramiko.transport.MSG_DISCONNECT -paramiko.util.MSG_DISCONNECT" class="py-name" href="#" onclick="return doclink('link-291', 'MSG_DISCONNECT', 'link-291');">MSG_DISCONNECT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_disconnect</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1498"></a><tt class="py-lineno">1498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="paramiko.Agent.close +paramiko.util.MSG_DISCONNECT" class="py-name" href="#" onclick="return doclink('link-316', 'MSG_DISCONNECT', 'link-316');">MSG_DISCONNECT</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1530"></a><tt class="py-lineno">1530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_disconnect</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1531"></a><tt class="py-lineno">1531</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -2149,9 +2189,9 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-292', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1500"></a><tt class="py-lineno">1500</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-293" class="py-name" targets="Variable paramiko.auth_handler.MSG_DEBUG=paramiko.auth_handler-module.html#MSG_DEBUG,Variable paramiko.channel.MSG_DEBUG=paramiko.channel-module.html#MSG_DEBUG,Variable paramiko.client.MSG_DEBUG=paramiko.client-module.html#MSG_DEBUG,Variable paramiko.common.MSG_DEBUG=paramiko.common-module.html#MSG_DEBUG,Variable paramiko.dsskey.MSG_DEBUG=paramiko.dsskey-module.html#MSG_DEBUG,Variable paramiko.hostkeys.MSG_DEBUG=paramiko.hostkeys-module.html#MSG_DEBUG,Variable paramiko.kex_gex.MSG_DEBUG=paramiko.kex_gex-module.html#MSG_DEBUG,Variable paramiko.kex_group1.MSG_DEBUG=paramiko.kex_group1-module.html#MSG_DEBUG,Variable paramiko.packet.MSG_DEBUG=paramiko.packet-module.html#MSG_DEBUG,Variable paramiko.pkey.MSG_DEBUG=paramiko.pkey-module.html#MSG_DEBUG,Variable paramiko.rsakey.MSG_DEBUG=paramiko.rsakey-module.html#MSG_DEBUG,Variable paramiko.server.MSG_DEBUG=paramiko.server-module.html#MSG_DEBUG,Variable paramiko.sftp.MSG_DEBUG=paramiko.sftp-module.html#MSG_DEBUG,Variable paramiko.sftp_attr.MSG_DEBUG=paramiko.sftp_attr-module.html#MSG_DEBUG,Variable paramiko.sftp_client.MSG_DEBUG=paramiko.sftp_client-module.html#MSG_DEBUG,Variable paramiko.sftp_file.MSG_DEBUG=paramiko.sftp_file-module.html#MSG_DEBUG,Variable paramiko.sftp_handle.MSG_DEBUG=paramiko.sftp_handle-module.html#MSG_DEBUG,Variable paramiko.sftp_server.MSG_DEBUG=paramiko.sftp_server-module.html#MSG_DEBUG,Variable paramiko.sftp_si.MSG_DEBUG=paramiko.sftp_si-module.html#MSG_DEBUG,Variable paramiko.transport.MSG_DEBUG=paramiko.transport-module.html#MSG_DEBUG,Variable paramiko.util.MSG_DEBUG=paramiko.util-module.html#MSG_DEBUG"><a title="paramiko.auth_handler.MSG_DEBUG +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-317', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-op">==</tt> <tt id="link-318" class="py-name" targets="Variable paramiko.auth_handler.MSG_DEBUG=paramiko.auth_handler-module.html#MSG_DEBUG,Variable paramiko.channel.MSG_DEBUG=paramiko.channel-module.html#MSG_DEBUG,Variable paramiko.client.MSG_DEBUG=paramiko.client-module.html#MSG_DEBUG,Variable paramiko.common.MSG_DEBUG=paramiko.common-module.html#MSG_DEBUG,Variable paramiko.dsskey.MSG_DEBUG=paramiko.dsskey-module.html#MSG_DEBUG,Variable paramiko.hostkeys.MSG_DEBUG=paramiko.hostkeys-module.html#MSG_DEBUG,Variable paramiko.kex_gex.MSG_DEBUG=paramiko.kex_gex-module.html#MSG_DEBUG,Variable paramiko.kex_group1.MSG_DEBUG=paramiko.kex_group1-module.html#MSG_DEBUG,Variable paramiko.packet.MSG_DEBUG=paramiko.packet-module.html#MSG_DEBUG,Variable paramiko.pkey.MSG_DEBUG=paramiko.pkey-module.html#MSG_DEBUG,Variable paramiko.rsakey.MSG_DEBUG=paramiko.rsakey-module.html#MSG_DEBUG,Variable paramiko.server.MSG_DEBUG=paramiko.server-module.html#MSG_DEBUG,Variable paramiko.sftp.MSG_DEBUG=paramiko.sftp-module.html#MSG_DEBUG,Variable paramiko.sftp_attr.MSG_DEBUG=paramiko.sftp_attr-module.html#MSG_DEBUG,Variable paramiko.sftp_client.MSG_DEBUG=paramiko.sftp_client-module.html#MSG_DEBUG,Variable paramiko.sftp_file.MSG_DEBUG=paramiko.sftp_file-module.html#MSG_DEBUG,Variable paramiko.sftp_handle.MSG_DEBUG=paramiko.sftp_handle-module.html#MSG_DEBUG,Variable paramiko.sftp_server.MSG_DEBUG=paramiko.sftp_server-module.html#MSG_DEBUG,Variable paramiko.sftp_si.MSG_DEBUG=paramiko.sftp_si-module.html#MSG_DEBUG,Variable paramiko.transport.MSG_DEBUG=paramiko.transport-module.html#MSG_DEBUG,Variable paramiko.util.MSG_DEBUG=paramiko.util-module.html#MSG_DEBUG"><a title="paramiko.auth_handler.MSG_DEBUG paramiko.channel.MSG_DEBUG paramiko.client.MSG_DEBUG paramiko.common.MSG_DEBUG @@ -2171,28 +2211,28 @@ paramiko.sftp_handle.MSG_DEBUG paramiko.sftp_server.MSG_DEBUG paramiko.sftp_si.MSG_DEBUG paramiko.transport.MSG_DEBUG -paramiko.util.MSG_DEBUG" class="py-name" href="#" onclick="return doclink('link-293', 'MSG_DEBUG', 'link-293');">MSG_DEBUG</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1502"></a><tt class="py-lineno">1502</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_debug</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L1504"></a><tt class="py-lineno">1504</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">:</tt> </tt> -<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-294" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-294', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expecting packet from %r, got %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">,</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-op">>=</tt> <tt class="py-number">30</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-op"><=</tt> <tt class="py-number">39</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name" targets="Method paramiko.kex_gex.KexGex.parse_next()=paramiko.kex_gex.KexGex-class.html#parse_next,Method paramiko.kex_group1.KexGroup1.parse_next()=paramiko.kex_group1.KexGroup1-class.html#parse_next"><a title="paramiko.kex_gex.KexGex.parse_next -paramiko.kex_group1.KexGroup1.parse_next" class="py-name" href="#" onclick="return doclink('link-295', 'parse_next', 'link-295');">parse_next</a></tt><tt class="py-op">(</tt><tt class="py-name">ptype</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1510"></a><tt class="py-lineno">1510</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"> </tt> -<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name" targets="Variable paramiko.Transport._handler_table=paramiko.Transport-class.html#_handler_table"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-296', '_handler_table', 'link-296');">_handler_table</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-297', '_handler_table', 'link-296');">_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name" targets="Variable paramiko.Transport._channel_handler_table=paramiko.Transport-class.html#_channel_handler_table"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-298', '_channel_handler_table', 'link-298');">_channel_handler_table</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-299', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-300', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-301', '_channel_handler_table', 'link-298');">_channel_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">:</tt> </tt> -<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-302" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_DEBUG" class="py-name" href="#" onclick="return doclink('link-318', 'MSG_DEBUG', 'link-318');">MSG_DEBUG</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_debug</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1538"></a><tt class="py-lineno">1538</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">:</tt> </tt> +<a name="L1539"></a><tt class="py-lineno">1539</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-319" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-319', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Expecting packet from %r, got %d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt><tt class="py-op">,</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1540"></a><tt class="py-lineno">1540</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1541"></a><tt class="py-lineno">1541</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-op">>=</tt> <tt class="py-number">30</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-op"><=</tt> <tt class="py-number">39</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1542"></a><tt class="py-lineno">1542</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name" targets="Method paramiko.kex_gex.KexGex.parse_next()=paramiko.kex_gex.KexGex-class.html#parse_next,Method paramiko.kex_group1.KexGroup1.parse_next()=paramiko.kex_group1.KexGroup1-class.html#parse_next"><a title="paramiko.kex_gex.KexGex.parse_next +paramiko.kex_group1.KexGroup1.parse_next" class="py-name" href="#" onclick="return doclink('link-320', 'parse_next', 'link-320');">parse_next</a></tt><tt class="py-op">(</tt><tt class="py-name">ptype</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1543"></a><tt class="py-lineno">1543</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> +<a name="L1544"></a><tt class="py-lineno">1544</tt> <tt class="py-line"> </tt> +<a name="L1545"></a><tt class="py-lineno">1545</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name" targets="Variable paramiko.Transport._handler_table=paramiko.Transport-class.html#_handler_table"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-321', '_handler_table', 'link-321');">_handler_table</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1546"></a><tt class="py-lineno">1546</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-322', '_handler_table', 'link-321');">_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1547"></a><tt class="py-lineno">1547</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name" targets="Variable paramiko.Transport._channel_handler_table=paramiko.Transport-class.html#_channel_handler_table"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-323', '_channel_handler_table', 'link-323');">_channel_handler_table</a></tt><tt class="py-op">:</tt> </tt> +<a name="L1548"></a><tt class="py-lineno">1548</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-324', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1549"></a><tt class="py-lineno">1549</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-325', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1550"></a><tt class="py-lineno">1550</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1551"></a><tt class="py-lineno">1551</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-326', '_channel_handler_table', 'link-323');">_channel_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1552"></a><tt class="py-lineno">1552</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">:</tt> </tt> +<a name="L1553"></a><tt class="py-lineno">1553</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-327" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2213,9 +2253,9 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-302', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Ignoring message for dead channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-303" class="py-name" targets="Variable paramiko.auth_handler.ERROR=paramiko.auth_handler-module.html#ERROR,Variable paramiko.channel.ERROR=paramiko.channel-module.html#ERROR,Variable paramiko.client.ERROR=paramiko.client-module.html#ERROR,Variable paramiko.common.ERROR=paramiko.common-module.html#ERROR,Variable paramiko.dsskey.ERROR=paramiko.dsskey-module.html#ERROR,Variable paramiko.hostkeys.ERROR=paramiko.hostkeys-module.html#ERROR,Variable paramiko.kex_gex.ERROR=paramiko.kex_gex-module.html#ERROR,Variable paramiko.kex_group1.ERROR=paramiko.kex_group1-module.html#ERROR,Variable paramiko.logging22.ERROR=paramiko.logging22-module.html#ERROR,Variable paramiko.packet.ERROR=paramiko.packet-module.html#ERROR,Variable paramiko.pkey.ERROR=paramiko.pkey-module.html#ERROR,Variable paramiko.rsakey.ERROR=paramiko.rsakey-module.html#ERROR,Variable paramiko.server.ERROR=paramiko.server-module.html#ERROR,Variable paramiko.sftp.ERROR=paramiko.sftp-module.html#ERROR,Variable paramiko.sftp_attr.ERROR=paramiko.sftp_attr-module.html#ERROR,Variable paramiko.sftp_client.ERROR=paramiko.sftp_client-module.html#ERROR,Variable paramiko.sftp_file.ERROR=paramiko.sftp_file-module.html#ERROR,Variable paramiko.sftp_handle.ERROR=paramiko.sftp_handle-module.html#ERROR,Variable paramiko.sftp_server.ERROR=paramiko.sftp_server-module.html#ERROR,Variable paramiko.sftp_si.ERROR=paramiko.sftp_si-module.html#ERROR,Variable paramiko.transport.ERROR=paramiko.transport-module.html#ERROR,Variable paramiko.util.ERROR=paramiko.util-module.html#ERROR"><a title="paramiko.auth_handler.ERROR +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-327', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Ignoring message for dead channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1554"></a><tt class="py-lineno">1554</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1555"></a><tt class="py-lineno">1555</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-328" class="py-name" targets="Variable paramiko.auth_handler.ERROR=paramiko.auth_handler-module.html#ERROR,Variable paramiko.channel.ERROR=paramiko.channel-module.html#ERROR,Variable paramiko.client.ERROR=paramiko.client-module.html#ERROR,Variable paramiko.common.ERROR=paramiko.common-module.html#ERROR,Variable paramiko.dsskey.ERROR=paramiko.dsskey-module.html#ERROR,Variable paramiko.hostkeys.ERROR=paramiko.hostkeys-module.html#ERROR,Variable paramiko.kex_gex.ERROR=paramiko.kex_gex-module.html#ERROR,Variable paramiko.kex_group1.ERROR=paramiko.kex_group1-module.html#ERROR,Variable paramiko.logging22.ERROR=paramiko.logging22-module.html#ERROR,Variable paramiko.packet.ERROR=paramiko.packet-module.html#ERROR,Variable paramiko.pkey.ERROR=paramiko.pkey-module.html#ERROR,Variable paramiko.rsakey.ERROR=paramiko.rsakey-module.html#ERROR,Variable paramiko.server.ERROR=paramiko.server-module.html#ERROR,Variable paramiko.sftp.ERROR=paramiko.sftp-module.html#ERROR,Variable paramiko.sftp_attr.ERROR=paramiko.sftp_attr-module.html#ERROR,Variable paramiko.sftp_client.ERROR=paramiko.sftp_client-module.html#ERROR,Variable paramiko.sftp_file.ERROR=paramiko.sftp_file-module.html#ERROR,Variable paramiko.sftp_handle.ERROR=paramiko.sftp_handle-module.html#ERROR,Variable paramiko.sftp_server.ERROR=paramiko.sftp_server-module.html#ERROR,Variable paramiko.sftp_si.ERROR=paramiko.sftp_si-module.html#ERROR,Variable paramiko.transport.ERROR=paramiko.transport-module.html#ERROR,Variable paramiko.util.ERROR=paramiko.util-module.html#ERROR"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2236,9 +2276,9 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-303', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Channel request for unknown channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="paramiko.Agent.close +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-328', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Channel request for unknown channel %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1556"></a><tt class="py-lineno">1556</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1557"></a><tt class="py-lineno">1557</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -2249,11 +2289,11 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-304', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1525"></a><tt class="py-lineno">1525</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-305', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-306', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-307', '_handler_table', 'link-296');">_handler_table</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-308', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-309', '_handler_table', 'link-296');">_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-310', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-311" class="py-name" targets="Variable paramiko.auth_handler.WARNING=paramiko.auth_handler-module.html#WARNING,Variable paramiko.channel.WARNING=paramiko.channel-module.html#WARNING,Variable paramiko.client.WARNING=paramiko.client-module.html#WARNING,Variable paramiko.common.WARNING=paramiko.common-module.html#WARNING,Variable paramiko.dsskey.WARNING=paramiko.dsskey-module.html#WARNING,Variable paramiko.hostkeys.WARNING=paramiko.hostkeys-module.html#WARNING,Variable paramiko.kex_gex.WARNING=paramiko.kex_gex-module.html#WARNING,Variable paramiko.kex_group1.WARNING=paramiko.kex_group1-module.html#WARNING,Variable paramiko.logging22.WARNING=paramiko.logging22-module.html#WARNING,Variable paramiko.packet.WARNING=paramiko.packet-module.html#WARNING,Variable paramiko.pkey.WARNING=paramiko.pkey-module.html#WARNING,Variable paramiko.rsakey.WARNING=paramiko.rsakey-module.html#WARNING,Variable paramiko.server.WARNING=paramiko.server-module.html#WARNING,Variable paramiko.sftp.WARNING=paramiko.sftp-module.html#WARNING,Variable paramiko.sftp_attr.WARNING=paramiko.sftp_attr-module.html#WARNING,Variable paramiko.sftp_client.WARNING=paramiko.sftp_client-module.html#WARNING,Variable paramiko.sftp_file.WARNING=paramiko.sftp_file-module.html#WARNING,Variable paramiko.sftp_handle.WARNING=paramiko.sftp_handle-module.html#WARNING,Variable paramiko.sftp_server.WARNING=paramiko.sftp_server-module.html#WARNING,Variable paramiko.sftp_si.WARNING=paramiko.sftp_si-module.html#WARNING,Variable paramiko.transport.WARNING=paramiko.transport-module.html#WARNING,Variable paramiko.util.WARNING=paramiko.util-module.html#WARNING"><a title="paramiko.auth_handler.WARNING +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-329', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1558"></a><tt class="py-lineno">1558</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-330', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ptype</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-331', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-332" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-332', '_handler_table', 'link-321');">_handler_table</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1559"></a><tt class="py-lineno">1559</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-333', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-334', '_handler_table', 'link-321');">_handler_table</a></tt><tt class="py-op">[</tt><tt class="py-name">ptype</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-335" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-335', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1560"></a><tt class="py-lineno">1560</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1561"></a><tt class="py-lineno">1561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-336" class="py-name" targets="Variable paramiko.auth_handler.WARNING=paramiko.auth_handler-module.html#WARNING,Variable paramiko.channel.WARNING=paramiko.channel-module.html#WARNING,Variable paramiko.client.WARNING=paramiko.client-module.html#WARNING,Variable paramiko.common.WARNING=paramiko.common-module.html#WARNING,Variable paramiko.dsskey.WARNING=paramiko.dsskey-module.html#WARNING,Variable paramiko.hostkeys.WARNING=paramiko.hostkeys-module.html#WARNING,Variable paramiko.kex_gex.WARNING=paramiko.kex_gex-module.html#WARNING,Variable paramiko.kex_group1.WARNING=paramiko.kex_group1-module.html#WARNING,Variable paramiko.logging22.WARNING=paramiko.logging22-module.html#WARNING,Variable paramiko.packet.WARNING=paramiko.packet-module.html#WARNING,Variable paramiko.pkey.WARNING=paramiko.pkey-module.html#WARNING,Variable paramiko.rsakey.WARNING=paramiko.rsakey-module.html#WARNING,Variable paramiko.server.WARNING=paramiko.server-module.html#WARNING,Variable paramiko.sftp.WARNING=paramiko.sftp-module.html#WARNING,Variable paramiko.sftp_attr.WARNING=paramiko.sftp_attr-module.html#WARNING,Variable paramiko.sftp_client.WARNING=paramiko.sftp_client-module.html#WARNING,Variable paramiko.sftp_file.WARNING=paramiko.sftp_file-module.html#WARNING,Variable paramiko.sftp_handle.WARNING=paramiko.sftp_handle-module.html#WARNING,Variable paramiko.sftp_server.WARNING=paramiko.sftp_server-module.html#WARNING,Variable paramiko.sftp_si.WARNING=paramiko.sftp_si-module.html#WARNING,Variable paramiko.transport.WARNING=paramiko.transport-module.html#WARNING,Variable paramiko.util.WARNING=paramiko.util-module.html#WARNING"><a title="paramiko.auth_handler.WARNING paramiko.channel.WARNING paramiko.client.WARNING paramiko.common.WARNING @@ -2274,9 +2314,9 @@ paramiko.sftp_handle.WARNING paramiko.sftp_server.WARNING paramiko.sftp_si.WARNING paramiko.transport.WARNING -paramiko.util.WARNING" class="py-name" href="#" onclick="return doclink('link-311', 'WARNING', 'link-311');">WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Oops, unhandled type %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt> </tt> -<a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-312" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-312', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1530"></a><tt class="py-lineno">1530</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-313', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-314" class="py-name" targets="Variable paramiko.auth_handler.MSG_UNIMPLEMENTED=paramiko.auth_handler-module.html#MSG_UNIMPLEMENTED,Variable paramiko.channel.MSG_UNIMPLEMENTED=paramiko.channel-module.html#MSG_UNIMPLEMENTED,Variable paramiko.client.MSG_UNIMPLEMENTED=paramiko.client-module.html#MSG_UNIMPLEMENTED,Variable paramiko.common.MSG_UNIMPLEMENTED=paramiko.common-module.html#MSG_UNIMPLEMENTED,Variable paramiko.dsskey.MSG_UNIMPLEMENTED=paramiko.dsskey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.hostkeys.MSG_UNIMPLEMENTED=paramiko.hostkeys-module.html#MSG_UNIMPLEMENTED,Variable paramiko.kex_gex.MSG_UNIMPLEMENTED=paramiko.kex_gex-module.html#MSG_UNIMPLEMENTED,Variable paramiko.kex_group1.MSG_UNIMPLEMENTED=paramiko.kex_group1-module.html#MSG_UNIMPLEMENTED,Variable paramiko.packet.MSG_UNIMPLEMENTED=paramiko.packet-module.html#MSG_UNIMPLEMENTED,Variable paramiko.pkey.MSG_UNIMPLEMENTED=paramiko.pkey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.rsakey.MSG_UNIMPLEMENTED=paramiko.rsakey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.server.MSG_UNIMPLEMENTED=paramiko.server-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp.MSG_UNIMPLEMENTED=paramiko.sftp-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_attr.MSG_UNIMPLEMENTED=paramiko.sftp_attr-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_client.MSG_UNIMPLEMENTED=paramiko.sftp_client-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_file.MSG_UNIMPLEMENTED=paramiko.sftp_file-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_handle.MSG_UNIMPLEMENTED=paramiko.sftp_handle-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_server.MSG_UNIMPLEMENTED=paramiko.sftp_server-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_si.MSG_UNIMPLEMENTED=paramiko.sftp_si-module.html#MSG_UNIMPLEMENTED,Variable paramiko.transport.MSG_UNIMPLEMENTED=paramiko.transport-module.html#MSG_UNIMPLEMENTED,Variable paramiko.util.MSG_UNIMPLEMENTED=paramiko.util-module.html#MSG_UNIMPLEMENTED"><a title="paramiko.auth_handler.MSG_UNIMPLEMENTED +paramiko.util.WARNING" class="py-name" href="#" onclick="return doclink('link-336', 'WARNING', 'link-336');">WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Oops, unhandled type %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">ptype</tt><tt class="py-op">)</tt> </tt> +<a name="L1562"></a><tt class="py-lineno">1562</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-337" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-337', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1563"></a><tt class="py-lineno">1563</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-338', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-339" class="py-name" targets="Variable paramiko.auth_handler.MSG_UNIMPLEMENTED=paramiko.auth_handler-module.html#MSG_UNIMPLEMENTED,Variable paramiko.channel.MSG_UNIMPLEMENTED=paramiko.channel-module.html#MSG_UNIMPLEMENTED,Variable paramiko.client.MSG_UNIMPLEMENTED=paramiko.client-module.html#MSG_UNIMPLEMENTED,Variable paramiko.common.MSG_UNIMPLEMENTED=paramiko.common-module.html#MSG_UNIMPLEMENTED,Variable paramiko.dsskey.MSG_UNIMPLEMENTED=paramiko.dsskey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.hostkeys.MSG_UNIMPLEMENTED=paramiko.hostkeys-module.html#MSG_UNIMPLEMENTED,Variable paramiko.kex_gex.MSG_UNIMPLEMENTED=paramiko.kex_gex-module.html#MSG_UNIMPLEMENTED,Variable paramiko.kex_group1.MSG_UNIMPLEMENTED=paramiko.kex_group1-module.html#MSG_UNIMPLEMENTED,Variable paramiko.packet.MSG_UNIMPLEMENTED=paramiko.packet-module.html#MSG_UNIMPLEMENTED,Variable paramiko.pkey.MSG_UNIMPLEMENTED=paramiko.pkey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.rsakey.MSG_UNIMPLEMENTED=paramiko.rsakey-module.html#MSG_UNIMPLEMENTED,Variable paramiko.server.MSG_UNIMPLEMENTED=paramiko.server-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp.MSG_UNIMPLEMENTED=paramiko.sftp-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_attr.MSG_UNIMPLEMENTED=paramiko.sftp_attr-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_client.MSG_UNIMPLEMENTED=paramiko.sftp_client-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_file.MSG_UNIMPLEMENTED=paramiko.sftp_file-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_handle.MSG_UNIMPLEMENTED=paramiko.sftp_handle-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_server.MSG_UNIMPLEMENTED=paramiko.sftp_server-module.html#MSG_UNIMPLEMENTED,Variable paramiko.sftp_si.MSG_UNIMPLEMENTED=paramiko.sftp_si-module.html#MSG_UNIMPLEMENTED,Variable paramiko.transport.MSG_UNIMPLEMENTED=paramiko.transport-module.html#MSG_UNIMPLEMENTED,Variable paramiko.util.MSG_UNIMPLEMENTED=paramiko.util-module.html#MSG_UNIMPLEMENTED"><a title="paramiko.auth_handler.MSG_UNIMPLEMENTED paramiko.channel.MSG_UNIMPLEMENTED paramiko.client.MSG_UNIMPLEMENTED paramiko.common.MSG_UNIMPLEMENTED @@ -2296,11 +2336,11 @@ paramiko.sftp_handle.MSG_UNIMPLEMENTED paramiko.sftp_server.MSG_UNIMPLEMENTED paramiko.sftp_si.MSG_UNIMPLEMENTED paramiko.transport.MSG_UNIMPLEMENTED -paramiko.util.MSG_UNIMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-314', 'MSG_UNIMPLEMENTED', 'link-314');">MSG_UNIMPLEMENTED</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1531"></a><tt class="py-lineno">1531</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-315', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">seqno</tt><tt class="py-op">)</tt> </tt> -<a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-316" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-316', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-317" class="py-name"><a title="paramiko.auth_handler.ERROR +paramiko.util.MSG_UNIMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-339', 'MSG_UNIMPLEMENTED', 'link-339');">MSG_UNIMPLEMENTED</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1564"></a><tt class="py-lineno">1564</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-340', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">seqno</tt><tt class="py-op">)</tt> </tt> +<a name="L1565"></a><tt class="py-lineno">1565</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L1566"></a><tt class="py-lineno">1566</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-341" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-341', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L1567"></a><tt class="py-lineno">1567</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2321,8 +2361,8 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-317', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-318" class="py-name"><a title="paramiko.auth_handler.ERROR +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-342', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1568"></a><tt class="py-lineno">1568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-343" class="py-name"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2343,10 +2383,10 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-318', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-319', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-320" class="py-name" targets="Function paramiko.util.tb_strings()=paramiko.util-module.html#tb_strings"><a title="paramiko.util.tb_strings" class="py-name" href="#" onclick="return doclink('link-320', 'tb_strings', 'link-320');">tb_strings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L1538"></a><tt class="py-lineno">1538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-321" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-343', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt id="link-344" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-344', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-345" class="py-name" targets="Function paramiko.util.tb_strings()=paramiko.util-module.html#tb_strings"><a title="paramiko.util.tb_strings" class="py-name" href="#" onclick="return doclink('link-345', 'tb_strings', 'link-345');">tb_strings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1569"></a><tt class="py-lineno">1569</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L1570"></a><tt class="py-lineno">1570</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">EOFError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L1571"></a><tt class="py-lineno">1571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-346" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2367,16 +2407,16 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-321', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF in transport thread'</tt><tt class="py-op">)</tt> </tt> -<a name="L1539"></a><tt class="py-lineno">1539</tt> <tt class="py-line"> <tt class="py-comment">#self._log(DEBUG, util.tb_strings())</tt> </tt> -<a name="L1540"></a><tt class="py-lineno">1540</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L1541"></a><tt class="py-lineno">1541</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error -paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-322', 'error', 'link-322');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L1542"></a><tt class="py-lineno">1542</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> -<a name="L1543"></a><tt class="py-lineno">1543</tt> <tt class="py-line"> <tt class="py-name">emsg</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s (%d)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L1544"></a><tt class="py-lineno">1544</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1545"></a><tt class="py-lineno">1545</tt> <tt class="py-line"> <tt class="py-name">emsg</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> </tt> -<a name="L1546"></a><tt class="py-lineno">1546</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-323" class="py-name"><a title="paramiko.auth_handler.ERROR +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-346', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'EOF in transport thread'</tt><tt class="py-op">)</tt> </tt> +<a name="L1572"></a><tt class="py-lineno">1572</tt> <tt class="py-line"> <tt class="py-comment">#self._log(DEBUG, util.tb_strings())</tt> </tt> +<a name="L1573"></a><tt class="py-lineno">1573</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L1574"></a><tt class="py-lineno">1574</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name" targets="Class paramiko.rng_posix.error=paramiko.rng_posix.error-class.html,Class paramiko.rng_win32.error=paramiko.rng_win32.error-class.html"><a title="paramiko.rng_posix.error +paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link-347', 'error', 'link-347');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L1575"></a><tt class="py-lineno">1575</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> +<a name="L1576"></a><tt class="py-lineno">1576</tt> <tt class="py-line"> <tt class="py-name">emsg</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s (%d)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L1577"></a><tt class="py-lineno">1577</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1578"></a><tt class="py-lineno">1578</tt> <tt class="py-line"> <tt class="py-name">emsg</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt> </tt> +<a name="L1579"></a><tt class="py-lineno">1579</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-348" class="py-name"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2397,10 +2437,10 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-323', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Socket exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">emsg</tt><tt class="py-op">)</tt> </tt> -<a name="L1547"></a><tt class="py-lineno">1547</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L1548"></a><tt class="py-lineno">1548</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L1549"></a><tt class="py-lineno">1549</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-324" class="py-name"><a title="paramiko.auth_handler.ERROR +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-348', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Socket exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">emsg</tt><tt class="py-op">)</tt> </tt> +<a name="L1580"></a><tt class="py-lineno">1580</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L1581"></a><tt class="py-lineno">1581</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> +<a name="L1582"></a><tt class="py-lineno">1582</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-349" class="py-name"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2421,8 +2461,8 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-324', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unknown exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1550"></a><tt class="py-lineno">1550</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-325" class="py-name"><a title="paramiko.auth_handler.ERROR +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-349', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Unknown exception: '</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1583"></a><tt class="py-lineno">1583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-350" class="py-name"><a title="paramiko.auth_handler.ERROR paramiko.channel.ERROR paramiko.client.ERROR paramiko.common.ERROR @@ -2443,15 +2483,15 @@ paramiko.sftp_handle.ERROR paramiko.sftp_server.ERROR paramiko.sftp_si.ERROR paramiko.transport.ERROR -paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-325', 'ERROR', 'link-303');">ERROR</a></tt><tt class="py-op">,</tt> <tt id="link-326" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-326', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-327" class="py-name"><a title="paramiko.util.tb_strings" class="py-name" href="#" onclick="return doclink('link-327', 'tb_strings', 'link-320');">tb_strings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1551"></a><tt class="py-lineno">1551</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> -<a name="L1552"></a><tt class="py-lineno">1552</tt> <tt class="py-line"> <tt id="link-328" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-328', '_active_threads', 'link-45');">_active_threads</a></tt><tt class="py-op">.</tt><tt id="link-329" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-329', 'remove', 'link-329');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1553"></a><tt class="py-lineno">1553</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="paramiko.HostKeys.values -paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-330', 'values', 'link-73');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1554"></a><tt class="py-lineno">1554</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_unlink</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1555"></a><tt class="py-lineno">1555</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> -<a name="L1556"></a><tt class="py-lineno">1556</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1557"></a><tt class="py-lineno">1557</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="paramiko.Agent.close +paramiko.util.ERROR" class="py-name" href="#" onclick="return doclink('link-350', 'ERROR', 'link-328');">ERROR</a></tt><tt class="py-op">,</tt> <tt id="link-351" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-351', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-352" class="py-name"><a title="paramiko.util.tb_strings" class="py-name" href="#" onclick="return doclink('link-352', 'tb_strings', 'link-345');">tb_strings</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1584"></a><tt class="py-lineno">1584</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt> +<a name="L1585"></a><tt class="py-lineno">1585</tt> <tt class="py-line"> <tt id="link-353" class="py-name"><a title="paramiko.transport._active_threads" class="py-name" href="#" onclick="return doclink('link-353', '_active_threads', 'link-49');">_active_threads</a></tt><tt class="py-op">.</tt><tt id="link-354" class="py-name" targets="Method paramiko.SFTPServerInterface.remove()=paramiko.SFTPServerInterface-class.html#remove"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-354', 'remove', 'link-354');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1586"></a><tt class="py-lineno">1586</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="paramiko.HostKeys.values +paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-355', 'values', 'link-77');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1587"></a><tt class="py-lineno">1587</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_unlink</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1588"></a><tt class="py-lineno">1588</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt><tt class="py-op">:</tt> </tt> +<a name="L1589"></a><tt class="py-lineno">1589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1590"></a><tt class="py-lineno">1590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -2462,24 +2502,24 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-331', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1558"></a><tt class="py-lineno">1558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1559"></a><tt class="py-lineno">1559</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name" targets="Method paramiko.pipe.OrPipe.set()=paramiko.pipe.OrPipe-class.html#set,Method paramiko.pipe.PosixPipe.set()=paramiko.pipe.PosixPipe-class.html#set,Method paramiko.pipe.WindowsPipe.set()=paramiko.pipe.WindowsPipe-class.html#set"><a title="paramiko.pipe.OrPipe.set +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-356', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1591"></a><tt class="py-lineno">1591</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1592"></a><tt class="py-lineno">1592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-357" class="py-name" targets="Method paramiko.pipe.OrPipe.set()=paramiko.pipe.OrPipe-class.html#set,Method paramiko.pipe.PosixPipe.set()=paramiko.pipe.PosixPipe-class.html#set,Method paramiko.pipe.WindowsPipe.set()=paramiko.pipe.WindowsPipe-class.html#set"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-332', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1560"></a><tt class="py-lineno">1560</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-333', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1561"></a><tt class="py-lineno">1561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-334', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">abort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1562"></a><tt class="py-lineno">1562</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">.</tt><tt id="link-335" class="py-name"><a title="paramiko.HostKeys.values -paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-335', 'values', 'link-73');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1563"></a><tt class="py-lineno">1563</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-357', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1593"></a><tt class="py-lineno">1593</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-358', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1594"></a><tt class="py-lineno">1594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-359', 'auth_handler', 'link-3');">auth_handler</a></tt><tt class="py-op">.</tt><tt class="py-name">abort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1595"></a><tt class="py-lineno">1595</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="paramiko.HostKeys.values +paramiko.transport.ChannelMap.values" class="py-name" href="#" onclick="return doclink('link-360', 'values', 'link-77');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1596"></a><tt class="py-lineno">1596</tt> <tt class="py-line"> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-336', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1564"></a><tt class="py-lineno">1564</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1565"></a><tt class="py-lineno">1565</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1566"></a><tt class="py-lineno">1566</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">notify</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1567"></a><tt class="py-lineno">1567</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1568"></a><tt class="py-lineno">1568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1569"></a><tt class="py-lineno">1569</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-337" class="py-name"><a title="paramiko.Agent.close +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-361', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1597"></a><tt class="py-lineno">1597</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1598"></a><tt class="py-lineno">1598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1599"></a><tt class="py-lineno">1599</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_accept_cv</tt><tt class="py-op">.</tt><tt class="py-name">notify</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1600"></a><tt class="py-lineno">1600</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1601"></a><tt class="py-lineno">1601</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1602"></a><tt class="py-lineno">1602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sock</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="paramiko.Agent.close paramiko.BufferedFile.close paramiko.Channel.close paramiko.SFTPClient.close @@ -2490,45 +2530,45 @@ paramiko.Transport.close paramiko.buffered_pipe.BufferedPipe.close paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close -paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-337', 'close', 'link-110');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1570"></a><tt class="py-lineno">1570</tt> <tt class="py-line"> </tt> -<a name="L1571"></a><tt class="py-lineno">1571</tt> <tt class="py-line"> </tt> -<a name="L1572"></a><tt class="py-lineno">1572</tt> <tt class="py-line"> <tt class="py-comment">### protocol stages</tt> </tt> -<a name="L1573"></a><tt class="py-lineno">1573</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L1574"></a><tt class="py-lineno">1574</tt> <tt class="py-line"> </tt> -<a name="Transport._negotiate_keys"></a><div id="Transport._negotiate_keys-def"><a name="L1575"></a><tt class="py-lineno">1575</tt> <a class="py-toggle" href="#" id="Transport._negotiate_keys-toggle" onclick="return toggle('Transport._negotiate_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_negotiate_keys">_negotiate_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._negotiate_keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._negotiate_keys-expanded"><a name="L1576"></a><tt class="py-lineno">1576</tt> <tt class="py-line"> <tt class="py-comment"># throws SSHException on anything unusual</tt> </tt> -<a name="L1577"></a><tt class="py-lineno">1577</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1578"></a><tt class="py-lineno">1578</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1579"></a><tt class="py-lineno">1579</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name" targets="Method paramiko.HostKeys.clear()=paramiko.HostKeys-class.html#clear,Method paramiko.pipe.OrPipe.clear()=paramiko.pipe.OrPipe-class.html#clear,Method paramiko.pipe.PosixPipe.clear()=paramiko.pipe.PosixPipe-class.html#clear,Method paramiko.pipe.WindowsPipe.clear()=paramiko.pipe.WindowsPipe-class.html#clear"><a title="paramiko.HostKeys.clear +paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-362', 'close', 'link-115');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1603"></a><tt class="py-lineno">1603</tt> <tt class="py-line"> </tt> +<a name="L1604"></a><tt class="py-lineno">1604</tt> <tt class="py-line"> </tt> +<a name="L1605"></a><tt class="py-lineno">1605</tt> <tt class="py-line"> <tt class="py-comment">### protocol stages</tt> </tt> +<a name="L1606"></a><tt class="py-lineno">1606</tt> <tt class="py-line"> </tt> +<a name="L1607"></a><tt class="py-lineno">1607</tt> <tt class="py-line"> </tt> +<a name="Transport._negotiate_keys"></a><div id="Transport._negotiate_keys-def"><a name="L1608"></a><tt class="py-lineno">1608</tt> <a class="py-toggle" href="#" id="Transport._negotiate_keys-toggle" onclick="return toggle('Transport._negotiate_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_negotiate_keys">_negotiate_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._negotiate_keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._negotiate_keys-expanded"><a name="L1609"></a><tt class="py-lineno">1609</tt> <tt class="py-line"> <tt class="py-comment"># throws SSHException on anything unusual</tt> </tt> +<a name="L1610"></a><tt class="py-lineno">1610</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1611"></a><tt class="py-lineno">1611</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1612"></a><tt class="py-lineno">1612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name" targets="Method paramiko.HostKeys.clear()=paramiko.HostKeys-class.html#clear,Method paramiko.pipe.OrPipe.clear()=paramiko.pipe.OrPipe-class.html#clear,Method paramiko.pipe.PosixPipe.clear()=paramiko.pipe.PosixPipe-class.html#clear,Method paramiko.pipe.WindowsPipe.clear()=paramiko.pipe.WindowsPipe-class.html#clear"><a title="paramiko.HostKeys.clear paramiko.pipe.OrPipe.clear paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-338', 'clear', 'link-338');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1580"></a><tt class="py-lineno">1580</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1581"></a><tt class="py-lineno">1581</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1582"></a><tt class="py-lineno">1582</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1583"></a><tt class="py-lineno">1583</tt> <tt class="py-line"> <tt class="py-comment"># remote side wants to renegotiate</tt> </tt> -<a name="L1584"></a><tt class="py-lineno">1584</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1585"></a><tt class="py-lineno">1585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_kex_init</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1586"></a><tt class="py-lineno">1586</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name" targets="Method paramiko.kex_gex.KexGex.start_kex()=paramiko.kex_gex.KexGex-class.html#start_kex,Method paramiko.kex_group1.KexGroup1.start_kex()=paramiko.kex_group1.KexGroup1-class.html#start_kex"><a title="paramiko.kex_gex.KexGex.start_kex -paramiko.kex_group1.KexGroup1.start_kex" class="py-name" href="#" onclick="return doclink('link-339', 'start_kex', 'link-339');">start_kex</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1587"></a><tt class="py-lineno">1587</tt> <tt class="py-line"> </tt> -<a name="Transport._check_banner"></a><div id="Transport._check_banner-def"><a name="L1588"></a><tt class="py-lineno">1588</tt> <a class="py-toggle" href="#" id="Transport._check_banner-toggle" onclick="return toggle('Transport._check_banner');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_check_banner">_check_banner</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._check_banner-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._check_banner-expanded"><a name="L1589"></a><tt class="py-lineno">1589</tt> <tt class="py-line"> <tt class="py-comment"># this is slow, but we only have to do it once</tt> </tt> -<a name="L1590"></a><tt class="py-lineno">1590</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1591"></a><tt class="py-lineno">1591</tt> <tt class="py-line"> <tt class="py-comment"># give them 15 seconds for the first line, then just 2 seconds</tt> </tt> -<a name="L1592"></a><tt class="py-lineno">1592</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># each additional line. (some sites have very high latency.)</tt> </tt> -<a name="L1593"></a><tt class="py-lineno">1593</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1594"></a><tt class="py-lineno">1594</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">banner_timeout</tt> </tt> -<a name="L1595"></a><tt class="py-lineno">1595</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1596"></a><tt class="py-lineno">1596</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt> -<a name="L1597"></a><tt class="py-lineno">1597</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1598"></a><tt class="py-lineno">1598</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name" targets="Method paramiko.BufferedFile.readline()=paramiko.BufferedFile-class.html#readline"><a title="paramiko.BufferedFile.readline" class="py-name" href="#" onclick="return doclink('link-340', 'readline', 'link-340');">readline</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> -<a name="L1599"></a><tt class="py-lineno">1599</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> -<a name="L1600"></a><tt class="py-lineno">1600</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-341" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-341', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error reading SSH protocol banner'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1601"></a><tt class="py-lineno">1601</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'SSH-'</tt><tt class="py-op">:</tt> </tt> -<a name="L1602"></a><tt class="py-lineno">1602</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L1603"></a><tt class="py-lineno">1603</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-342" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-363', 'clear', 'link-363');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1613"></a><tt class="py-lineno">1613</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1614"></a><tt class="py-lineno">1614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1615"></a><tt class="py-lineno">1615</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1616"></a><tt class="py-lineno">1616</tt> <tt class="py-line"> <tt class="py-comment"># remote side wants to renegotiate</tt> </tt> +<a name="L1617"></a><tt class="py-lineno">1617</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_kex_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1618"></a><tt class="py-lineno">1618</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_parse_kex_init</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1619"></a><tt class="py-lineno">1619</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name" targets="Method paramiko.kex_gex.KexGex.start_kex()=paramiko.kex_gex.KexGex-class.html#start_kex,Method paramiko.kex_group1.KexGroup1.start_kex()=paramiko.kex_group1.KexGroup1-class.html#start_kex"><a title="paramiko.kex_gex.KexGex.start_kex +paramiko.kex_group1.KexGroup1.start_kex" class="py-name" href="#" onclick="return doclink('link-364', 'start_kex', 'link-364');">start_kex</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1620"></a><tt class="py-lineno">1620</tt> <tt class="py-line"> </tt> +<a name="Transport._check_banner"></a><div id="Transport._check_banner-def"><a name="L1621"></a><tt class="py-lineno">1621</tt> <a class="py-toggle" href="#" id="Transport._check_banner-toggle" onclick="return toggle('Transport._check_banner');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_check_banner">_check_banner</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._check_banner-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._check_banner-expanded"><a name="L1622"></a><tt class="py-lineno">1622</tt> <tt class="py-line"> <tt class="py-comment"># this is slow, but we only have to do it once</tt> </tt> +<a name="L1623"></a><tt class="py-lineno">1623</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">100</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1624"></a><tt class="py-lineno">1624</tt> <tt class="py-line"> <tt class="py-comment"># give them 15 seconds for the first line, then just 2 seconds</tt> </tt> +<a name="L1625"></a><tt class="py-lineno">1625</tt> <tt class="py-line"> <tt class="py-comment"># each additional line. (some sites have very high latency.)</tt> </tt> +<a name="L1626"></a><tt class="py-lineno">1626</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1627"></a><tt class="py-lineno">1627</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">banner_timeout</tt> </tt> +<a name="L1628"></a><tt class="py-lineno">1628</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1629"></a><tt class="py-lineno">1629</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt> +<a name="L1630"></a><tt class="py-lineno">1630</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1631"></a><tt class="py-lineno">1631</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name" targets="Method paramiko.BufferedFile.readline()=paramiko.BufferedFile-class.html#readline"><a title="paramiko.BufferedFile.readline" class="py-name" href="#" onclick="return doclink('link-365', 'readline', 'link-365');">readline</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt> +<a name="L1632"></a><tt class="py-lineno">1632</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt> +<a name="L1633"></a><tt class="py-lineno">1633</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-366" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-366', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error reading SSH protocol banner'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1634"></a><tt class="py-lineno">1634</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'SSH-'</tt><tt class="py-op">:</tt> </tt> +<a name="L1635"></a><tt class="py-lineno">1635</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L1636"></a><tt class="py-lineno">1636</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-367" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2549,26 +2589,26 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-342', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Banner: '</tt> <tt class="py-op">+</tt> <tt class="py-name">buf</tt><tt class="py-op">)</tt> </tt> -<a name="L1604"></a><tt class="py-lineno">1604</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'SSH-'</tt><tt class="py-op">:</tt> </tt> -<a name="L1605"></a><tt class="py-lineno">1605</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-343" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-343', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Indecipherable protocol version "'</tt> <tt class="py-op">+</tt> <tt class="py-name">buf</tt> <tt class="py-op">+</tt> <tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> -<a name="L1606"></a><tt class="py-lineno">1606</tt> <tt class="py-line"> <tt class="py-comment"># save this server version string for later</tt> </tt> -<a name="L1607"></a><tt class="py-lineno">1607</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt> </tt> -<a name="L1608"></a><tt class="py-lineno">1608</tt> <tt class="py-line"> <tt class="py-comment"># pull off any attached comment</tt> </tt> -<a name="L1609"></a><tt class="py-lineno">1609</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L1610"></a><tt class="py-lineno">1610</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-name">buf</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> </tt> -<a name="L1611"></a><tt class="py-lineno">1611</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1612"></a><tt class="py-lineno">1612</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L1613"></a><tt class="py-lineno">1613</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt> -<a name="L1614"></a><tt class="py-lineno">1614</tt> <tt class="py-line"> <tt class="py-comment"># parse out version string and make sure it matches</tt> </tt> -<a name="L1615"></a><tt class="py-lineno">1615</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">segs</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt> -<a name="L1616"></a><tt class="py-lineno">1616</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segs</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> -<a name="L1617"></a><tt class="py-lineno">1617</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-344" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-344', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid SSH banner'</tt><tt class="py-op">)</tt> </tt> -<a name="L1618"></a><tt class="py-lineno">1618</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">segs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L1619"></a><tt class="py-lineno">1619</tt> <tt class="py-line"> <tt id="link-345" class="py-name" targets="Module paramiko.client=paramiko.client-module.html"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-345', 'client', 'link-345');">client</a></tt> <tt class="py-op">=</tt> <tt class="py-name">segs</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> -<a name="L1620"></a><tt class="py-lineno">1620</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">!=</tt> <tt class="py-string">'1.99'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">version</tt> <tt class="py-op">!=</tt> <tt class="py-string">'2.0'</tt><tt class="py-op">:</tt> </tt> -<a name="L1621"></a><tt class="py-lineno">1621</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-346" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-346', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible version (%s instead of 2.0)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1622"></a><tt class="py-lineno">1622</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-347" class="py-name" targets="Variable paramiko.auth_handler.INFO=paramiko.auth_handler-module.html#INFO,Variable paramiko.channel.INFO=paramiko.channel-module.html#INFO,Variable paramiko.client.INFO=paramiko.client-module.html#INFO,Variable paramiko.common.INFO=paramiko.common-module.html#INFO,Variable paramiko.dsskey.INFO=paramiko.dsskey-module.html#INFO,Variable paramiko.hostkeys.INFO=paramiko.hostkeys-module.html#INFO,Variable paramiko.kex_gex.INFO=paramiko.kex_gex-module.html#INFO,Variable paramiko.kex_group1.INFO=paramiko.kex_group1-module.html#INFO,Variable paramiko.logging22.INFO=paramiko.logging22-module.html#INFO,Variable paramiko.packet.INFO=paramiko.packet-module.html#INFO,Variable paramiko.pkey.INFO=paramiko.pkey-module.html#INFO,Variable paramiko.rsakey.INFO=paramiko.rsakey-module.html#INFO,Variable paramiko.server.INFO=paramiko.server-module.html#INFO,Variable paramiko.sftp.INFO=paramiko.sftp-module.html#INFO,Variable paramiko.sftp_attr.INFO=paramiko.sftp_attr-module.html#INFO,Variable paramiko.sftp_client.INFO=paramiko.sftp_client-module.html#INFO,Variable paramiko.sftp_file.INFO=paramiko.sftp_file-module.html#INFO,Variable paramiko.sftp_handle.INFO=paramiko.sftp_handle-module.html#INFO,Variable paramiko.sftp_server.INFO=paramiko.sftp_server-module.html#INFO,Variable paramiko.sftp_si.INFO=paramiko.sftp_si-module.html#INFO,Variable paramiko.transport.INFO=paramiko.transport-module.html#INFO,Variable paramiko.util.INFO=paramiko.util-module.html#INFO"><a title="paramiko.auth_handler.INFO +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-367', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Banner: '</tt> <tt class="py-op">+</tt> <tt class="py-name">buf</tt><tt class="py-op">)</tt> </tt> +<a name="L1637"></a><tt class="py-lineno">1637</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'SSH-'</tt><tt class="py-op">:</tt> </tt> +<a name="L1638"></a><tt class="py-lineno">1638</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-368" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-368', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Indecipherable protocol version "'</tt> <tt class="py-op">+</tt> <tt class="py-name">buf</tt> <tt class="py-op">+</tt> <tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> +<a name="L1639"></a><tt class="py-lineno">1639</tt> <tt class="py-line"> <tt class="py-comment"># save this server version string for later</tt> </tt> +<a name="L1640"></a><tt class="py-lineno">1640</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_version</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt> </tt> +<a name="L1641"></a><tt class="py-lineno">1641</tt> <tt class="py-line"> <tt class="py-comment"># pull off any attached comment</tt> </tt> +<a name="L1642"></a><tt class="py-lineno">1642</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L1643"></a><tt class="py-lineno">1643</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-name">buf</tt><tt class="py-op">,</tt> <tt class="py-string">' '</tt><tt class="py-op">)</tt> </tt> +<a name="L1644"></a><tt class="py-lineno">1644</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1645"></a><tt class="py-lineno">1645</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L1646"></a><tt class="py-lineno">1646</tt> <tt class="py-line"> <tt class="py-name">buf</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt> +<a name="L1647"></a><tt class="py-lineno">1647</tt> <tt class="py-line"> <tt class="py-comment"># parse out version string and make sure it matches</tt> </tt> +<a name="L1648"></a><tt class="py-lineno">1648</tt> <tt class="py-line"> <tt class="py-name">segs</tt> <tt class="py-op">=</tt> <tt class="py-name">buf</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt> +<a name="L1649"></a><tt class="py-lineno">1649</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segs</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt> +<a name="L1650"></a><tt class="py-lineno">1650</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-369" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-369', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid SSH banner'</tt><tt class="py-op">)</tt> </tt> +<a name="L1651"></a><tt class="py-lineno">1651</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">segs</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> +<a name="L1652"></a><tt class="py-lineno">1652</tt> <tt class="py-line"> <tt id="link-370" class="py-name" targets="Module paramiko.client=paramiko.client-module.html"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-370', 'client', 'link-370');">client</a></tt> <tt class="py-op">=</tt> <tt class="py-name">segs</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt> +<a name="L1653"></a><tt class="py-lineno">1653</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">!=</tt> <tt class="py-string">'1.99'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">version</tt> <tt class="py-op">!=</tt> <tt class="py-string">'2.0'</tt><tt class="py-op">:</tt> </tt> +<a name="L1654"></a><tt class="py-lineno">1654</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-371" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-371', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible version (%s instead of 2.0)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1655"></a><tt class="py-lineno">1655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-372" class="py-name" targets="Variable paramiko.auth_handler.INFO=paramiko.auth_handler-module.html#INFO,Variable paramiko.channel.INFO=paramiko.channel-module.html#INFO,Variable paramiko.client.INFO=paramiko.client-module.html#INFO,Variable paramiko.common.INFO=paramiko.common-module.html#INFO,Variable paramiko.dsskey.INFO=paramiko.dsskey-module.html#INFO,Variable paramiko.hostkeys.INFO=paramiko.hostkeys-module.html#INFO,Variable paramiko.kex_gex.INFO=paramiko.kex_gex-module.html#INFO,Variable paramiko.kex_group1.INFO=paramiko.kex_group1-module.html#INFO,Variable paramiko.logging22.INFO=paramiko.logging22-module.html#INFO,Variable paramiko.packet.INFO=paramiko.packet-module.html#INFO,Variable paramiko.pkey.INFO=paramiko.pkey-module.html#INFO,Variable paramiko.rsakey.INFO=paramiko.rsakey-module.html#INFO,Variable paramiko.server.INFO=paramiko.server-module.html#INFO,Variable paramiko.sftp.INFO=paramiko.sftp-module.html#INFO,Variable paramiko.sftp_attr.INFO=paramiko.sftp_attr-module.html#INFO,Variable paramiko.sftp_client.INFO=paramiko.sftp_client-module.html#INFO,Variable paramiko.sftp_file.INFO=paramiko.sftp_file-module.html#INFO,Variable paramiko.sftp_handle.INFO=paramiko.sftp_handle-module.html#INFO,Variable paramiko.sftp_server.INFO=paramiko.sftp_server-module.html#INFO,Variable paramiko.sftp_si.INFO=paramiko.sftp_si-module.html#INFO,Variable paramiko.transport.INFO=paramiko.transport-module.html#INFO,Variable paramiko.util.INFO=paramiko.util-module.html#INFO"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -2589,34 +2629,34 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-347', 'INFO', 'link-347');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Connected (version %s, client %s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">,</tt> <tt id="link-348" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-348', 'client', 'link-345');">client</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1623"></a><tt class="py-lineno">1623</tt> <tt class="py-line"> </tt> -<a name="Transport._send_kex_init"></a><div id="Transport._send_kex_init-def"><a name="L1624"></a><tt class="py-lineno">1624</tt> <a class="py-toggle" href="#" id="Transport._send_kex_init-toggle" onclick="return toggle('Transport._send_kex_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_kex_init">_send_kex_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._send_kex_init-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_kex_init-expanded"><a name="L1625"></a><tt class="py-lineno">1625</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L1626"></a><tt class="py-lineno">1626</tt> <tt class="py-line"><tt class="py-docstring"> announce to the other side that we'd like to negotiate keys, and what</tt> </tt> -<a name="L1627"></a><tt class="py-lineno">1627</tt> <tt class="py-line"><tt class="py-docstring"> kind of key negotiation we support.</tt> </tt> -<a name="L1628"></a><tt class="py-lineno">1628</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L1629"></a><tt class="py-lineno">1629</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1630"></a><tt class="py-lineno">1630</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1631"></a><tt class="py-lineno">1631</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-349" class="py-name"><a title="paramiko.HostKeys.clear +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-372', 'INFO', 'link-372');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Connected (version %s, client %s)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">version</tt><tt class="py-op">,</tt> <tt id="link-373" class="py-name"><a title="paramiko.client" class="py-name" href="#" onclick="return doclink('link-373', 'client', 'link-370');">client</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1656"></a><tt class="py-lineno">1656</tt> <tt class="py-line"> </tt> +<a name="Transport._send_kex_init"></a><div id="Transport._send_kex_init-def"><a name="L1657"></a><tt class="py-lineno">1657</tt> <a class="py-toggle" href="#" id="Transport._send_kex_init-toggle" onclick="return toggle('Transport._send_kex_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_send_kex_init">_send_kex_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._send_kex_init-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._send_kex_init-expanded"><a name="L1658"></a><tt class="py-lineno">1658</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L1659"></a><tt class="py-lineno">1659</tt> <tt class="py-line"><tt class="py-docstring"> announce to the other side that we'd like to negotiate keys, and what</tt> </tt> +<a name="L1660"></a><tt class="py-lineno">1660</tt> <tt class="py-line"><tt class="py-docstring"> kind of key negotiation we support.</tt> </tt> +<a name="L1661"></a><tt class="py-lineno">1661</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L1662"></a><tt class="py-lineno">1662</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1663"></a><tt class="py-lineno">1663</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1664"></a><tt class="py-lineno">1664</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="paramiko.HostKeys.clear paramiko.pipe.OrPipe.clear paramiko.pipe.PosixPipe.clear -paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-349', 'clear', 'link-338');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1632"></a><tt class="py-lineno">1632</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1633"></a><tt class="py-lineno">1633</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1634"></a><tt class="py-lineno">1634</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1635"></a><tt class="py-lineno">1635</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1636"></a><tt class="py-lineno">1636</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-350', '_modulus_pack', 'link-94');">_modulus_pack</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-351', '_preferred_kex', 'link-52');">_preferred_kex</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1637"></a><tt class="py-lineno">1637</tt> <tt class="py-line"> <tt class="py-comment"># can't do group-exchange if we don't have a pack of potential primes</tt> </tt> -<a name="L1638"></a><tt class="py-lineno">1638</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">pkex</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-352" class="py-name" targets="Method paramiko.Transport.get_security_options()=paramiko.Transport-class.html#get_security_options"><a title="paramiko.Transport.get_security_options" class="py-name" href="#" onclick="return doclink('link-352', 'get_security_options', 'link-352');">get_security_options</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-353', 'kex', 'link-66');">kex</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1639"></a><tt class="py-lineno">1639</tt> <tt class="py-line"> <tt class="py-name">pkex</tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-354', 'remove', 'link-329');">remove</a></tt><tt class="py-op">(</tt><tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt><tt class="py-op">)</tt> </tt> -<a name="L1640"></a><tt class="py-lineno">1640</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="paramiko.Transport.get_security_options" class="py-name" href="#" onclick="return doclink('link-355', 'get_security_options', 'link-352');">get_security_options</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-356', 'kex', 'link-66');">kex</a></tt> <tt class="py-op">=</tt> <tt class="py-name">pkex</tt> </tt> -<a name="L1641"></a><tt class="py-lineno">1641</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt id="link-357" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-357', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-358', 'keys', 'link-54');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1642"></a><tt class="py-lineno">1642</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-359', '_preferred_keys', 'link-51');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1643"></a><tt class="py-lineno">1643</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1644"></a><tt class="py-lineno">1644</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-360', '_preferred_keys', 'link-51');">_preferred_keys</a></tt> </tt> -<a name="L1645"></a><tt class="py-lineno">1645</tt> <tt class="py-line"> </tt> -<a name="L1646"></a><tt class="py-lineno">1646</tt> <tt class="py-line"> <tt id="link-361" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.pipe.WindowsPipe.clear" class="py-name" href="#" onclick="return doclink('link-374', 'clear', 'link-363');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1665"></a><tt class="py-lineno">1665</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1666"></a><tt class="py-lineno">1666</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1667"></a><tt class="py-lineno">1667</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1668"></a><tt class="py-lineno">1668</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1669"></a><tt class="py-lineno">1669</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-375" class="py-name"><a title="paramiko.Transport._modulus_pack" class="py-name" href="#" onclick="return doclink('link-375', '_modulus_pack', 'link-98');">_modulus_pack</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-376', '_preferred_kex', 'link-56');">_preferred_kex</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1670"></a><tt class="py-lineno">1670</tt> <tt class="py-line"> <tt class="py-comment"># can't do group-exchange if we don't have a pack of potential primes</tt> </tt> +<a name="L1671"></a><tt class="py-lineno">1671</tt> <tt class="py-line"> <tt class="py-name">pkex</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-377" class="py-name" targets="Method paramiko.Transport.get_security_options()=paramiko.Transport-class.html#get_security_options"><a title="paramiko.Transport.get_security_options" class="py-name" href="#" onclick="return doclink('link-377', 'get_security_options', 'link-377');">get_security_options</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-378', 'kex', 'link-70');">kex</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1672"></a><tt class="py-lineno">1672</tt> <tt class="py-line"> <tt class="py-name">pkex</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="paramiko.SFTPServerInterface.remove" class="py-name" href="#" onclick="return doclink('link-379', 'remove', 'link-354');">remove</a></tt><tt class="py-op">(</tt><tt class="py-string">'diffie-hellman-group-exchange-sha1'</tt><tt class="py-op">)</tt> </tt> +<a name="L1673"></a><tt class="py-lineno">1673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="paramiko.Transport.get_security_options" class="py-name" href="#" onclick="return doclink('link-380', 'get_security_options', 'link-377');">get_security_options</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="paramiko.SecurityOptions.kex" class="py-name" href="#" onclick="return doclink('link-381', 'kex', 'link-70');">kex</a></tt> <tt class="py-op">=</tt> <tt class="py-name">pkex</tt> </tt> +<a name="L1674"></a><tt class="py-lineno">1674</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt id="link-382" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-382', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-383', 'keys', 'link-58');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1675"></a><tt class="py-lineno">1675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-384', '_preferred_keys', 'link-55');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1676"></a><tt class="py-lineno">1676</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1677"></a><tt class="py-lineno">1677</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-385', '_preferred_keys', 'link-55');">_preferred_keys</a></tt> </tt> +<a name="L1678"></a><tt class="py-lineno">1678</tt> <tt class="py-line"> </tt> +<a name="L1679"></a><tt class="py-lineno">1679</tt> <tt class="py-line"> <tt id="link-386" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -2636,9 +2676,9 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-361', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-362', 'stir', 'link-171');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1647"></a><tt class="py-lineno">1647</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-363" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-363', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1648"></a><tt class="py-lineno">1648</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-364', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-365" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-386', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="paramiko.rng.StrongLockingRandomPool.stir" class="py-name" href="#" onclick="return doclink('link-387', 'stir', 'link-176');">stir</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1680"></a><tt class="py-lineno">1680</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-388" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-388', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1681"></a><tt class="py-lineno">1681</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-389', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-390" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT paramiko.channel.MSG_KEXINIT paramiko.client.MSG_KEXINIT paramiko.common.MSG_KEXINIT @@ -2658,8 +2698,8 @@ paramiko.sftp_handle.MSG_KEXINIT paramiko.sftp_server.MSG_KEXINIT paramiko.sftp_si.MSG_KEXINIT paramiko.transport.MSG_KEXINIT -paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-365', 'MSG_KEXINIT', 'link-288');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1649"></a><tt class="py-lineno">1649</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-366', 'add_bytes', 'link-174');">add_bytes</a></tt><tt class="py-op">(</tt><tt id="link-367" class="py-name"><a title="paramiko.auth_handler.randpool +paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-390', 'MSG_KEXINIT', 'link-313');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1682"></a><tt class="py-lineno">1682</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="paramiko.Message.add_bytes" class="py-name" href="#" onclick="return doclink('link-391', 'add_bytes', 'link-179');">add_bytes</a></tt><tt class="py-op">(</tt><tt id="link-392" class="py-name"><a title="paramiko.auth_handler.randpool paramiko.channel.randpool paramiko.client.randpool paramiko.common.randpool @@ -2679,41 +2719,41 @@ paramiko.sftp_handle.randpool paramiko.sftp_server.randpool paramiko.sftp_si.randpool paramiko.transport.randpool -paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-367', 'randpool', 'link-97');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-368', 'get_bytes', 'link-173');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1650"></a><tt class="py-lineno">1650</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name" targets="Method paramiko.Message.add_list()=paramiko.Message-class.html#add_list"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-369', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-370', '_preferred_kex', 'link-52');">_preferred_kex</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1651"></a><tt class="py-lineno">1651</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-371" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-371', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">available_server_keys</tt><tt class="py-op">)</tt> </tt> -<a name="L1652"></a><tt class="py-lineno">1652</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-372', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-373" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-373', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1653"></a><tt class="py-lineno">1653</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-374', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-375" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-375', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1654"></a><tt class="py-lineno">1654</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-376', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-377', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1655"></a><tt class="py-lineno">1655</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-378', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-379', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1656"></a><tt class="py-lineno">1656</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-380', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-381', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1657"></a><tt class="py-lineno">1657</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-382" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-382', 'add_list', 'link-369');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-383', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1658"></a><tt class="py-lineno">1658</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-384', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -<a name="L1659"></a><tt class="py-lineno">1659</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-385', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -<a name="L1660"></a><tt class="py-lineno">1660</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-386', 'add_boolean', 'link-185');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> -<a name="L1661"></a><tt class="py-lineno">1661</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-387', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L1662"></a><tt class="py-lineno">1662</tt> <tt class="py-line"> <tt class="py-comment"># save a copy for later (needed to compute a hash)</tt> </tt> -<a name="L1663"></a><tt class="py-lineno">1663</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1664"></a><tt class="py-lineno">1664</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1665"></a><tt class="py-lineno">1665</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_kex_init"></a><div id="Transport._parse_kex_init-def"><a name="L1666"></a><tt class="py-lineno">1666</tt> <a class="py-toggle" href="#" id="Transport._parse_kex_init-toggle" onclick="return toggle('Transport._parse_kex_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_kex_init">_parse_kex_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_kex_init-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_kex_init-expanded"><a name="L1667"></a><tt class="py-lineno">1667</tt> <tt class="py-line"> <tt class="py-name">cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="paramiko.Message.get_bytes -paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-388', 'get_bytes', 'link-173');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt> </tt> -<a name="L1668"></a><tt class="py-lineno">1668</tt> <tt class="py-line"> <tt class="py-name">kex_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name" targets="Method paramiko.Message.get_list()=paramiko.Message-class.html#get_list"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-389', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1669"></a><tt class="py-lineno">1669</tt> <tt class="py-line"> <tt class="py-name">server_key_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-390', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1670"></a><tt class="py-lineno">1670</tt> <tt class="py-line"> <tt class="py-name">client_encrypt_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-391', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1671"></a><tt class="py-lineno">1671</tt> <tt class="py-line"> <tt class="py-name">server_encrypt_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-392', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1672"></a><tt class="py-lineno">1672</tt> <tt class="py-line"> <tt class="py-name">client_mac_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-393', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1673"></a><tt class="py-lineno">1673</tt> <tt class="py-line"> <tt class="py-name">server_mac_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-394', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1674"></a><tt class="py-lineno">1674</tt> <tt class="py-line"> <tt class="py-name">client_compress_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-395', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1675"></a><tt class="py-lineno">1675</tt> <tt class="py-line"> <tt class="py-name">server_compress_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-396', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1676"></a><tt class="py-lineno">1676</tt> <tt class="py-line"> <tt class="py-name">client_lang_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-397', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1677"></a><tt class="py-lineno">1677</tt> <tt class="py-line"> <tt class="py-name">server_lang_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-398', 'get_list', 'link-389');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1678"></a><tt class="py-lineno">1678</tt> <tt class="py-line"> <tt class="py-name">kex_follows</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name" targets="Method paramiko.Message.get_boolean()=paramiko.Message-class.html#get_boolean"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-399', 'get_boolean', 'link-399');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1679"></a><tt class="py-lineno">1679</tt> <tt class="py-line"> <tt class="py-name">unused</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-400', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1680"></a><tt class="py-lineno">1680</tt> <tt class="py-line"> </tt> -<a name="L1681"></a><tt class="py-lineno">1681</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-401" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.randpool" class="py-name" href="#" onclick="return doclink('link-392', 'randpool', 'link-102');">randpool</a></tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-393', 'get_bytes', 'link-178');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1683"></a><tt class="py-lineno">1683</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name" targets="Method paramiko.Message.add_list()=paramiko.Message-class.html#add_list"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-394', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-395', '_preferred_kex', 'link-56');">_preferred_kex</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1684"></a><tt class="py-lineno">1684</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-396', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">available_server_keys</tt><tt class="py-op">)</tt> </tt> +<a name="L1685"></a><tt class="py-lineno">1685</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-397" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-397', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-398', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1686"></a><tt class="py-lineno">1686</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-399', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-400', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1687"></a><tt class="py-lineno">1687</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-401', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-402', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1688"></a><tt class="py-lineno">1688</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-403', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-404', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1689"></a><tt class="py-lineno">1689</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-405', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-406', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1690"></a><tt class="py-lineno">1690</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="paramiko.Message.add_list" class="py-name" href="#" onclick="return doclink('link-407', 'add_list', 'link-394');">add_list</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-408', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1691"></a><tt class="py-lineno">1691</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-409', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> +<a name="L1692"></a><tt class="py-lineno">1692</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-410', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> +<a name="L1693"></a><tt class="py-lineno">1693</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-411" class="py-name"><a title="paramiko.Message.add_boolean" class="py-name" href="#" onclick="return doclink('link-411', 'add_boolean', 'link-190');">add_boolean</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> +<a name="L1694"></a><tt class="py-lineno">1694</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-412', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L1695"></a><tt class="py-lineno">1695</tt> <tt class="py-line"> <tt class="py-comment"># save a copy for later (needed to compute a hash)</tt> </tt> +<a name="L1696"></a><tt class="py-lineno">1696</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1697"></a><tt class="py-lineno">1697</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1698"></a><tt class="py-lineno">1698</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_kex_init"></a><div id="Transport._parse_kex_init-def"><a name="L1699"></a><tt class="py-lineno">1699</tt> <a class="py-toggle" href="#" id="Transport._parse_kex_init-toggle" onclick="return toggle('Transport._parse_kex_init');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_kex_init">_parse_kex_init</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_kex_init-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_kex_init-expanded"><a name="L1700"></a><tt class="py-lineno">1700</tt> <tt class="py-line"> <tt class="py-name">cookie</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="paramiko.Message.get_bytes +paramiko.rng.StrongLockingRandomPool.get_bytes" class="py-name" href="#" onclick="return doclink('link-413', 'get_bytes', 'link-178');">get_bytes</a></tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt> </tt> +<a name="L1701"></a><tt class="py-lineno">1701</tt> <tt class="py-line"> <tt class="py-name">kex_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name" targets="Method paramiko.Message.get_list()=paramiko.Message-class.html#get_list"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-414', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1702"></a><tt class="py-lineno">1702</tt> <tt class="py-line"> <tt class="py-name">server_key_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-415', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1703"></a><tt class="py-lineno">1703</tt> <tt class="py-line"> <tt class="py-name">client_encrypt_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-416', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1704"></a><tt class="py-lineno">1704</tt> <tt class="py-line"> <tt class="py-name">server_encrypt_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-417', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1705"></a><tt class="py-lineno">1705</tt> <tt class="py-line"> <tt class="py-name">client_mac_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-418', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1706"></a><tt class="py-lineno">1706</tt> <tt class="py-line"> <tt class="py-name">server_mac_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-419', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1707"></a><tt class="py-lineno">1707</tt> <tt class="py-line"> <tt class="py-name">client_compress_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-420', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1708"></a><tt class="py-lineno">1708</tt> <tt class="py-line"> <tt class="py-name">server_compress_algo_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-421', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1709"></a><tt class="py-lineno">1709</tt> <tt class="py-line"> <tt class="py-name">client_lang_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-422', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1710"></a><tt class="py-lineno">1710</tt> <tt class="py-line"> <tt class="py-name">server_lang_list</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-423" class="py-name"><a title="paramiko.Message.get_list" class="py-name" href="#" onclick="return doclink('link-423', 'get_list', 'link-414');">get_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1711"></a><tt class="py-lineno">1711</tt> <tt class="py-line"> <tt class="py-name">kex_follows</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name" targets="Method paramiko.Message.get_boolean()=paramiko.Message-class.html#get_boolean"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-424', 'get_boolean', 'link-424');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1712"></a><tt class="py-lineno">1712</tt> <tt class="py-line"> <tt class="py-name">unused</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-425', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1713"></a><tt class="py-lineno">1713</tt> <tt class="py-line"> </tt> +<a name="L1714"></a><tt class="py-lineno">1714</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-426" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2734,54 +2774,54 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-401', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'kex algos:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">kex_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">' server key:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_key_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1682"></a><tt class="py-lineno">1682</tt> <tt class="py-line"> <tt class="py-string">' client encrypt:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1683"></a><tt class="py-lineno">1683</tt> <tt class="py-line"> <tt class="py-string">' server encrypt:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1684"></a><tt class="py-lineno">1684</tt> <tt class="py-line"> <tt class="py-string">' client mac:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_mac_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1685"></a><tt class="py-lineno">1685</tt> <tt class="py-line"> <tt class="py-string">' server mac:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_mac_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1686"></a><tt class="py-lineno">1686</tt> <tt class="py-line"> <tt class="py-string">' client compress:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_compress_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1687"></a><tt class="py-lineno">1687</tt> <tt class="py-line"> <tt class="py-string">' server compress:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_compress_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1688"></a><tt class="py-lineno">1688</tt> <tt class="py-line"> <tt class="py-string">' client lang:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_lang_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1689"></a><tt class="py-lineno">1689</tt> <tt class="py-line"> <tt class="py-string">' server lang:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_lang_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> -<a name="L1690"></a><tt class="py-lineno">1690</tt> <tt class="py-line"> <tt class="py-string">' kex follows?'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">kex_follows</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1691"></a><tt class="py-lineno">1691</tt> <tt class="py-line"> </tt> -<a name="L1692"></a><tt class="py-lineno">1692</tt> <tt class="py-line"> <tt class="py-comment"># as a server, we pick the first item in the client's list that we support.</tt> </tt> -<a name="L1693"></a><tt class="py-lineno">1693</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># as a client, we pick the first item in our list that the server supports.</tt> </tt> -<a name="L1694"></a><tt class="py-lineno">1694</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1695"></a><tt class="py-lineno">1695</tt> <tt class="py-line"> <tt class="py-name">agreed_kex</tt> <tt class="py-op">=</tt> <tt id="link-402" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-402', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-403', '_preferred_kex', 'link-52');">_preferred_kex</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">kex_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1696"></a><tt class="py-lineno">1696</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1697"></a><tt class="py-lineno">1697</tt> <tt class="py-line"> <tt class="py-name">agreed_kex</tt> <tt class="py-op">=</tt> <tt id="link-404" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-404', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">kex_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-405', '_preferred_kex', 'link-52');">_preferred_kex</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1698"></a><tt class="py-lineno">1698</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1699"></a><tt class="py-lineno">1699</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-406" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-406', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (no acceptable kex algorithm)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1700"></a><tt class="py-lineno">1700</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="paramiko.Transport._kex_info" class="py-name" href="#" onclick="return doclink('link-407', '_kex_info', 'link-86');">_kex_info</a></tt><tt class="py-op">[</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1701"></a><tt class="py-lineno">1701</tt> <tt class="py-line"> </tt> -<a name="L1702"></a><tt class="py-lineno">1702</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1703"></a><tt class="py-lineno">1703</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt id="link-408" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-408', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-409', 'keys', 'link-54');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1704"></a><tt class="py-lineno">1704</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-410" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-410', '_preferred_keys', 'link-51');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1705"></a><tt class="py-lineno">1705</tt> <tt class="py-line"> <tt class="py-name">agreed_keys</tt> <tt class="py-op">=</tt> <tt id="link-411" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-411', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">available_server_keys</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_key_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1706"></a><tt class="py-lineno">1706</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1707"></a><tt class="py-lineno">1707</tt> <tt class="py-line"> <tt class="py-name">agreed_keys</tt> <tt class="py-op">=</tt> <tt id="link-412" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-412', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_key_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-413" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-413', '_preferred_keys', 'link-51');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1708"></a><tt class="py-lineno">1708</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_keys</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L1709"></a><tt class="py-lineno">1709</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-414" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-414', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (no acceptable host key)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1710"></a><tt class="py-lineno">1710</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_keys</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1711"></a><tt class="py-lineno">1711</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name" targets="Method paramiko.Transport.get_server_key()=paramiko.Transport-class.html#get_server_key"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-415', 'get_server_key', 'link-415');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1712"></a><tt class="py-lineno">1712</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-416" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-416', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (can\'t match requested host key type)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1713"></a><tt class="py-lineno">1713</tt> <tt class="py-line"> </tt> -<a name="L1714"></a><tt class="py-lineno">1714</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1715"></a><tt class="py-lineno">1715</tt> <tt class="py-line"> <tt class="py-name">agreed_local_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-417" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-417', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-418" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-418', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1716"></a><tt class="py-lineno">1716</tt> <tt class="py-line"> <tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1717"></a><tt class="py-lineno">1717</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-419" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-419', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-420', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1718"></a><tt class="py-lineno">1718</tt> <tt class="py-line"> <tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1719"></a><tt class="py-lineno">1719</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1720"></a><tt class="py-lineno">1720</tt> <tt class="py-line"> <tt class="py-name">agreed_local_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-421" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-421', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1721"></a><tt class="py-lineno">1721</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-422', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1722"></a><tt class="py-lineno">1722</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-423', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> -<a name="L1723"></a><tt class="py-lineno">1723</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-424', '_preferred_ciphers', 'link-49');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1724"></a><tt class="py-lineno">1724</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_ciphers</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_ciphers</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1725"></a><tt class="py-lineno">1725</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-425" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-425', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable ciphers)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1726"></a><tt class="py-lineno">1726</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_ciphers</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1727"></a><tt class="py-lineno">1727</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_ciphers</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1728"></a><tt class="py-lineno">1728</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-426" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-426', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'kex algos:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">kex_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">' server key:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_key_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1715"></a><tt class="py-lineno">1715</tt> <tt class="py-line"> <tt class="py-string">' client encrypt:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1716"></a><tt class="py-lineno">1716</tt> <tt class="py-line"> <tt class="py-string">' server encrypt:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1717"></a><tt class="py-lineno">1717</tt> <tt class="py-line"> <tt class="py-string">' client mac:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_mac_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1718"></a><tt class="py-lineno">1718</tt> <tt class="py-line"> <tt class="py-string">' server mac:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_mac_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1719"></a><tt class="py-lineno">1719</tt> <tt class="py-line"> <tt class="py-string">' client compress:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_compress_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1720"></a><tt class="py-lineno">1720</tt> <tt class="py-line"> <tt class="py-string">' server compress:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_compress_algo_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1721"></a><tt class="py-lineno">1721</tt> <tt class="py-line"> <tt class="py-string">' client lang:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">client_lang_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1722"></a><tt class="py-lineno">1722</tt> <tt class="py-line"> <tt class="py-string">' server lang:'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">server_lang_list</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> \ </tt> +<a name="L1723"></a><tt class="py-lineno">1723</tt> <tt class="py-line"> <tt class="py-string">' kex follows?'</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">kex_follows</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1724"></a><tt class="py-lineno">1724</tt> <tt class="py-line"> </tt> +<a name="L1725"></a><tt class="py-lineno">1725</tt> <tt class="py-line"> <tt class="py-comment"># as a server, we pick the first item in the client's list that we support.</tt> </tt> +<a name="L1726"></a><tt class="py-lineno">1726</tt> <tt class="py-line"> <tt class="py-comment"># as a client, we pick the first item in our list that the server supports.</tt> </tt> +<a name="L1727"></a><tt class="py-lineno">1727</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1728"></a><tt class="py-lineno">1728</tt> <tt class="py-line"> <tt class="py-name">agreed_kex</tt> <tt class="py-op">=</tt> <tt id="link-427" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-427', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-428" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-428', '_preferred_kex', 'link-56');">_preferred_kex</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">kex_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1729"></a><tt class="py-lineno">1729</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1730"></a><tt class="py-lineno">1730</tt> <tt class="py-line"> <tt class="py-name">agreed_kex</tt> <tt class="py-op">=</tt> <tt id="link-429" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-429', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">kex_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="paramiko.Transport._preferred_kex" class="py-name" href="#" onclick="return doclink('link-430', '_preferred_kex', 'link-56');">_preferred_kex</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1731"></a><tt class="py-lineno">1731</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1732"></a><tt class="py-lineno">1732</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-431" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-431', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (no acceptable kex algorithm)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1733"></a><tt class="py-lineno">1733</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="paramiko.Transport._kex_info" class="py-name" href="#" onclick="return doclink('link-432', '_kex_info', 'link-90');">_kex_info</a></tt><tt class="py-op">[</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1734"></a><tt class="py-lineno">1734</tt> <tt class="py-line"> </tt> +<a name="L1735"></a><tt class="py-lineno">1735</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1736"></a><tt class="py-lineno">1736</tt> <tt class="py-line"> <tt class="py-name">available_server_keys</tt> <tt class="py-op">=</tt> <tt id="link-433" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-433', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_key_dict</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="paramiko.HostKeys.keys" class="py-name" href="#" onclick="return doclink('link-434', 'keys', 'link-58');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1737"></a><tt class="py-lineno">1737</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-435', '_preferred_keys', 'link-55');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1738"></a><tt class="py-lineno">1738</tt> <tt class="py-line"> <tt class="py-name">agreed_keys</tt> <tt class="py-op">=</tt> <tt id="link-436" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-436', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">available_server_keys</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_key_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1739"></a><tt class="py-lineno">1739</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1740"></a><tt class="py-lineno">1740</tt> <tt class="py-line"> <tt class="py-name">agreed_keys</tt> <tt class="py-op">=</tt> <tt id="link-437" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-437', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_key_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name"><a title="paramiko.Transport._preferred_keys" class="py-name" href="#" onclick="return doclink('link-438', '_preferred_keys', 'link-55');">_preferred_keys</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1741"></a><tt class="py-lineno">1741</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_keys</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L1742"></a><tt class="py-lineno">1742</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-439" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-439', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (no acceptable host key)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1743"></a><tt class="py-lineno">1743</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_keys</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1744"></a><tt class="py-lineno">1744</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name" targets="Method paramiko.Transport.get_server_key()=paramiko.Transport-class.html#get_server_key"><a title="paramiko.Transport.get_server_key" class="py-name" href="#" onclick="return doclink('link-440', 'get_server_key', 'link-440');">get_server_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1745"></a><tt class="py-lineno">1745</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-441" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-441', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh peer (can\'t match requested host key type)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1746"></a><tt class="py-lineno">1746</tt> <tt class="py-line"> </tt> +<a name="L1747"></a><tt class="py-lineno">1747</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1748"></a><tt class="py-lineno">1748</tt> <tt class="py-line"> <tt class="py-name">agreed_local_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-442" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-442', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-443', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1749"></a><tt class="py-lineno">1749</tt> <tt class="py-line"> <tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1750"></a><tt class="py-lineno">1750</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-444" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-444', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-445', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1751"></a><tt class="py-lineno">1751</tt> <tt class="py-line"> <tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1752"></a><tt class="py-lineno">1752</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1753"></a><tt class="py-lineno">1753</tt> <tt class="py-line"> <tt class="py-name">agreed_local_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-446" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-446', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_encrypt_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1754"></a><tt class="py-lineno">1754</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-447', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1755"></a><tt class="py-lineno">1755</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_ciphers</tt> <tt class="py-op">=</tt> <tt id="link-448" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-448', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_encrypt_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> </tt> +<a name="L1756"></a><tt class="py-lineno">1756</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="paramiko.Transport._preferred_ciphers" class="py-name" href="#" onclick="return doclink('link-449', '_preferred_ciphers', 'link-53');">_preferred_ciphers</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1757"></a><tt class="py-lineno">1757</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_ciphers</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_ciphers</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1758"></a><tt class="py-lineno">1758</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-450" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-450', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable ciphers)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1759"></a><tt class="py-lineno">1759</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_ciphers</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1760"></a><tt class="py-lineno">1760</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_ciphers</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1761"></a><tt class="py-lineno">1761</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-451" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2802,31 +2842,31 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-426', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Ciphers agreed: local=%s, remote=%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1729"></a><tt class="py-lineno">1729</tt> <tt class="py-line"> </tt> -<a name="L1730"></a><tt class="py-lineno">1730</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1731"></a><tt class="py-lineno">1731</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_macs</tt> <tt class="py-op">=</tt> <tt id="link-427" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-427', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-428" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-428', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">client_mac_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1732"></a><tt class="py-lineno">1732</tt> <tt class="py-line"> <tt class="py-name">agreed_local_macs</tt> <tt class="py-op">=</tt> <tt id="link-429" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-429', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-430', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_mac_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1733"></a><tt class="py-lineno">1733</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1734"></a><tt class="py-lineno">1734</tt> <tt class="py-line"> <tt class="py-name">agreed_local_macs</tt> <tt class="py-op">=</tt> <tt id="link-431" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-431', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_mac_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-432', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1735"></a><tt class="py-lineno">1735</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_macs</tt> <tt class="py-op">=</tt> <tt id="link-433" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-433', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_mac_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-434', '_preferred_macs', 'link-50');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1736"></a><tt class="py-lineno">1736</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_macs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_macs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1737"></a><tt class="py-lineno">1737</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-435" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-435', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable macs)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1738"></a><tt class="py-lineno">1738</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_macs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1739"></a><tt class="py-lineno">1739</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_macs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1740"></a><tt class="py-lineno">1740</tt> <tt class="py-line"> </tt> -<a name="L1741"></a><tt class="py-lineno">1741</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1742"></a><tt class="py-lineno">1742</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_compression</tt> <tt class="py-op">=</tt> <tt id="link-436" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-436', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-437', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">client_compress_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1743"></a><tt class="py-lineno">1743</tt> <tt class="py-line"> <tt class="py-name">agreed_local_compression</tt> <tt class="py-op">=</tt> <tt id="link-438" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-438', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-439', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_compress_algo_list</tt><tt class="py-op">)</tt> </tt> -<a name="L1744"></a><tt class="py-lineno">1744</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1745"></a><tt class="py-lineno">1745</tt> <tt class="py-line"> <tt class="py-name">agreed_local_compression</tt> <tt class="py-op">=</tt> <tt id="link-440" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-440', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_compress_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-441', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1746"></a><tt class="py-lineno">1746</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_compression</tt> <tt class="py-op">=</tt> <tt id="link-442" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-442', 'filter', 'link-55');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_compress_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-443', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> -<a name="L1747"></a><tt class="py-lineno">1747</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_compression</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_compression</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1748"></a><tt class="py-lineno">1748</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-444" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-444', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable compression) %r %r %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">agreed_local_compression</tt><tt class="py-op">,</tt> <tt class="py-name">agreed_remote_compression</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-445', '_preferred_compression', 'link-53');">_preferred_compression</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1749"></a><tt class="py-lineno">1749</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_compression</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1750"></a><tt class="py-lineno">1750</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_compression</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1751"></a><tt class="py-lineno">1751</tt> <tt class="py-line"> </tt> -<a name="L1752"></a><tt class="py-lineno">1752</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-446" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-451', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Ciphers agreed: local=%s, remote=%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1762"></a><tt class="py-lineno">1762</tt> <tt class="py-line"> </tt> +<a name="L1763"></a><tt class="py-lineno">1763</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1764"></a><tt class="py-lineno">1764</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_macs</tt> <tt class="py-op">=</tt> <tt id="link-452" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-452', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-453', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">client_mac_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1765"></a><tt class="py-lineno">1765</tt> <tt class="py-line"> <tt class="py-name">agreed_local_macs</tt> <tt class="py-op">=</tt> <tt id="link-454" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-454', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-455', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_mac_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1766"></a><tt class="py-lineno">1766</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1767"></a><tt class="py-lineno">1767</tt> <tt class="py-line"> <tt class="py-name">agreed_local_macs</tt> <tt class="py-op">=</tt> <tt id="link-456" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-456', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_mac_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-457', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1768"></a><tt class="py-lineno">1768</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_macs</tt> <tt class="py-op">=</tt> <tt id="link-458" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-458', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_mac_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="paramiko.Transport._preferred_macs" class="py-name" href="#" onclick="return doclink('link-459', '_preferred_macs', 'link-54');">_preferred_macs</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1769"></a><tt class="py-lineno">1769</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_macs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_macs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1770"></a><tt class="py-lineno">1770</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-460" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-460', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable macs)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1771"></a><tt class="py-lineno">1771</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_macs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1772"></a><tt class="py-lineno">1772</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_macs</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1773"></a><tt class="py-lineno">1773</tt> <tt class="py-line"> </tt> +<a name="L1774"></a><tt class="py-lineno">1774</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1775"></a><tt class="py-lineno">1775</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_compression</tt> <tt class="py-op">=</tt> <tt id="link-461" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-461', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-462', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">client_compress_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1776"></a><tt class="py-lineno">1776</tt> <tt class="py-line"> <tt class="py-name">agreed_local_compression</tt> <tt class="py-op">=</tt> <tt id="link-463" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-463', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-464', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">server_compress_algo_list</tt><tt class="py-op">)</tt> </tt> +<a name="L1777"></a><tt class="py-lineno">1777</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1778"></a><tt class="py-lineno">1778</tt> <tt class="py-line"> <tt class="py-name">agreed_local_compression</tt> <tt class="py-op">=</tt> <tt id="link-465" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-465', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">client_compress_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-466" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-466', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1779"></a><tt class="py-lineno">1779</tt> <tt class="py-line"> <tt class="py-name">agreed_remote_compression</tt> <tt class="py-op">=</tt> <tt id="link-467" class="py-name"><a title="paramiko.util.PFilter.filter" class="py-name" href="#" onclick="return doclink('link-467', 'filter', 'link-59');">filter</a></tt><tt class="py-op">(</tt><tt class="py-name">server_compress_algo_list</tt><tt class="py-op">.</tt><tt class="py-name">__contains__</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-468', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">)</tt> </tt> +<a name="L1780"></a><tt class="py-lineno">1780</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_local_compression</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">agreed_remote_compression</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1781"></a><tt class="py-lineno">1781</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-469" class="py-name"><a title="paramiko.SSHException" class="py-name" href="#" onclick="return doclink('link-469', 'SSHException', 'link-42');">SSHException</a></tt><tt class="py-op">(</tt><tt class="py-string">'Incompatible ssh server (no acceptable compression) %r %r %r'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">agreed_local_compression</tt><tt class="py-op">,</tt> <tt class="py-name">agreed_remote_compression</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-470" class="py-name"><a title="paramiko.Transport._preferred_compression" class="py-name" href="#" onclick="return doclink('link-470', '_preferred_compression', 'link-57');">_preferred_compression</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1782"></a><tt class="py-lineno">1782</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_local_compression</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1783"></a><tt class="py-lineno">1783</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">=</tt> <tt class="py-name">agreed_remote_compression</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1784"></a><tt class="py-lineno">1784</tt> <tt class="py-line"> </tt> +<a name="L1785"></a><tt class="py-lineno">1785</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-471" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2847,16 +2887,16 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-446', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'using kex %s; server key type %s; cipher: local %s, remote %s; mac: local %s, remote %s; compression: local %s, remote %s'</tt> <tt class="py-op">%</tt> </tt> -<a name="L1753"></a><tt class="py-lineno">1753</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">,</tt> </tt> -<a name="L1754"></a><tt class="py-lineno">1754</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1755"></a><tt class="py-lineno">1755</tt> <tt class="py-line"> </tt> -<a name="L1756"></a><tt class="py-lineno">1756</tt> <tt class="py-line"> <tt class="py-comment"># save for computing hash later...</tt> </tt> -<a name="L1757"></a><tt class="py-lineno">1757</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># now wait! openssh has a bug (and others might too) where there are</tt> </tt> -<a name="L1758"></a><tt class="py-lineno">1758</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># actually some extra bytes (one NUL byte in openssh's case) added to</tt> </tt> -<a name="L1759"></a><tt class="py-lineno">1759</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># the end of the packet but not parsed. turns out we need to throw</tt> </tt> -<a name="L1760"></a><tt class="py-lineno">1760</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># away those bytes because they aren't part of the hash.</tt> </tt> -<a name="L1761"></a><tt class="py-lineno">1761</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-447" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-471', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'using kex %s; server key type %s; cipher: local %s, remote %s; mac: local %s, remote %s; compression: local %s, remote %s'</tt> <tt class="py-op">%</tt> </tt> +<a name="L1786"></a><tt class="py-lineno">1786</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">agreed_kex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host_key_type</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">,</tt> </tt> +<a name="L1787"></a><tt class="py-lineno">1787</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1788"></a><tt class="py-lineno">1788</tt> <tt class="py-line"> </tt> +<a name="L1789"></a><tt class="py-lineno">1789</tt> <tt class="py-line"> <tt class="py-comment"># save for computing hash later...</tt> </tt> +<a name="L1790"></a><tt class="py-lineno">1790</tt> <tt class="py-line"> <tt class="py-comment"># now wait! openssh has a bug (and others might too) where there are</tt> </tt> +<a name="L1791"></a><tt class="py-lineno">1791</tt> <tt class="py-line"> <tt class="py-comment"># actually some extra bytes (one NUL byte in openssh's case) added to</tt> </tt> +<a name="L1792"></a><tt class="py-lineno">1792</tt> <tt class="py-line"> <tt class="py-comment"># the end of the packet but not parsed. turns out we need to throw</tt> </tt> +<a name="L1793"></a><tt class="py-lineno">1793</tt> <tt class="py-line"> <tt class="py-comment"># away those bytes because they aren't part of the hash.</tt> </tt> +<a name="L1794"></a><tt class="py-lineno">1794</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-472" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT paramiko.channel.MSG_KEXINIT paramiko.client.MSG_KEXINIT paramiko.common.MSG_KEXINIT @@ -2876,30 +2916,30 @@ paramiko.sftp_handle.MSG_KEXINIT paramiko.sftp_server.MSG_KEXINIT paramiko.sftp_si.MSG_KEXINIT paramiko.transport.MSG_KEXINIT -paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-447', 'MSG_KEXINIT', 'link-288');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-448" class="py-name" targets="Method paramiko.Message.get_so_far()=paramiko.Message-class.html#get_so_far"><a title="paramiko.Message.get_so_far" class="py-name" href="#" onclick="return doclink('link-448', 'get_so_far', 'link-448');">get_so_far</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1762"></a><tt class="py-lineno">1762</tt> <tt class="py-line"> </tt> -<a name="Transport._activate_inbound"></a><div id="Transport._activate_inbound-def"><a name="L1763"></a><tt class="py-lineno">1763</tt> <a class="py-toggle" href="#" id="Transport._activate_inbound-toggle" onclick="return toggle('Transport._activate_inbound');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_activate_inbound">_activate_inbound</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._activate_inbound-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._activate_inbound-expanded"><a name="L1764"></a><tt class="py-lineno">1764</tt> <tt class="py-line"> <tt class="py-docstring">"switch on newly negotiated encryption parameters for inbound traffic"</tt> </tt> -<a name="L1765"></a><tt class="py-lineno">1765</tt> <tt class="py-line"> <tt class="py-name">block_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-449', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'block-size'</tt><tt class="py-op">]</tt> </tt> -<a name="L1766"></a><tt class="py-lineno">1766</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1767"></a><tt class="py-lineno">1767</tt> <tt class="py-line"> <tt class="py-name">IV_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1768"></a><tt class="py-lineno">1768</tt> <tt class="py-line"> <tt class="py-name">key_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-450', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L1769"></a><tt class="py-lineno">1769</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1770"></a><tt class="py-lineno">1770</tt> <tt class="py-line"> <tt class="py-name">IV_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'B'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1771"></a><tt class="py-lineno">1771</tt> <tt class="py-line"> <tt class="py-name">key_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'D'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-451', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L1772"></a><tt class="py-lineno">1772</tt> <tt class="py-line"> <tt class="py-name">engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cipher</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">key_in</tt><tt class="py-op">,</tt> <tt class="py-name">IV_in</tt><tt class="py-op">)</tt> </tt> -<a name="L1773"></a><tt class="py-lineno">1773</tt> <tt class="py-line"> <tt class="py-name">mac_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-452', '_mac_info', 'link-82');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'size'</tt><tt class="py-op">]</tt> </tt> -<a name="L1774"></a><tt class="py-lineno">1774</tt> <tt class="py-line"> <tt class="py-name">mac_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-453', '_mac_info', 'link-82');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt> </tt> -<a name="L1775"></a><tt class="py-lineno">1775</tt> <tt class="py-line"> <tt class="py-comment"># initial mac keys are done in the hash's natural size (not the potentially truncated</tt> </tt> -<a name="L1776"></a><tt class="py-lineno">1776</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># transmission size)</tt> </tt> -<a name="L1777"></a><tt class="py-lineno">1777</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1778"></a><tt class="py-lineno">1778</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'E'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1779"></a><tt class="py-lineno">1779</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1780"></a><tt class="py-lineno">1780</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'F'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1781"></a><tt class="py-lineno">1781</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_cipher</tt><tt class="py-op">(</tt><tt class="py-name">engine</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">,</tt> <tt class="py-name">mac_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_key</tt><tt class="py-op">)</tt> </tt> -<a name="L1782"></a><tt class="py-lineno">1782</tt> <tt class="py-line"> <tt class="py-name">compress_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-454', '_compression_info', 'link-89');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L1783"></a><tt class="py-lineno">1783</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">compress_in</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">!=</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1784"></a><tt class="py-lineno">1784</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-455" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-472', 'MSG_KEXINIT', 'link-313');">MSG_KEXINIT</a></tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-473" class="py-name" targets="Method paramiko.Message.get_so_far()=paramiko.Message-class.html#get_so_far"><a title="paramiko.Message.get_so_far" class="py-name" href="#" onclick="return doclink('link-473', 'get_so_far', 'link-473');">get_so_far</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1795"></a><tt class="py-lineno">1795</tt> <tt class="py-line"> </tt> +<a name="Transport._activate_inbound"></a><div id="Transport._activate_inbound-def"><a name="L1796"></a><tt class="py-lineno">1796</tt> <a class="py-toggle" href="#" id="Transport._activate_inbound-toggle" onclick="return toggle('Transport._activate_inbound');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_activate_inbound">_activate_inbound</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._activate_inbound-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._activate_inbound-expanded"><a name="L1797"></a><tt class="py-lineno">1797</tt> <tt class="py-line"> <tt class="py-docstring">"switch on newly negotiated encryption parameters for inbound traffic"</tt> </tt> +<a name="L1798"></a><tt class="py-lineno">1798</tt> <tt class="py-line"> <tt class="py-name">block_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-474', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'block-size'</tt><tt class="py-op">]</tt> </tt> +<a name="L1799"></a><tt class="py-lineno">1799</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1800"></a><tt class="py-lineno">1800</tt> <tt class="py-line"> <tt class="py-name">IV_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1801"></a><tt class="py-lineno">1801</tt> <tt class="py-line"> <tt class="py-name">key_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-475" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-475', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L1802"></a><tt class="py-lineno">1802</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1803"></a><tt class="py-lineno">1803</tt> <tt class="py-line"> <tt class="py-name">IV_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'B'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1804"></a><tt class="py-lineno">1804</tt> <tt class="py-line"> <tt class="py-name">key_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'D'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-476', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L1805"></a><tt class="py-lineno">1805</tt> <tt class="py-line"> <tt class="py-name">engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cipher</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">key_in</tt><tt class="py-op">,</tt> <tt class="py-name">IV_in</tt><tt class="py-op">)</tt> </tt> +<a name="L1806"></a><tt class="py-lineno">1806</tt> <tt class="py-line"> <tt class="py-name">mac_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-477" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-477', '_mac_info', 'link-86');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'size'</tt><tt class="py-op">]</tt> </tt> +<a name="L1807"></a><tt class="py-lineno">1807</tt> <tt class="py-line"> <tt class="py-name">mac_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-478', '_mac_info', 'link-86');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt> </tt> +<a name="L1808"></a><tt class="py-lineno">1808</tt> <tt class="py-line"> <tt class="py-comment"># initial mac keys are done in the hash's natural size (not the potentially truncated</tt> </tt> +<a name="L1809"></a><tt class="py-lineno">1809</tt> <tt class="py-line"> <tt class="py-comment"># transmission size)</tt> </tt> +<a name="L1810"></a><tt class="py-lineno">1810</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1811"></a><tt class="py-lineno">1811</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'E'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1812"></a><tt class="py-lineno">1812</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1813"></a><tt class="py-lineno">1813</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'F'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1814"></a><tt class="py-lineno">1814</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_cipher</tt><tt class="py-op">(</tt><tt class="py-name">engine</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">,</tt> <tt class="py-name">mac_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_key</tt><tt class="py-op">)</tt> </tt> +<a name="L1815"></a><tt class="py-lineno">1815</tt> <tt class="py-line"> <tt class="py-name">compress_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-479', '_compression_info', 'link-93');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> +<a name="L1816"></a><tt class="py-lineno">1816</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">compress_in</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">!=</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1817"></a><tt class="py-lineno">1817</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-480" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2920,13 +2960,13 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-455', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on inbound compression ...'</tt><tt class="py-op">)</tt> </tt> -<a name="L1785"></a><tt class="py-lineno">1785</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_in</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1786"></a><tt class="py-lineno">1786</tt> <tt class="py-line"> </tt> -<a name="Transport._activate_outbound"></a><div id="Transport._activate_outbound-def"><a name="L1787"></a><tt class="py-lineno">1787</tt> <a class="py-toggle" href="#" id="Transport._activate_outbound-toggle" onclick="return toggle('Transport._activate_outbound');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_activate_outbound">_activate_outbound</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._activate_outbound-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._activate_outbound-expanded"><a name="L1788"></a><tt class="py-lineno">1788</tt> <tt class="py-line"> <tt class="py-docstring">"switch on newly negotiated encryption parameters for outbound traffic"</tt> </tt> -<a name="L1789"></a><tt class="py-lineno">1789</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-456" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-456', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1790"></a><tt class="py-lineno">1790</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-457" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-457', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-458" class="py-name" targets="Variable paramiko.auth_handler.MSG_NEWKEYS=paramiko.auth_handler-module.html#MSG_NEWKEYS,Variable paramiko.channel.MSG_NEWKEYS=paramiko.channel-module.html#MSG_NEWKEYS,Variable paramiko.client.MSG_NEWKEYS=paramiko.client-module.html#MSG_NEWKEYS,Variable paramiko.common.MSG_NEWKEYS=paramiko.common-module.html#MSG_NEWKEYS,Variable paramiko.dsskey.MSG_NEWKEYS=paramiko.dsskey-module.html#MSG_NEWKEYS,Variable paramiko.hostkeys.MSG_NEWKEYS=paramiko.hostkeys-module.html#MSG_NEWKEYS,Variable paramiko.kex_gex.MSG_NEWKEYS=paramiko.kex_gex-module.html#MSG_NEWKEYS,Variable paramiko.kex_group1.MSG_NEWKEYS=paramiko.kex_group1-module.html#MSG_NEWKEYS,Variable paramiko.packet.MSG_NEWKEYS=paramiko.packet-module.html#MSG_NEWKEYS,Variable paramiko.pkey.MSG_NEWKEYS=paramiko.pkey-module.html#MSG_NEWKEYS,Variable paramiko.rsakey.MSG_NEWKEYS=paramiko.rsakey-module.html#MSG_NEWKEYS,Variable paramiko.server.MSG_NEWKEYS=paramiko.server-module.html#MSG_NEWKEYS,Variable paramiko.sftp.MSG_NEWKEYS=paramiko.sftp-module.html#MSG_NEWKEYS,Variable paramiko.sftp_attr.MSG_NEWKEYS=paramiko.sftp_attr-module.html#MSG_NEWKEYS,Variable paramiko.sftp_client.MSG_NEWKEYS=paramiko.sftp_client-module.html#MSG_NEWKEYS,Variable paramiko.sftp_file.MSG_NEWKEYS=paramiko.sftp_file-module.html#MSG_NEWKEYS,Variable paramiko.sftp_handle.MSG_NEWKEYS=paramiko.sftp_handle-module.html#MSG_NEWKEYS,Variable paramiko.sftp_server.MSG_NEWKEYS=paramiko.sftp_server-module.html#MSG_NEWKEYS,Variable paramiko.sftp_si.MSG_NEWKEYS=paramiko.sftp_si-module.html#MSG_NEWKEYS,Variable paramiko.transport.MSG_NEWKEYS=paramiko.transport-module.html#MSG_NEWKEYS,Variable paramiko.util.MSG_NEWKEYS=paramiko.util-module.html#MSG_NEWKEYS"><a title="paramiko.auth_handler.MSG_NEWKEYS +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-480', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on inbound compression ...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1818"></a><tt class="py-lineno">1818</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_in</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1819"></a><tt class="py-lineno">1819</tt> <tt class="py-line"> </tt> +<a name="Transport._activate_outbound"></a><div id="Transport._activate_outbound-def"><a name="L1820"></a><tt class="py-lineno">1820</tt> <a class="py-toggle" href="#" id="Transport._activate_outbound-toggle" onclick="return toggle('Transport._activate_outbound');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_activate_outbound">_activate_outbound</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._activate_outbound-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._activate_outbound-expanded"><a name="L1821"></a><tt class="py-lineno">1821</tt> <tt class="py-line"> <tt class="py-docstring">"switch on newly negotiated encryption parameters for outbound traffic"</tt> </tt> +<a name="L1822"></a><tt class="py-lineno">1822</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-481" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-481', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1823"></a><tt class="py-lineno">1823</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-482', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-483" class="py-name" targets="Variable paramiko.auth_handler.MSG_NEWKEYS=paramiko.auth_handler-module.html#MSG_NEWKEYS,Variable paramiko.channel.MSG_NEWKEYS=paramiko.channel-module.html#MSG_NEWKEYS,Variable paramiko.client.MSG_NEWKEYS=paramiko.client-module.html#MSG_NEWKEYS,Variable paramiko.common.MSG_NEWKEYS=paramiko.common-module.html#MSG_NEWKEYS,Variable paramiko.dsskey.MSG_NEWKEYS=paramiko.dsskey-module.html#MSG_NEWKEYS,Variable paramiko.hostkeys.MSG_NEWKEYS=paramiko.hostkeys-module.html#MSG_NEWKEYS,Variable paramiko.kex_gex.MSG_NEWKEYS=paramiko.kex_gex-module.html#MSG_NEWKEYS,Variable paramiko.kex_group1.MSG_NEWKEYS=paramiko.kex_group1-module.html#MSG_NEWKEYS,Variable paramiko.packet.MSG_NEWKEYS=paramiko.packet-module.html#MSG_NEWKEYS,Variable paramiko.pkey.MSG_NEWKEYS=paramiko.pkey-module.html#MSG_NEWKEYS,Variable paramiko.rsakey.MSG_NEWKEYS=paramiko.rsakey-module.html#MSG_NEWKEYS,Variable paramiko.server.MSG_NEWKEYS=paramiko.server-module.html#MSG_NEWKEYS,Variable paramiko.sftp.MSG_NEWKEYS=paramiko.sftp-module.html#MSG_NEWKEYS,Variable paramiko.sftp_attr.MSG_NEWKEYS=paramiko.sftp_attr-module.html#MSG_NEWKEYS,Variable paramiko.sftp_client.MSG_NEWKEYS=paramiko.sftp_client-module.html#MSG_NEWKEYS,Variable paramiko.sftp_file.MSG_NEWKEYS=paramiko.sftp_file-module.html#MSG_NEWKEYS,Variable paramiko.sftp_handle.MSG_NEWKEYS=paramiko.sftp_handle-module.html#MSG_NEWKEYS,Variable paramiko.sftp_server.MSG_NEWKEYS=paramiko.sftp_server-module.html#MSG_NEWKEYS,Variable paramiko.sftp_si.MSG_NEWKEYS=paramiko.sftp_si-module.html#MSG_NEWKEYS,Variable paramiko.transport.MSG_NEWKEYS=paramiko.transport-module.html#MSG_NEWKEYS,Variable paramiko.util.MSG_NEWKEYS=paramiko.util-module.html#MSG_NEWKEYS"><a title="paramiko.auth_handler.MSG_NEWKEYS paramiko.channel.MSG_NEWKEYS paramiko.client.MSG_NEWKEYS paramiko.common.MSG_NEWKEYS @@ -2946,28 +2986,28 @@ paramiko.sftp_handle.MSG_NEWKEYS paramiko.sftp_server.MSG_NEWKEYS paramiko.sftp_si.MSG_NEWKEYS paramiko.transport.MSG_NEWKEYS -paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-458', 'MSG_NEWKEYS', 'link-458');">MSG_NEWKEYS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1791"></a><tt class="py-lineno">1791</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1792"></a><tt class="py-lineno">1792</tt> <tt class="py-line"> <tt class="py-name">block_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-459', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'block-size'</tt><tt class="py-op">]</tt> </tt> -<a name="L1793"></a><tt class="py-lineno">1793</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1794"></a><tt class="py-lineno">1794</tt> <tt class="py-line"> <tt class="py-name">IV_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'B'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1795"></a><tt class="py-lineno">1795</tt> <tt class="py-line"> <tt class="py-name">key_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'D'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-460', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L1796"></a><tt class="py-lineno">1796</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1797"></a><tt class="py-lineno">1797</tt> <tt class="py-line"> <tt class="py-name">IV_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1798"></a><tt class="py-lineno">1798</tt> <tt class="py-line"> <tt class="py-name">key_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-461', '_cipher_info', 'link-81');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L1799"></a><tt class="py-lineno">1799</tt> <tt class="py-line"> <tt class="py-name">engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cipher</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">key_out</tt><tt class="py-op">,</tt> <tt class="py-name">IV_out</tt><tt class="py-op">)</tt> </tt> -<a name="L1800"></a><tt class="py-lineno">1800</tt> <tt class="py-line"> <tt class="py-name">mac_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-462" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-462', '_mac_info', 'link-82');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'size'</tt><tt class="py-op">]</tt> </tt> -<a name="L1801"></a><tt class="py-lineno">1801</tt> <tt class="py-line"> <tt class="py-name">mac_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-463" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-463', '_mac_info', 'link-82');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt> </tt> -<a name="L1802"></a><tt class="py-lineno">1802</tt> <tt class="py-line"> <tt class="py-comment"># initial mac keys are done in the hash's natural size (not the potentially truncated</tt> </tt> -<a name="L1803"></a><tt class="py-lineno">1803</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># transmission size)</tt> </tt> -<a name="L1804"></a><tt class="py-lineno">1804</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1805"></a><tt class="py-lineno">1805</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'F'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1806"></a><tt class="py-lineno">1806</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1807"></a><tt class="py-lineno">1807</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'E'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1808"></a><tt class="py-lineno">1808</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_cipher</tt><tt class="py-op">(</tt><tt class="py-name">engine</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">,</tt> <tt class="py-name">mac_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_key</tt><tt class="py-op">)</tt> </tt> -<a name="L1809"></a><tt class="py-lineno">1809</tt> <tt class="py-line"> <tt class="py-name">compress_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-464" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-464', '_compression_info', 'link-89');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1810"></a><tt class="py-lineno">1810</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">compress_out</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">!=</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1811"></a><tt class="py-lineno">1811</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-465" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-483', 'MSG_NEWKEYS', 'link-483');">MSG_NEWKEYS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1824"></a><tt class="py-lineno">1824</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1825"></a><tt class="py-lineno">1825</tt> <tt class="py-line"> <tt class="py-name">block_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-484', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'block-size'</tt><tt class="py-op">]</tt> </tt> +<a name="L1826"></a><tt class="py-lineno">1826</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1827"></a><tt class="py-lineno">1827</tt> <tt class="py-line"> <tt class="py-name">IV_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'B'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1828"></a><tt class="py-lineno">1828</tt> <tt class="py-line"> <tt class="py-name">key_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'D'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-485', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L1829"></a><tt class="py-lineno">1829</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1830"></a><tt class="py-lineno">1830</tt> <tt class="py-line"> <tt class="py-name">IV_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1831"></a><tt class="py-lineno">1831</tt> <tt class="py-line"> <tt class="py-name">key_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name"><a title="paramiko.Transport._cipher_info" class="py-name" href="#" onclick="return doclink('link-486', '_cipher_info', 'link-85');">_cipher_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'key-size'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L1832"></a><tt class="py-lineno">1832</tt> <tt class="py-line"> <tt class="py-name">engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_cipher</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_cipher</tt><tt class="py-op">,</tt> <tt class="py-name">key_out</tt><tt class="py-op">,</tt> <tt class="py-name">IV_out</tt><tt class="py-op">)</tt> </tt> +<a name="L1833"></a><tt class="py-lineno">1833</tt> <tt class="py-line"> <tt class="py-name">mac_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-487', '_mac_info', 'link-86');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'size'</tt><tt class="py-op">]</tt> </tt> +<a name="L1834"></a><tt class="py-lineno">1834</tt> <tt class="py-line"> <tt class="py-name">mac_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-488" class="py-name"><a title="paramiko.Transport._mac_info" class="py-name" href="#" onclick="return doclink('link-488', '_mac_info', 'link-86');">_mac_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_mac</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'class'</tt><tt class="py-op">]</tt> </tt> +<a name="L1835"></a><tt class="py-lineno">1835</tt> <tt class="py-line"> <tt class="py-comment"># initial mac keys are done in the hash's natural size (not the potentially truncated</tt> </tt> +<a name="L1836"></a><tt class="py-lineno">1836</tt> <tt class="py-line"> <tt class="py-comment"># transmission size)</tt> </tt> +<a name="L1837"></a><tt class="py-lineno">1837</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1838"></a><tt class="py-lineno">1838</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'F'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1839"></a><tt class="py-lineno">1839</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1840"></a><tt class="py-lineno">1840</tt> <tt class="py-line"> <tt class="py-name">mac_key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_key</tt><tt class="py-op">(</tt><tt class="py-string">'E'</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">.</tt><tt class="py-name">digest_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1841"></a><tt class="py-lineno">1841</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_cipher</tt><tt class="py-op">(</tt><tt class="py-name">engine</tt><tt class="py-op">,</tt> <tt class="py-name">block_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_engine</tt><tt class="py-op">,</tt> <tt class="py-name">mac_size</tt><tt class="py-op">,</tt> <tt class="py-name">mac_key</tt><tt class="py-op">)</tt> </tt> +<a name="L1842"></a><tt class="py-lineno">1842</tt> <tt class="py-line"> <tt class="py-name">compress_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-489', '_compression_info', 'link-93');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1843"></a><tt class="py-lineno">1843</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">compress_out</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">!=</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1844"></a><tt class="py-lineno">1844</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-490" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -2988,12 +3028,12 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-465', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on outbound compression ...'</tt><tt class="py-op">)</tt> </tt> -<a name="L1812"></a><tt class="py-lineno">1812</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_out</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1813"></a><tt class="py-lineno">1813</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1814"></a><tt class="py-lineno">1814</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1815"></a><tt class="py-lineno">1815</tt> <tt class="py-line"> <tt class="py-comment"># we always expect to receive NEWKEYS now</tt> </tt> -<a name="L1816"></a><tt class="py-lineno">1816</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-466" class="py-name"><a title="paramiko.auth_handler.MSG_NEWKEYS +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-490', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on outbound compression ...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1845"></a><tt class="py-lineno">1845</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_out</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1846"></a><tt class="py-lineno">1846</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1847"></a><tt class="py-lineno">1847</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1848"></a><tt class="py-lineno">1848</tt> <tt class="py-line"> <tt class="py-comment"># we always expect to receive NEWKEYS now</tt> </tt> +<a name="L1849"></a><tt class="py-lineno">1849</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expect_packet</tt><tt class="py-op">(</tt><tt id="link-491" class="py-name"><a title="paramiko.auth_handler.MSG_NEWKEYS paramiko.channel.MSG_NEWKEYS paramiko.client.MSG_NEWKEYS paramiko.common.MSG_NEWKEYS @@ -3013,14 +3053,14 @@ paramiko.sftp_handle.MSG_NEWKEYS paramiko.sftp_server.MSG_NEWKEYS paramiko.sftp_si.MSG_NEWKEYS paramiko.transport.MSG_NEWKEYS -paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-466', 'MSG_NEWKEYS', 'link-458');">MSG_NEWKEYS</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L1817"></a><tt class="py-lineno">1817</tt> <tt class="py-line"> </tt> -<a name="Transport._auth_trigger"></a><div id="Transport._auth_trigger-def"><a name="L1818"></a><tt class="py-lineno">1818</tt> <a class="py-toggle" href="#" id="Transport._auth_trigger-toggle" onclick="return toggle('Transport._auth_trigger');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_auth_trigger">_auth_trigger</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._auth_trigger-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._auth_trigger-expanded"><a name="L1819"></a><tt class="py-lineno">1819</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1820"></a><tt class="py-lineno">1820</tt> <tt class="py-line"> <tt class="py-comment"># delayed initiation of compression</tt> </tt> -<a name="L1821"></a><tt class="py-lineno">1821</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">==</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> </tt> -<a name="L1822"></a><tt class="py-lineno">1822</tt> <tt class="py-line"> <tt class="py-name">compress_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-467', '_compression_info', 'link-89');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L1823"></a><tt class="py-lineno">1823</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-468" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-491', 'MSG_NEWKEYS', 'link-483');">MSG_NEWKEYS</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L1850"></a><tt class="py-lineno">1850</tt> <tt class="py-line"> </tt> +<a name="Transport._auth_trigger"></a><div id="Transport._auth_trigger-def"><a name="L1851"></a><tt class="py-lineno">1851</tt> <a class="py-toggle" href="#" id="Transport._auth_trigger-toggle" onclick="return toggle('Transport._auth_trigger');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_auth_trigger">_auth_trigger</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._auth_trigger-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._auth_trigger-expanded"><a name="L1852"></a><tt class="py-lineno">1852</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticated</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1853"></a><tt class="py-lineno">1853</tt> <tt class="py-line"> <tt class="py-comment"># delayed initiation of compression</tt> </tt> +<a name="L1854"></a><tt class="py-lineno">1854</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt> <tt class="py-op">==</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> </tt> +<a name="L1855"></a><tt class="py-lineno">1855</tt> <tt class="py-line"> <tt class="py-name">compress_out</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-492" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-492', '_compression_info', 'link-93');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L1856"></a><tt class="py-lineno">1856</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-493" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3041,11 +3081,11 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-468', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on outbound compression ...'</tt><tt class="py-op">)</tt> </tt> -<a name="L1824"></a><tt class="py-lineno">1824</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_out</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1825"></a><tt class="py-lineno">1825</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">==</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> </tt> -<a name="L1826"></a><tt class="py-lineno">1826</tt> <tt class="py-line"> <tt class="py-name">compress_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-469" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-469', '_compression_info', 'link-89');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L1827"></a><tt class="py-lineno">1827</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-470" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-493', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on outbound compression ...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1857"></a><tt class="py-lineno">1857</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_outbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_out</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1858"></a><tt class="py-lineno">1858</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt> <tt class="py-op">==</tt> <tt class="py-string">'zlib@openssh.com'</tt><tt class="py-op">:</tt> </tt> +<a name="L1859"></a><tt class="py-lineno">1859</tt> <tt class="py-line"> <tt class="py-name">compress_in</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name"><a title="paramiko.Transport._compression_info" class="py-name" href="#" onclick="return doclink('link-494', '_compression_info', 'link-93');">_compression_info</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_compression</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> +<a name="L1860"></a><tt class="py-lineno">1860</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-495" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3066,11 +3106,11 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-470', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on inbound compression ...'</tt><tt class="py-op">)</tt> </tt> -<a name="L1828"></a><tt class="py-lineno">1828</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_in</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1829"></a><tt class="py-lineno">1829</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_newkeys"></a><div id="Transport._parse_newkeys-def"><a name="L1830"></a><tt class="py-lineno">1830</tt> <a class="py-toggle" href="#" id="Transport._parse_newkeys-toggle" onclick="return toggle('Transport._parse_newkeys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_newkeys">_parse_newkeys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_newkeys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_newkeys-expanded"><a name="L1831"></a><tt class="py-lineno">1831</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-471" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-495', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switching on inbound compression ...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1861"></a><tt class="py-lineno">1861</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">set_inbound_compressor</tt><tt class="py-op">(</tt><tt class="py-name">compress_in</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1862"></a><tt class="py-lineno">1862</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_newkeys"></a><div id="Transport._parse_newkeys-def"><a name="L1863"></a><tt class="py-lineno">1863</tt> <a class="py-toggle" href="#" id="Transport._parse_newkeys-toggle" onclick="return toggle('Transport._parse_newkeys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_newkeys">_parse_newkeys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_newkeys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_newkeys-expanded"><a name="L1864"></a><tt class="py-lineno">1864</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3091,39 +3131,39 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-471', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switch to new keys ...'</tt><tt class="py-op">)</tt> </tt> -<a name="L1832"></a><tt class="py-lineno">1832</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_activate_inbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1833"></a><tt class="py-lineno">1833</tt> <tt class="py-line"> <tt class="py-comment"># can also free a bunch of stuff here</tt> </tt> -<a name="L1834"></a><tt class="py-lineno">1834</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L1835"></a><tt class="py-lineno">1835</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L1836"></a><tt class="py-lineno">1836</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L1837"></a><tt class="py-lineno">1837</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-472" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-472', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1838"></a><tt class="py-lineno">1838</tt> <tt class="py-line"> <tt class="py-comment"># create auth handler for server mode</tt> </tt> -<a name="L1839"></a><tt class="py-lineno">1839</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-473" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-473', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L1840"></a><tt class="py-lineno">1840</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">:</tt> </tt> -<a name="L1841"></a><tt class="py-lineno">1841</tt> <tt class="py-line"> <tt class="py-comment"># this was the first key exchange</tt> </tt> -<a name="L1842"></a><tt class="py-lineno">1842</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1843"></a><tt class="py-lineno">1843</tt> <tt class="py-line"> <tt class="py-comment"># send an event?</tt> </tt> -<a name="L1844"></a><tt class="py-lineno">1844</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1845"></a><tt class="py-lineno">1845</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-496', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Switch to new keys ...'</tt><tt class="py-op">)</tt> </tt> +<a name="L1865"></a><tt class="py-lineno">1865</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_activate_inbound</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1866"></a><tt class="py-lineno">1866</tt> <tt class="py-line"> <tt class="py-comment"># can also free a bunch of stuff here</tt> </tt> +<a name="L1867"></a><tt class="py-lineno">1867</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">local_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">remote_kex_init</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L1868"></a><tt class="py-lineno">1868</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">K</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L1869"></a><tt class="py-lineno">1869</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kex_engine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L1870"></a><tt class="py-lineno">1870</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-497', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1871"></a><tt class="py-lineno">1871</tt> <tt class="py-line"> <tt class="py-comment"># create auth handler for server mode</tt> </tt> +<a name="L1872"></a><tt class="py-lineno">1872</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-498" class="py-name"><a title="paramiko.auth_handler" class="py-name" href="#" onclick="return doclink('link-498', 'auth_handler', 'link-3');">auth_handler</a></tt> <tt class="py-op">=</tt> <tt class="py-name">AuthHandler</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L1873"></a><tt class="py-lineno">1873</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt><tt class="py-op">:</tt> </tt> +<a name="L1874"></a><tt class="py-lineno">1874</tt> <tt class="py-line"> <tt class="py-comment"># this was the first key exchange</tt> </tt> +<a name="L1875"></a><tt class="py-lineno">1875</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">initial_kex_done</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1876"></a><tt class="py-lineno">1876</tt> <tt class="py-line"> <tt class="py-comment"># send an event?</tt> </tt> +<a name="L1877"></a><tt class="py-lineno">1877</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1878"></a><tt class="py-lineno">1878</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-474', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1846"></a><tt class="py-lineno">1846</tt> <tt class="py-line"> <tt class="py-comment"># it's now okay to send data again (if this was a re-key)</tt> </tt> -<a name="L1847"></a><tt class="py-lineno">1847</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1848"></a><tt class="py-lineno">1848</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1849"></a><tt class="py-lineno">1849</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1850"></a><tt class="py-lineno">1850</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1851"></a><tt class="py-lineno">1851</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-475" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-499', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1879"></a><tt class="py-lineno">1879</tt> <tt class="py-line"> <tt class="py-comment"># it's now okay to send data again (if this was a re-key)</tt> </tt> +<a name="L1880"></a><tt class="py-lineno">1880</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">packetizer</tt><tt class="py-op">.</tt><tt class="py-name">need_rekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1881"></a><tt class="py-lineno">1881</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_kex</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1882"></a><tt class="py-lineno">1882</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1883"></a><tt class="py-lineno">1883</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1884"></a><tt class="py-lineno">1884</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send</tt><tt class="py-op">.</tt><tt id="link-500" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-475', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1852"></a><tt class="py-lineno">1852</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1853"></a><tt class="py-lineno">1853</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1854"></a><tt class="py-lineno">1854</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L1855"></a><tt class="py-lineno">1855</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_disconnect"></a><div id="Transport._parse_disconnect-def"><a name="L1856"></a><tt class="py-lineno">1856</tt> <a class="py-toggle" href="#" id="Transport._parse_disconnect-toggle" onclick="return toggle('Transport._parse_disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_disconnect">_parse_disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_disconnect-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_disconnect-expanded"><a name="L1857"></a><tt class="py-lineno">1857</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-476', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1858"></a><tt class="py-lineno">1858</tt> <tt class="py-line"> <tt class="py-name">desc</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-477" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-477', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1859"></a><tt class="py-lineno">1859</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-478" class="py-name"><a title="paramiko.auth_handler.INFO +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-500', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1885"></a><tt class="py-lineno">1885</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1886"></a><tt class="py-lineno">1886</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clear_to_send_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1887"></a><tt class="py-lineno">1887</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +</div><a name="L1888"></a><tt class="py-lineno">1888</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_disconnect"></a><div id="Transport._parse_disconnect-def"><a name="L1889"></a><tt class="py-lineno">1889</tt> <a class="py-toggle" href="#" id="Transport._parse_disconnect-toggle" onclick="return toggle('Transport._parse_disconnect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_disconnect">_parse_disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_disconnect-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_disconnect-expanded"><a name="L1890"></a><tt class="py-lineno">1890</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-501', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1891"></a><tt class="py-lineno">1891</tt> <tt class="py-line"> <tt class="py-name">desc</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name" targets="Method paramiko.Message.get_string()=paramiko.Message-class.html#get_string"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-502', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1892"></a><tt class="py-lineno">1892</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-503" class="py-name"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -3144,11 +3184,11 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-478', 'INFO', 'link-347');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Disconnect (code %d): %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1860"></a><tt class="py-lineno">1860</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_global_request"></a><div id="Transport._parse_global_request-def"><a name="L1861"></a><tt class="py-lineno">1861</tt> <a class="py-toggle" href="#" id="Transport._parse_global_request-toggle" onclick="return toggle('Transport._parse_global_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_global_request">_parse_global_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_global_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_global_request-expanded"><a name="L1862"></a><tt class="py-lineno">1862</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-479', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1863"></a><tt class="py-lineno">1863</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-480" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-503', 'INFO', 'link-372');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Disconnect (code %d): %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1893"></a><tt class="py-lineno">1893</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_global_request"></a><div id="Transport._parse_global_request-def"><a name="L1894"></a><tt class="py-lineno">1894</tt> <a class="py-toggle" href="#" id="Transport._parse_global_request-toggle" onclick="return toggle('Transport._parse_global_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_global_request">_parse_global_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_global_request-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_global_request-expanded"><a name="L1895"></a><tt class="py-lineno">1895</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-504', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1896"></a><tt class="py-lineno">1896</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-505" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3169,10 +3209,10 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-480', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Received global request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L1864"></a><tt class="py-lineno">1864</tt> <tt class="py-line"> <tt class="py-name">want_reply</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-481', 'get_boolean', 'link-399');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1865"></a><tt class="py-lineno">1865</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1866"></a><tt class="py-lineno">1866</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-482" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-505', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Received global request "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L1897"></a><tt class="py-lineno">1897</tt> <tt class="py-line"> <tt class="py-name">want_reply</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-506" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-506', 'get_boolean', 'link-424');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1898"></a><tt class="py-lineno">1898</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L1899"></a><tt class="py-lineno">1899</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-507" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3193,29 +3233,29 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-482', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" global request from server.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L1867"></a><tt class="py-lineno">1867</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1868"></a><tt class="py-lineno">1868</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'tcpip-forward'</tt><tt class="py-op">:</tt> </tt> -<a name="L1869"></a><tt class="py-lineno">1869</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-483" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-483', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1870"></a><tt class="py-lineno">1870</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-484', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1871"></a><tt class="py-lineno">1871</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name" targets="Method paramiko.ServerInterface.check_port_forward_request()=paramiko.ServerInterface-class.html#check_port_forward_request"><a title="paramiko.ServerInterface.check_port_forward_request" class="py-name" href="#" onclick="return doclink('link-485', 'check_port_forward_request', 'link-485');">check_port_forward_request</a></tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> -<a name="L1872"></a><tt class="py-lineno">1872</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ok</tt> <tt class="py-op">!=</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt> -<a name="L1873"></a><tt class="py-lineno">1873</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ok</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> -<a name="L1874"></a><tt class="py-lineno">1874</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'cancel-tcpip-forward'</tt><tt class="py-op">:</tt> </tt> -<a name="L1875"></a><tt class="py-lineno">1875</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-486', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1876"></a><tt class="py-lineno">1876</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-487', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1877"></a><tt class="py-lineno">1877</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-488" class="py-name" targets="Method paramiko.ServerInterface.cancel_port_forward_request()=paramiko.ServerInterface-class.html#cancel_port_forward_request"><a title="paramiko.ServerInterface.cancel_port_forward_request" class="py-name" href="#" onclick="return doclink('link-488', 'cancel_port_forward_request', 'link-488');">cancel_port_forward_request</a></tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> -<a name="L1878"></a><tt class="py-lineno">1878</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1879"></a><tt class="py-lineno">1879</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1880"></a><tt class="py-lineno">1880</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-489" class="py-name" targets="Method paramiko.ServerInterface.check_global_request()=paramiko.ServerInterface-class.html#check_global_request"><a title="paramiko.ServerInterface.check_global_request" class="py-name" href="#" onclick="return doclink('link-489', 'check_global_request', 'link-489');">check_global_request</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L1881"></a><tt class="py-lineno">1881</tt> <tt class="py-line"> <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1882"></a><tt class="py-lineno">1882</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">ok</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> -<a name="L1883"></a><tt class="py-lineno">1883</tt> <tt class="py-line"> <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-name">ok</tt> </tt> -<a name="L1884"></a><tt class="py-lineno">1884</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1885"></a><tt class="py-lineno">1885</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">want_reply</tt><tt class="py-op">:</tt> </tt> -<a name="L1886"></a><tt class="py-lineno">1886</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-490" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-490', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1887"></a><tt class="py-lineno">1887</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ok</tt><tt class="py-op">:</tt> </tt> -<a name="L1888"></a><tt class="py-lineno">1888</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-491" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-491', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-492" class="py-name" targets="Variable paramiko.auth_handler.MSG_REQUEST_SUCCESS=paramiko.auth_handler-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.channel.MSG_REQUEST_SUCCESS=paramiko.channel-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.client.MSG_REQUEST_SUCCESS=paramiko.client-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.common.MSG_REQUEST_SUCCESS=paramiko.common-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.dsskey.MSG_REQUEST_SUCCESS=paramiko.dsskey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.hostkeys.MSG_REQUEST_SUCCESS=paramiko.hostkeys-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.kex_gex.MSG_REQUEST_SUCCESS=paramiko.kex_gex-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.kex_group1.MSG_REQUEST_SUCCESS=paramiko.kex_group1-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.packet.MSG_REQUEST_SUCCESS=paramiko.packet-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.pkey.MSG_REQUEST_SUCCESS=paramiko.pkey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.rsakey.MSG_REQUEST_SUCCESS=paramiko.rsakey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.server.MSG_REQUEST_SUCCESS=paramiko.server-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp.MSG_REQUEST_SUCCESS=paramiko.sftp-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_attr.MSG_REQUEST_SUCCESS=paramiko.sftp_attr-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_client.MSG_REQUEST_SUCCESS=paramiko.sftp_client-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_file.MSG_REQUEST_SUCCESS=paramiko.sftp_file-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_handle.MSG_REQUEST_SUCCESS=paramiko.sftp_handle-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_server.MSG_REQUEST_SUCCESS=paramiko.sftp_server-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_si.MSG_REQUEST_SUCCESS=paramiko.sftp_si-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.transport.MSG_REQUEST_SUCCESS=paramiko.transport-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.util.MSG_REQUEST_SUCCESS=paramiko.util-module.html#MSG_REQUEST_SUCCESS"><a title="paramiko.auth_handler.MSG_REQUEST_SUCCESS +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-507', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" global request from server.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L1900"></a><tt class="py-lineno">1900</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1901"></a><tt class="py-lineno">1901</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'tcpip-forward'</tt><tt class="py-op">:</tt> </tt> +<a name="L1902"></a><tt class="py-lineno">1902</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-508', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1903"></a><tt class="py-lineno">1903</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-509', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1904"></a><tt class="py-lineno">1904</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name" targets="Method paramiko.ServerInterface.check_port_forward_request()=paramiko.ServerInterface-class.html#check_port_forward_request"><a title="paramiko.ServerInterface.check_port_forward_request" class="py-name" href="#" onclick="return doclink('link-510', 'check_port_forward_request', 'link-510');">check_port_forward_request</a></tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> +<a name="L1905"></a><tt class="py-lineno">1905</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ok</tt> <tt class="py-op">!=</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt> +<a name="L1906"></a><tt class="py-lineno">1906</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ok</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> +<a name="L1907"></a><tt class="py-lineno">1907</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'cancel-tcpip-forward'</tt><tt class="py-op">:</tt> </tt> +<a name="L1908"></a><tt class="py-lineno">1908</tt> <tt class="py-line"> <tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-511', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1909"></a><tt class="py-lineno">1909</tt> <tt class="py-line"> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-512', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1910"></a><tt class="py-lineno">1910</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name" targets="Method paramiko.ServerInterface.cancel_port_forward_request()=paramiko.ServerInterface-class.html#cancel_port_forward_request"><a title="paramiko.ServerInterface.cancel_port_forward_request" class="py-name" href="#" onclick="return doclink('link-513', 'cancel_port_forward_request', 'link-513');">cancel_port_forward_request</a></tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt> +<a name="L1911"></a><tt class="py-lineno">1911</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1912"></a><tt class="py-lineno">1912</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1913"></a><tt class="py-lineno">1913</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-514" class="py-name" targets="Method paramiko.ServerInterface.check_global_request()=paramiko.ServerInterface-class.html#check_global_request"><a title="paramiko.ServerInterface.check_global_request" class="py-name" href="#" onclick="return doclink('link-514', 'check_global_request', 'link-514');">check_global_request</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L1914"></a><tt class="py-lineno">1914</tt> <tt class="py-line"> <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1915"></a><tt class="py-lineno">1915</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">ok</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">tuple</tt><tt class="py-op">:</tt> </tt> +<a name="L1916"></a><tt class="py-lineno">1916</tt> <tt class="py-line"> <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-name">ok</tt> </tt> +<a name="L1917"></a><tt class="py-lineno">1917</tt> <tt class="py-line"> <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L1918"></a><tt class="py-lineno">1918</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">want_reply</tt><tt class="py-op">:</tt> </tt> +<a name="L1919"></a><tt class="py-lineno">1919</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-515" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-515', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1920"></a><tt class="py-lineno">1920</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ok</tt><tt class="py-op">:</tt> </tt> +<a name="L1921"></a><tt class="py-lineno">1921</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-516', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-517" class="py-name" targets="Variable paramiko.auth_handler.MSG_REQUEST_SUCCESS=paramiko.auth_handler-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.channel.MSG_REQUEST_SUCCESS=paramiko.channel-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.client.MSG_REQUEST_SUCCESS=paramiko.client-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.common.MSG_REQUEST_SUCCESS=paramiko.common-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.dsskey.MSG_REQUEST_SUCCESS=paramiko.dsskey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.hostkeys.MSG_REQUEST_SUCCESS=paramiko.hostkeys-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.kex_gex.MSG_REQUEST_SUCCESS=paramiko.kex_gex-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.kex_group1.MSG_REQUEST_SUCCESS=paramiko.kex_group1-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.packet.MSG_REQUEST_SUCCESS=paramiko.packet-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.pkey.MSG_REQUEST_SUCCESS=paramiko.pkey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.rsakey.MSG_REQUEST_SUCCESS=paramiko.rsakey-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.server.MSG_REQUEST_SUCCESS=paramiko.server-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp.MSG_REQUEST_SUCCESS=paramiko.sftp-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_attr.MSG_REQUEST_SUCCESS=paramiko.sftp_attr-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_client.MSG_REQUEST_SUCCESS=paramiko.sftp_client-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_file.MSG_REQUEST_SUCCESS=paramiko.sftp_file-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_handle.MSG_REQUEST_SUCCESS=paramiko.sftp_handle-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_server.MSG_REQUEST_SUCCESS=paramiko.sftp_server-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.sftp_si.MSG_REQUEST_SUCCESS=paramiko.sftp_si-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.transport.MSG_REQUEST_SUCCESS=paramiko.transport-module.html#MSG_REQUEST_SUCCESS,Variable paramiko.util.MSG_REQUEST_SUCCESS=paramiko.util-module.html#MSG_REQUEST_SUCCESS"><a title="paramiko.auth_handler.MSG_REQUEST_SUCCESS paramiko.channel.MSG_REQUEST_SUCCESS paramiko.client.MSG_REQUEST_SUCCESS paramiko.common.MSG_REQUEST_SUCCESS @@ -3235,11 +3275,11 @@ paramiko.sftp_handle.MSG_REQUEST_SUCCESS paramiko.sftp_server.MSG_REQUEST_SUCCESS paramiko.sftp_si.MSG_REQUEST_SUCCESS paramiko.transport.MSG_REQUEST_SUCCESS -paramiko.util.MSG_REQUEST_SUCCESS" class="py-name" href="#" onclick="return doclink('link-492', 'MSG_REQUEST_SUCCESS', 'link-492');">MSG_REQUEST_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1889"></a><tt class="py-lineno">1889</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-493" class="py-name"><a title="paramiko.HostKeys.add -paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-493', 'add', 'link-186');">add</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">extra</tt><tt class="py-op">)</tt> </tt> -<a name="L1890"></a><tt class="py-lineno">1890</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1891"></a><tt class="py-lineno">1891</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-494', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-495" class="py-name" targets="Variable paramiko.auth_handler.MSG_REQUEST_FAILURE=paramiko.auth_handler-module.html#MSG_REQUEST_FAILURE,Variable paramiko.channel.MSG_REQUEST_FAILURE=paramiko.channel-module.html#MSG_REQUEST_FAILURE,Variable paramiko.client.MSG_REQUEST_FAILURE=paramiko.client-module.html#MSG_REQUEST_FAILURE,Variable paramiko.common.MSG_REQUEST_FAILURE=paramiko.common-module.html#MSG_REQUEST_FAILURE,Variable paramiko.dsskey.MSG_REQUEST_FAILURE=paramiko.dsskey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.hostkeys.MSG_REQUEST_FAILURE=paramiko.hostkeys-module.html#MSG_REQUEST_FAILURE,Variable paramiko.kex_gex.MSG_REQUEST_FAILURE=paramiko.kex_gex-module.html#MSG_REQUEST_FAILURE,Variable paramiko.kex_group1.MSG_REQUEST_FAILURE=paramiko.kex_group1-module.html#MSG_REQUEST_FAILURE,Variable paramiko.packet.MSG_REQUEST_FAILURE=paramiko.packet-module.html#MSG_REQUEST_FAILURE,Variable paramiko.pkey.MSG_REQUEST_FAILURE=paramiko.pkey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.rsakey.MSG_REQUEST_FAILURE=paramiko.rsakey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.server.MSG_REQUEST_FAILURE=paramiko.server-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp.MSG_REQUEST_FAILURE=paramiko.sftp-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_attr.MSG_REQUEST_FAILURE=paramiko.sftp_attr-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_client.MSG_REQUEST_FAILURE=paramiko.sftp_client-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_file.MSG_REQUEST_FAILURE=paramiko.sftp_file-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_handle.MSG_REQUEST_FAILURE=paramiko.sftp_handle-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_server.MSG_REQUEST_FAILURE=paramiko.sftp_server-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_si.MSG_REQUEST_FAILURE=paramiko.sftp_si-module.html#MSG_REQUEST_FAILURE,Variable paramiko.transport.MSG_REQUEST_FAILURE=paramiko.transport-module.html#MSG_REQUEST_FAILURE,Variable paramiko.util.MSG_REQUEST_FAILURE=paramiko.util-module.html#MSG_REQUEST_FAILURE"><a title="paramiko.auth_handler.MSG_REQUEST_FAILURE +paramiko.util.MSG_REQUEST_SUCCESS" class="py-name" href="#" onclick="return doclink('link-517', 'MSG_REQUEST_SUCCESS', 'link-517');">MSG_REQUEST_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1922"></a><tt class="py-lineno">1922</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="paramiko.HostKeys.add +paramiko.Message.add" class="py-name" href="#" onclick="return doclink('link-518', 'add', 'link-191');">add</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">extra</tt><tt class="py-op">)</tt> </tt> +<a name="L1923"></a><tt class="py-lineno">1923</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L1924"></a><tt class="py-lineno">1924</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-519', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-520" class="py-name" targets="Variable paramiko.auth_handler.MSG_REQUEST_FAILURE=paramiko.auth_handler-module.html#MSG_REQUEST_FAILURE,Variable paramiko.channel.MSG_REQUEST_FAILURE=paramiko.channel-module.html#MSG_REQUEST_FAILURE,Variable paramiko.client.MSG_REQUEST_FAILURE=paramiko.client-module.html#MSG_REQUEST_FAILURE,Variable paramiko.common.MSG_REQUEST_FAILURE=paramiko.common-module.html#MSG_REQUEST_FAILURE,Variable paramiko.dsskey.MSG_REQUEST_FAILURE=paramiko.dsskey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.hostkeys.MSG_REQUEST_FAILURE=paramiko.hostkeys-module.html#MSG_REQUEST_FAILURE,Variable paramiko.kex_gex.MSG_REQUEST_FAILURE=paramiko.kex_gex-module.html#MSG_REQUEST_FAILURE,Variable paramiko.kex_group1.MSG_REQUEST_FAILURE=paramiko.kex_group1-module.html#MSG_REQUEST_FAILURE,Variable paramiko.packet.MSG_REQUEST_FAILURE=paramiko.packet-module.html#MSG_REQUEST_FAILURE,Variable paramiko.pkey.MSG_REQUEST_FAILURE=paramiko.pkey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.rsakey.MSG_REQUEST_FAILURE=paramiko.rsakey-module.html#MSG_REQUEST_FAILURE,Variable paramiko.server.MSG_REQUEST_FAILURE=paramiko.server-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp.MSG_REQUEST_FAILURE=paramiko.sftp-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_attr.MSG_REQUEST_FAILURE=paramiko.sftp_attr-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_client.MSG_REQUEST_FAILURE=paramiko.sftp_client-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_file.MSG_REQUEST_FAILURE=paramiko.sftp_file-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_handle.MSG_REQUEST_FAILURE=paramiko.sftp_handle-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_server.MSG_REQUEST_FAILURE=paramiko.sftp_server-module.html#MSG_REQUEST_FAILURE,Variable paramiko.sftp_si.MSG_REQUEST_FAILURE=paramiko.sftp_si-module.html#MSG_REQUEST_FAILURE,Variable paramiko.transport.MSG_REQUEST_FAILURE=paramiko.transport-module.html#MSG_REQUEST_FAILURE,Variable paramiko.util.MSG_REQUEST_FAILURE=paramiko.util-module.html#MSG_REQUEST_FAILURE"><a title="paramiko.auth_handler.MSG_REQUEST_FAILURE paramiko.channel.MSG_REQUEST_FAILURE paramiko.client.MSG_REQUEST_FAILURE paramiko.common.MSG_REQUEST_FAILURE @@ -3259,11 +3299,11 @@ paramiko.sftp_handle.MSG_REQUEST_FAILURE paramiko.sftp_server.MSG_REQUEST_FAILURE paramiko.sftp_si.MSG_REQUEST_FAILURE paramiko.transport.MSG_REQUEST_FAILURE -paramiko.util.MSG_REQUEST_FAILURE" class="py-name" href="#" onclick="return doclink('link-495', 'MSG_REQUEST_FAILURE', 'link-495');">MSG_REQUEST_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1892"></a><tt class="py-lineno">1892</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1893"></a><tt class="py-lineno">1893</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_request_success"></a><div id="Transport._parse_request_success-def"><a name="L1894"></a><tt class="py-lineno">1894</tt> <a class="py-toggle" href="#" id="Transport._parse_request_success-toggle" onclick="return toggle('Transport._parse_request_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_request_success">_parse_request_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_request_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_request_success-expanded"><a name="L1895"></a><tt class="py-lineno">1895</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.MSG_REQUEST_FAILURE" class="py-name" href="#" onclick="return doclink('link-520', 'MSG_REQUEST_FAILURE', 'link-520');">MSG_REQUEST_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1925"></a><tt class="py-lineno">1925</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1926"></a><tt class="py-lineno">1926</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_request_success"></a><div id="Transport._parse_request_success-def"><a name="L1927"></a><tt class="py-lineno">1927</tt> <a class="py-toggle" href="#" id="Transport._parse_request_success-toggle" onclick="return toggle('Transport._parse_request_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_request_success">_parse_request_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_request_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_request_success-expanded"><a name="L1928"></a><tt class="py-lineno">1928</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-521" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3284,15 +3324,15 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-496', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Global request successful.'</tt><tt class="py-op">)</tt> </tt> -<a name="L1896"></a><tt class="py-lineno">1896</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt> -<a name="L1897"></a><tt class="py-lineno">1897</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1898"></a><tt class="py-lineno">1898</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-521', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Global request successful.'</tt><tt class="py-op">)</tt> </tt> +<a name="L1929"></a><tt class="py-lineno">1929</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt> +<a name="L1930"></a><tt class="py-lineno">1930</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1931"></a><tt class="py-lineno">1931</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-522" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-497', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1899"></a><tt class="py-lineno">1899</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_request_failure"></a><div id="Transport._parse_request_failure-def"><a name="L1900"></a><tt class="py-lineno">1900</tt> <a class="py-toggle" href="#" id="Transport._parse_request_failure-toggle" onclick="return toggle('Transport._parse_request_failure');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_request_failure">_parse_request_failure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_request_failure-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_request_failure-expanded"><a name="L1901"></a><tt class="py-lineno">1901</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-498" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-522', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1932"></a><tt class="py-lineno">1932</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_request_failure"></a><div id="Transport._parse_request_failure-def"><a name="L1933"></a><tt class="py-lineno">1933</tt> <a class="py-toggle" href="#" id="Transport._parse_request_failure-toggle" onclick="return toggle('Transport._parse_request_failure');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_request_failure">_parse_request_failure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_request_failure-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_request_failure-expanded"><a name="L1934"></a><tt class="py-lineno">1934</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-523" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3313,22 +3353,22 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-498', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Global request denied.'</tt><tt class="py-op">)</tt> </tt> -<a name="L1902"></a><tt class="py-lineno">1902</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L1903"></a><tt class="py-lineno">1903</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1904"></a><tt class="py-lineno">1904</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-523', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Global request denied.'</tt><tt class="py-op">)</tt> </tt> +<a name="L1935"></a><tt class="py-lineno">1935</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">global_response</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> +<a name="L1936"></a><tt class="py-lineno">1936</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1937"></a><tt class="py-lineno">1937</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">completion_event</tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-499', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L1905"></a><tt class="py-lineno">1905</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_channel_open_success"></a><div id="Transport._parse_channel_open_success-def"><a name="L1906"></a><tt class="py-lineno">1906</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open_success-toggle" onclick="return toggle('Transport._parse_channel_open_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open_success">_parse_channel_open_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_channel_open_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open_success-expanded"><a name="L1907"></a><tt class="py-lineno">1907</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-500" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-500', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1908"></a><tt class="py-lineno">1908</tt> <tt class="py-line"> <tt class="py-name">server_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-501', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1909"></a><tt class="py-lineno">1909</tt> <tt class="py-line"> <tt class="py-name">server_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-502', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1910"></a><tt class="py-lineno">1910</tt> <tt class="py-line"> <tt class="py-name">server_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-503', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1911"></a><tt class="py-lineno">1911</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-504" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-504', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1912"></a><tt class="py-lineno">1912</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L1913"></a><tt class="py-lineno">1913</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-505" class="py-name"><a title="paramiko.auth_handler.WARNING +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-524', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L1938"></a><tt class="py-lineno">1938</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_channel_open_success"></a><div id="Transport._parse_channel_open_success-def"><a name="L1939"></a><tt class="py-lineno">1939</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open_success-toggle" onclick="return toggle('Transport._parse_channel_open_success');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open_success">_parse_channel_open_success</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_channel_open_success-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open_success-expanded"><a name="L1940"></a><tt class="py-lineno">1940</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-525', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1941"></a><tt class="py-lineno">1941</tt> <tt class="py-line"> <tt class="py-name">server_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-526" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-526', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1942"></a><tt class="py-lineno">1942</tt> <tt class="py-line"> <tt class="py-name">server_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-527', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1943"></a><tt class="py-lineno">1943</tt> <tt class="py-line"> <tt class="py-name">server_max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-528" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-528', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1944"></a><tt class="py-lineno">1944</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-529', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1945"></a><tt class="py-lineno">1945</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chan</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> +<a name="L1946"></a><tt class="py-lineno">1946</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-530" class="py-name"><a title="paramiko.auth_handler.WARNING paramiko.channel.WARNING paramiko.client.WARNING paramiko.common.WARNING @@ -3349,12 +3389,12 @@ paramiko.sftp_handle.WARNING paramiko.sftp_server.WARNING paramiko.sftp_si.WARNING paramiko.transport.WARNING -paramiko.util.WARNING" class="py-name" href="#" onclick="return doclink('link-505', 'WARNING', 'link-311');">WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Success for unrequested channel! [??]'</tt><tt class="py-op">)</tt> </tt> -<a name="L1914"></a><tt class="py-lineno">1914</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L1915"></a><tt class="py-lineno">1915</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1916"></a><tt class="py-lineno">1916</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1917"></a><tt class="py-lineno">1917</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_remote_channel</tt><tt class="py-op">(</tt><tt class="py-name">server_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">server_window_size</tt><tt class="py-op">,</tt> <tt class="py-name">server_max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L1918"></a><tt class="py-lineno">1918</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-506" class="py-name"><a title="paramiko.auth_handler.INFO +paramiko.util.WARNING" class="py-name" href="#" onclick="return doclink('link-530', 'WARNING', 'link-336');">WARNING</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Success for unrequested channel! [??]'</tt><tt class="py-op">)</tt> </tt> +<a name="L1947"></a><tt class="py-lineno">1947</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L1948"></a><tt class="py-lineno">1948</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1949"></a><tt class="py-lineno">1949</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1950"></a><tt class="py-lineno">1950</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_remote_channel</tt><tt class="py-op">(</tt><tt class="py-name">server_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">server_window_size</tt><tt class="py-op">,</tt> <tt class="py-name">server_max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L1951"></a><tt class="py-lineno">1951</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-531" class="py-name"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -3375,22 +3415,22 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-506', 'INFO', 'link-347');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d opened.'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1919"></a><tt class="py-lineno">1919</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> -<a name="L1920"></a><tt class="py-lineno">1920</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-531', 'INFO', 'link-372');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d opened.'</tt> <tt class="py-op">%</tt> <tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1952"></a><tt class="py-lineno">1952</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> +<a name="L1953"></a><tt class="py-lineno">1953</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-507', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1921"></a><tt class="py-lineno">1921</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> -<a name="L1922"></a><tt class="py-lineno">1922</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1923"></a><tt class="py-lineno">1923</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1924"></a><tt class="py-lineno">1924</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L1925"></a><tt class="py-lineno">1925</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_channel_open_failure"></a><div id="Transport._parse_channel_open_failure-def"><a name="L1926"></a><tt class="py-lineno">1926</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open_failure-toggle" onclick="return toggle('Transport._parse_channel_open_failure');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open_failure">_parse_channel_open_failure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_channel_open_failure-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open_failure-expanded"><a name="L1927"></a><tt class="py-lineno">1927</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-508" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-508', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1928"></a><tt class="py-lineno">1928</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-509', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1929"></a><tt class="py-lineno">1929</tt> <tt class="py-line"> <tt class="py-name">reason_str</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-510', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1930"></a><tt class="py-lineno">1930</tt> <tt class="py-line"> <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-511', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1931"></a><tt class="py-lineno">1931</tt> <tt class="py-line"> <tt class="py-name">reason_text</tt> <tt class="py-op">=</tt> <tt id="link-512" class="py-name" targets="Variable paramiko.auth_handler.CONNECTION_FAILED_CODE=paramiko.auth_handler-module.html#CONNECTION_FAILED_CODE,Variable paramiko.channel.CONNECTION_FAILED_CODE=paramiko.channel-module.html#CONNECTION_FAILED_CODE,Variable paramiko.client.CONNECTION_FAILED_CODE=paramiko.client-module.html#CONNECTION_FAILED_CODE,Variable paramiko.common.CONNECTION_FAILED_CODE=paramiko.common-module.html#CONNECTION_FAILED_CODE,Variable paramiko.dsskey.CONNECTION_FAILED_CODE=paramiko.dsskey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.hostkeys.CONNECTION_FAILED_CODE=paramiko.hostkeys-module.html#CONNECTION_FAILED_CODE,Variable paramiko.kex_gex.CONNECTION_FAILED_CODE=paramiko.kex_gex-module.html#CONNECTION_FAILED_CODE,Variable paramiko.kex_group1.CONNECTION_FAILED_CODE=paramiko.kex_group1-module.html#CONNECTION_FAILED_CODE,Variable paramiko.packet.CONNECTION_FAILED_CODE=paramiko.packet-module.html#CONNECTION_FAILED_CODE,Variable paramiko.pkey.CONNECTION_FAILED_CODE=paramiko.pkey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.rsakey.CONNECTION_FAILED_CODE=paramiko.rsakey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.server.CONNECTION_FAILED_CODE=paramiko.server-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp.CONNECTION_FAILED_CODE=paramiko.sftp-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_attr.CONNECTION_FAILED_CODE=paramiko.sftp_attr-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_client.CONNECTION_FAILED_CODE=paramiko.sftp_client-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_file.CONNECTION_FAILED_CODE=paramiko.sftp_file-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_handle.CONNECTION_FAILED_CODE=paramiko.sftp_handle-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_server.CONNECTION_FAILED_CODE=paramiko.sftp_server-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_si.CONNECTION_FAILED_CODE=paramiko.sftp_si-module.html#CONNECTION_FAILED_CODE,Variable paramiko.transport.CONNECTION_FAILED_CODE=paramiko.transport-module.html#CONNECTION_FAILED_CODE,Variable paramiko.util.CONNECTION_FAILED_CODE=paramiko.util-module.html#CONNECTION_FAILED_CODE"><a title="paramiko.auth_handler.CONNECTION_FAILED_CODE +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-532', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1954"></a><tt class="py-lineno">1954</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> +<a name="L1955"></a><tt class="py-lineno">1955</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1956"></a><tt class="py-lineno">1956</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1957"></a><tt class="py-lineno">1957</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +</div><a name="L1958"></a><tt class="py-lineno">1958</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_channel_open_failure"></a><div id="Transport._parse_channel_open_failure-def"><a name="L1959"></a><tt class="py-lineno">1959</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open_failure-toggle" onclick="return toggle('Transport._parse_channel_open_failure');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open_failure">_parse_channel_open_failure</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_channel_open_failure-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open_failure-expanded"><a name="L1960"></a><tt class="py-lineno">1960</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-533" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-533', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1961"></a><tt class="py-lineno">1961</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-534" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-534', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1962"></a><tt class="py-lineno">1962</tt> <tt class="py-line"> <tt class="py-name">reason_str</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-535', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1963"></a><tt class="py-lineno">1963</tt> <tt class="py-line"> <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-536', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1964"></a><tt class="py-lineno">1964</tt> <tt class="py-line"> <tt class="py-name">reason_text</tt> <tt class="py-op">=</tt> <tt id="link-537" class="py-name" targets="Variable paramiko.auth_handler.CONNECTION_FAILED_CODE=paramiko.auth_handler-module.html#CONNECTION_FAILED_CODE,Variable paramiko.channel.CONNECTION_FAILED_CODE=paramiko.channel-module.html#CONNECTION_FAILED_CODE,Variable paramiko.client.CONNECTION_FAILED_CODE=paramiko.client-module.html#CONNECTION_FAILED_CODE,Variable paramiko.common.CONNECTION_FAILED_CODE=paramiko.common-module.html#CONNECTION_FAILED_CODE,Variable paramiko.dsskey.CONNECTION_FAILED_CODE=paramiko.dsskey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.hostkeys.CONNECTION_FAILED_CODE=paramiko.hostkeys-module.html#CONNECTION_FAILED_CODE,Variable paramiko.kex_gex.CONNECTION_FAILED_CODE=paramiko.kex_gex-module.html#CONNECTION_FAILED_CODE,Variable paramiko.kex_group1.CONNECTION_FAILED_CODE=paramiko.kex_group1-module.html#CONNECTION_FAILED_CODE,Variable paramiko.packet.CONNECTION_FAILED_CODE=paramiko.packet-module.html#CONNECTION_FAILED_CODE,Variable paramiko.pkey.CONNECTION_FAILED_CODE=paramiko.pkey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.rsakey.CONNECTION_FAILED_CODE=paramiko.rsakey-module.html#CONNECTION_FAILED_CODE,Variable paramiko.server.CONNECTION_FAILED_CODE=paramiko.server-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp.CONNECTION_FAILED_CODE=paramiko.sftp-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_attr.CONNECTION_FAILED_CODE=paramiko.sftp_attr-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_client.CONNECTION_FAILED_CODE=paramiko.sftp_client-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_file.CONNECTION_FAILED_CODE=paramiko.sftp_file-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_handle.CONNECTION_FAILED_CODE=paramiko.sftp_handle-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_server.CONNECTION_FAILED_CODE=paramiko.sftp_server-module.html#CONNECTION_FAILED_CODE,Variable paramiko.sftp_si.CONNECTION_FAILED_CODE=paramiko.sftp_si-module.html#CONNECTION_FAILED_CODE,Variable paramiko.transport.CONNECTION_FAILED_CODE=paramiko.transport-module.html#CONNECTION_FAILED_CODE,Variable paramiko.util.CONNECTION_FAILED_CODE=paramiko.util-module.html#CONNECTION_FAILED_CODE"><a title="paramiko.auth_handler.CONNECTION_FAILED_CODE paramiko.channel.CONNECTION_FAILED_CODE paramiko.client.CONNECTION_FAILED_CODE paramiko.common.CONNECTION_FAILED_CODE @@ -3410,9 +3450,9 @@ paramiko.sftp_handle.CONNECTION_FAILED_CODE paramiko.sftp_server.CONNECTION_FAILED_CODE paramiko.sftp_si.CONNECTION_FAILED_CODE paramiko.transport.CONNECTION_FAILED_CODE -paramiko.util.CONNECTION_FAILED_CODE" class="py-name" href="#" onclick="return doclink('link-512', 'CONNECTION_FAILED_CODE', 'link-512');">CONNECTION_FAILED_CODE</a></tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="paramiko.SFTPClient.get -paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-513', 'get', 'link-72');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">,</tt> <tt class="py-string">'(unknown code)'</tt><tt class="py-op">)</tt> </tt> -<a name="L1932"></a><tt class="py-lineno">1932</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-514" class="py-name"><a title="paramiko.auth_handler.INFO +paramiko.util.CONNECTION_FAILED_CODE" class="py-name" href="#" onclick="return doclink('link-537', 'CONNECTION_FAILED_CODE', 'link-537');">CONNECTION_FAILED_CODE</a></tt><tt class="py-op">.</tt><tt id="link-538" class="py-name"><a title="paramiko.SFTPClient.get +paramiko.transport.ChannelMap.get" class="py-name" href="#" onclick="return doclink('link-538', 'get', 'link-76');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">,</tt> <tt class="py-string">'(unknown code)'</tt><tt class="py-op">)</tt> </tt> +<a name="L1965"></a><tt class="py-lineno">1965</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -3433,31 +3473,31 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-514', 'INFO', 'link-347');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d open FAILED: %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">reason_str</tt><tt class="py-op">,</tt> <tt class="py-name">reason_text</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1933"></a><tt class="py-lineno">1933</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1934"></a><tt class="py-lineno">1934</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1935"></a><tt class="py-lineno">1935</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt id="link-515" class="py-name"><a title="paramiko.ChannelException" class="py-name" href="#" onclick="return doclink('link-515', 'ChannelException', 'link-44');">ChannelException</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">,</tt> <tt class="py-name">reason_text</tt><tt class="py-op">)</tt> </tt> -<a name="L1936"></a><tt class="py-lineno">1936</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> -<a name="L1937"></a><tt class="py-lineno">1937</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-516" class="py-name"><a title="paramiko.transport.ChannelMap.delete" class="py-name" href="#" onclick="return doclink('link-516', 'delete', 'link-258');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1938"></a><tt class="py-lineno">1938</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> -<a name="L1939"></a><tt class="py-lineno">1939</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name"><a title="paramiko.pipe.OrPipe.set +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-539', 'INFO', 'link-372');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d open FAILED: %s: %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">reason_str</tt><tt class="py-op">,</tt> <tt class="py-name">reason_text</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1966"></a><tt class="py-lineno">1966</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1967"></a><tt class="py-lineno">1967</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1968"></a><tt class="py-lineno">1968</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">saved_exception</tt> <tt class="py-op">=</tt> <tt id="link-540" class="py-name"><a title="paramiko.ChannelException" class="py-name" href="#" onclick="return doclink('link-540', 'ChannelException', 'link-44');">ChannelException</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">,</tt> <tt class="py-name">reason_text</tt><tt class="py-op">)</tt> </tt> +<a name="L1969"></a><tt class="py-lineno">1969</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> +<a name="L1970"></a><tt class="py-lineno">1970</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="paramiko.transport.ChannelMap.delete" class="py-name" href="#" onclick="return doclink('link-541', 'delete', 'link-263');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L1971"></a><tt class="py-lineno">1971</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">chanid</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">:</tt> </tt> +<a name="L1972"></a><tt class="py-lineno">1972</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-542" class="py-name"><a title="paramiko.pipe.OrPipe.set paramiko.pipe.PosixPipe.set -paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-517', 'set', 'link-332');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1940"></a><tt class="py-lineno">1940</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> -<a name="L1941"></a><tt class="py-lineno">1941</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1942"></a><tt class="py-lineno">1942</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1943"></a><tt class="py-lineno">1943</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -</div><a name="L1944"></a><tt class="py-lineno">1944</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_channel_open"></a><div id="Transport._parse_channel_open-def"><a name="L1945"></a><tt class="py-lineno">1945</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open-toggle" onclick="return toggle('Transport._parse_channel_open');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open">_parse_channel_open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_channel_open-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open-expanded"><a name="L1946"></a><tt class="py-lineno">1946</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-518', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1947"></a><tt class="py-lineno">1947</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-519', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1948"></a><tt class="py-lineno">1948</tt> <tt class="py-line"> <tt class="py-name">initial_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-520', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1949"></a><tt class="py-lineno">1949</tt> <tt class="py-line"> <tt class="py-name">max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-521', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1950"></a><tt class="py-lineno">1950</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L1951"></a><tt class="py-lineno">1951</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1952"></a><tt class="py-lineno">1952</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-522" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-522', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1953"></a><tt class="py-lineno">1953</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-523" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-523', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1954"></a><tt class="py-lineno">1954</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-524" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.pipe.WindowsPipe.set" class="py-name" href="#" onclick="return doclink('link-542', 'set', 'link-357');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1973"></a><tt class="py-lineno">1973</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel_events</tt><tt class="py-op">[</tt><tt class="py-name">chanid</tt><tt class="py-op">]</tt> </tt> +<a name="L1974"></a><tt class="py-lineno">1974</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1975"></a><tt class="py-lineno">1975</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1976"></a><tt class="py-lineno">1976</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +</div><a name="L1977"></a><tt class="py-lineno">1977</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_channel_open"></a><div id="Transport._parse_channel_open-def"><a name="L1978"></a><tt class="py-lineno">1978</tt> <a class="py-toggle" href="#" id="Transport._parse_channel_open-toggle" onclick="return toggle('Transport._parse_channel_open');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_channel_open">_parse_channel_open</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_channel_open-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_channel_open-expanded"><a name="L1979"></a><tt class="py-lineno">1979</tt> <tt class="py-line"> <tt class="py-name">kind</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-543', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1980"></a><tt class="py-lineno">1980</tt> <tt class="py-line"> <tt class="py-name">chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-544" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-544', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1981"></a><tt class="py-lineno">1981</tt> <tt class="py-line"> <tt class="py-name">initial_window_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-545" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-545', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1982"></a><tt class="py-lineno">1982</tt> <tt class="py-line"> <tt class="py-name">max_packet_size</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-546', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1983"></a><tt class="py-lineno">1983</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L1984"></a><tt class="py-lineno">1984</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1985"></a><tt class="py-lineno">1985</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-547" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-547', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1986"></a><tt class="py-lineno">1986</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-548', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1987"></a><tt class="py-lineno">1987</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-549" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3478,18 +3518,18 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-524', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Incoming x11 connection from %s:%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1955"></a><tt class="py-lineno">1955</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1956"></a><tt class="py-lineno">1956</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1957"></a><tt class="py-lineno">1957</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1958"></a><tt class="py-lineno">1958</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1959"></a><tt class="py-lineno">1959</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1960"></a><tt class="py-lineno">1960</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L1961"></a><tt class="py-lineno">1961</tt> <tt class="py-line"> <tt class="py-name">server_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-525', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1962"></a><tt class="py-lineno">1962</tt> <tt class="py-line"> <tt class="py-name">server_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-526" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-526', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1963"></a><tt class="py-lineno">1963</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-527', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1964"></a><tt class="py-lineno">1964</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-528" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-528', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1965"></a><tt class="py-lineno">1965</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-529" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-549', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Incoming x11 connection from %s:%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1988"></a><tt class="py-lineno">1988</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1989"></a><tt class="py-lineno">1989</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L1990"></a><tt class="py-lineno">1990</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1991"></a><tt class="py-lineno">1991</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L1992"></a><tt class="py-lineno">1992</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1993"></a><tt class="py-lineno">1993</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-op">(</tt><tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L1994"></a><tt class="py-lineno">1994</tt> <tt class="py-line"> <tt class="py-name">server_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-550', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1995"></a><tt class="py-lineno">1995</tt> <tt class="py-line"> <tt class="py-name">server_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-551', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1996"></a><tt class="py-lineno">1996</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-552', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1997"></a><tt class="py-lineno">1997</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-553', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L1998"></a><tt class="py-lineno">1998</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-554" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3510,14 +3550,14 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-529', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Incoming tcp forwarded connection from %s:%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1966"></a><tt class="py-lineno">1966</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1967"></a><tt class="py-lineno">1967</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1968"></a><tt class="py-lineno">1968</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1969"></a><tt class="py-lineno">1969</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1970"></a><tt class="py-lineno">1970</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1971"></a><tt class="py-lineno">1971</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> -<a name="L1972"></a><tt class="py-lineno">1972</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-530" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-554', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Incoming tcp forwarded connection from %s:%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L1999"></a><tt class="py-lineno">1999</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2000"></a><tt class="py-lineno">2000</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L2001"></a><tt class="py-lineno">2001</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2002"></a><tt class="py-lineno">2002</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L2003"></a><tt class="py-lineno">2003</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2004"></a><tt class="py-lineno">2004</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_mode</tt><tt class="py-op">:</tt> </tt> +<a name="L2005"></a><tt class="py-lineno">2005</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-555" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3538,9 +3578,9 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-530', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" channel request from server.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L1973"></a><tt class="py-lineno">1973</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1974"></a><tt class="py-lineno">1974</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt id="link-531" class="py-name" targets="Variable paramiko.auth_handler.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.auth_handler-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.channel.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.channel-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.client.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.client-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.common.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.common-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.dsskey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.dsskey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.hostkeys.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.hostkeys-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.kex_gex.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.kex_gex-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.kex_group1.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.kex_group1-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.packet.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.packet-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.pkey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.pkey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.rsakey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.rsakey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.server-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_attr.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_attr-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_client.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_client-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_file.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_file-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_handle.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_handle-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_server-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_si.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_si-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.transport.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.transport-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.util.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.util-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED"><a title="paramiko.auth_handler.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-555', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" channel request from server.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L2006"></a><tt class="py-lineno">2006</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L2007"></a><tt class="py-lineno">2007</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt id="link-556" class="py-name" targets="Variable paramiko.auth_handler.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.auth_handler-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.channel.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.channel-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.client.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.client-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.common.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.common-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.dsskey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.dsskey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.hostkeys.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.hostkeys-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.kex_gex.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.kex_gex-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.kex_group1.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.kex_group1-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.packet.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.packet-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.pkey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.pkey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.rsakey.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.rsakey-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.server-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_attr.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_attr-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_client.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_client-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_file.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_file-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_handle.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_handle-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_server-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.sftp_si.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.sftp_si-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.transport.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.transport-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,Variable paramiko.util.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED=paramiko.util-module.html#OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED"><a title="paramiko.auth_handler.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.channel.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.client.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.common.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED @@ -3560,25 +3600,25 @@ paramiko.sftp_handle.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.sftp_server.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.sftp_si.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED paramiko.transport.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED -paramiko.util.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED" class="py-name" href="#" onclick="return doclink('link-531', 'OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED', 'link-531');">OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</a></tt> </tt> -<a name="L1975"></a><tt class="py-lineno">1975</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1976"></a><tt class="py-lineno">1976</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1977"></a><tt class="py-lineno">1977</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L1978"></a><tt class="py-lineno">1978</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1979"></a><tt class="py-lineno">1979</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L1980"></a><tt class="py-lineno">1980</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1981"></a><tt class="py-lineno">1981</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'direct-tcpip'</tt><tt class="py-op">:</tt> </tt> -<a name="L1982"></a><tt class="py-lineno">1982</tt> <tt class="py-line"> <tt class="py-comment"># handle direct-tcpip requests comming from the client</tt> </tt> -<a name="L1983"></a><tt class="py-lineno">1983</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">dest_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-532', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1984"></a><tt class="py-lineno">1984</tt> <tt class="py-line"> <tt class="py-name">dest_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-533" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-533', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1985"></a><tt class="py-lineno">1985</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-534" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-534', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1986"></a><tt class="py-lineno">1986</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-535', 'get_int', 'link-162');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1987"></a><tt class="py-lineno">1987</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name" targets="Method paramiko.ServerInterface.check_channel_direct_tcpip_request()=paramiko.ServerInterface-class.html#check_channel_direct_tcpip_request"><a title="paramiko.ServerInterface.check_channel_direct_tcpip_request" class="py-name" href="#" onclick="return doclink('link-536', 'check_channel_direct_tcpip_request', 'link-536');">check_channel_direct_tcpip_request</a></tt><tt class="py-op">(</tt> </tt> -<a name="L1988"></a><tt class="py-lineno">1988</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L1989"></a><tt class="py-lineno">1989</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-name">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1990"></a><tt class="py-lineno">1990</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L1991"></a><tt class="py-lineno">1991</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-537" class="py-name" targets="Method paramiko.ServerInterface.check_channel_request()=paramiko.ServerInterface-class.html#check_channel_request"><a title="paramiko.ServerInterface.check_channel_request" class="py-name" href="#" onclick="return doclink('link-537', 'check_channel_request', 'link-537');">check_channel_request</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">,</tt> <tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1992"></a><tt class="py-lineno">1992</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reason</tt> <tt class="py-op">!=</tt> <tt id="link-538" class="py-name" targets="Variable paramiko.auth_handler.OPEN_SUCCEEDED=paramiko.auth_handler-module.html#OPEN_SUCCEEDED,Variable paramiko.channel.OPEN_SUCCEEDED=paramiko.channel-module.html#OPEN_SUCCEEDED,Variable paramiko.client.OPEN_SUCCEEDED=paramiko.client-module.html#OPEN_SUCCEEDED,Variable paramiko.common.OPEN_SUCCEEDED=paramiko.common-module.html#OPEN_SUCCEEDED,Variable paramiko.dsskey.OPEN_SUCCEEDED=paramiko.dsskey-module.html#OPEN_SUCCEEDED,Variable paramiko.hostkeys.OPEN_SUCCEEDED=paramiko.hostkeys-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_gex.OPEN_SUCCEEDED=paramiko.kex_gex-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_group1.OPEN_SUCCEEDED=paramiko.kex_group1-module.html#OPEN_SUCCEEDED,Variable paramiko.packet.OPEN_SUCCEEDED=paramiko.packet-module.html#OPEN_SUCCEEDED,Variable paramiko.pkey.OPEN_SUCCEEDED=paramiko.pkey-module.html#OPEN_SUCCEEDED,Variable paramiko.rsakey.OPEN_SUCCEEDED=paramiko.rsakey-module.html#OPEN_SUCCEEDED,Variable paramiko.server.OPEN_SUCCEEDED=paramiko.server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp.OPEN_SUCCEEDED=paramiko.sftp-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_attr.OPEN_SUCCEEDED=paramiko.sftp_attr-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_client.OPEN_SUCCEEDED=paramiko.sftp_client-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_file.OPEN_SUCCEEDED=paramiko.sftp_file-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_handle.OPEN_SUCCEEDED=paramiko.sftp_handle-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_server.OPEN_SUCCEEDED=paramiko.sftp_server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_si.OPEN_SUCCEEDED=paramiko.sftp_si-module.html#OPEN_SUCCEEDED,Variable paramiko.transport.OPEN_SUCCEEDED=paramiko.transport-module.html#OPEN_SUCCEEDED,Variable paramiko.util.OPEN_SUCCEEDED=paramiko.util-module.html#OPEN_SUCCEEDED"><a title="paramiko.auth_handler.OPEN_SUCCEEDED +paramiko.util.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED" class="py-name" href="#" onclick="return doclink('link-556', 'OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED', 'link-556');">OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</a></tt> </tt> +<a name="L2008"></a><tt class="py-lineno">2008</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L2009"></a><tt class="py-lineno">2009</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2010"></a><tt class="py-lineno">2010</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L2011"></a><tt class="py-lineno">2011</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_next_channel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2012"></a><tt class="py-lineno">2012</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L2013"></a><tt class="py-lineno">2013</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2014"></a><tt class="py-lineno">2014</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'direct-tcpip'</tt><tt class="py-op">:</tt> </tt> +<a name="L2015"></a><tt class="py-lineno">2015</tt> <tt class="py-line"> <tt class="py-comment"># handle direct-tcpip requests comming from the client</tt> </tt> +<a name="L2016"></a><tt class="py-lineno">2016</tt> <tt class="py-line"> <tt class="py-name">dest_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-557', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2017"></a><tt class="py-lineno">2017</tt> <tt class="py-line"> <tt class="py-name">dest_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-558', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2018"></a><tt class="py-lineno">2018</tt> <tt class="py-line"> <tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-559', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2019"></a><tt class="py-lineno">2019</tt> <tt class="py-line"> <tt class="py-name">origin_port</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="paramiko.Message.get_int" class="py-name" href="#" onclick="return doclink('link-560', 'get_int', 'link-167');">get_int</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2020"></a><tt class="py-lineno">2020</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name" targets="Method paramiko.ServerInterface.check_channel_direct_tcpip_request()=paramiko.ServerInterface-class.html#check_channel_direct_tcpip_request"><a title="paramiko.ServerInterface.check_channel_direct_tcpip_request" class="py-name" href="#" onclick="return doclink('link-561', 'check_channel_direct_tcpip_request', 'link-561');">check_channel_direct_tcpip_request</a></tt><tt class="py-op">(</tt> </tt> +<a name="L2021"></a><tt class="py-lineno">2021</tt> <tt class="py-line"> <tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> +<a name="L2022"></a><tt class="py-lineno">2022</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">dest_addr</tt><tt class="py-op">,</tt> <tt class="py-name">dest_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L2023"></a><tt class="py-lineno">2023</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L2024"></a><tt class="py-lineno">2024</tt> <tt class="py-line"> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_object</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name" targets="Method paramiko.ServerInterface.check_channel_request()=paramiko.ServerInterface-class.html#check_channel_request"><a title="paramiko.ServerInterface.check_channel_request" class="py-name" href="#" onclick="return doclink('link-562', 'check_channel_request', 'link-562');">check_channel_request</a></tt><tt class="py-op">(</tt><tt class="py-name">kind</tt><tt class="py-op">,</tt> <tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L2025"></a><tt class="py-lineno">2025</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reason</tt> <tt class="py-op">!=</tt> <tt id="link-563" class="py-name" targets="Variable paramiko.auth_handler.OPEN_SUCCEEDED=paramiko.auth_handler-module.html#OPEN_SUCCEEDED,Variable paramiko.channel.OPEN_SUCCEEDED=paramiko.channel-module.html#OPEN_SUCCEEDED,Variable paramiko.client.OPEN_SUCCEEDED=paramiko.client-module.html#OPEN_SUCCEEDED,Variable paramiko.common.OPEN_SUCCEEDED=paramiko.common-module.html#OPEN_SUCCEEDED,Variable paramiko.dsskey.OPEN_SUCCEEDED=paramiko.dsskey-module.html#OPEN_SUCCEEDED,Variable paramiko.hostkeys.OPEN_SUCCEEDED=paramiko.hostkeys-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_gex.OPEN_SUCCEEDED=paramiko.kex_gex-module.html#OPEN_SUCCEEDED,Variable paramiko.kex_group1.OPEN_SUCCEEDED=paramiko.kex_group1-module.html#OPEN_SUCCEEDED,Variable paramiko.packet.OPEN_SUCCEEDED=paramiko.packet-module.html#OPEN_SUCCEEDED,Variable paramiko.pkey.OPEN_SUCCEEDED=paramiko.pkey-module.html#OPEN_SUCCEEDED,Variable paramiko.rsakey.OPEN_SUCCEEDED=paramiko.rsakey-module.html#OPEN_SUCCEEDED,Variable paramiko.server.OPEN_SUCCEEDED=paramiko.server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp.OPEN_SUCCEEDED=paramiko.sftp-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_attr.OPEN_SUCCEEDED=paramiko.sftp_attr-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_client.OPEN_SUCCEEDED=paramiko.sftp_client-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_file.OPEN_SUCCEEDED=paramiko.sftp_file-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_handle.OPEN_SUCCEEDED=paramiko.sftp_handle-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_server.OPEN_SUCCEEDED=paramiko.sftp_server-module.html#OPEN_SUCCEEDED,Variable paramiko.sftp_si.OPEN_SUCCEEDED=paramiko.sftp_si-module.html#OPEN_SUCCEEDED,Variable paramiko.transport.OPEN_SUCCEEDED=paramiko.transport-module.html#OPEN_SUCCEEDED,Variable paramiko.util.OPEN_SUCCEEDED=paramiko.util-module.html#OPEN_SUCCEEDED"><a title="paramiko.auth_handler.OPEN_SUCCEEDED paramiko.channel.OPEN_SUCCEEDED paramiko.client.OPEN_SUCCEEDED paramiko.common.OPEN_SUCCEEDED @@ -3598,8 +3638,8 @@ paramiko.sftp_handle.OPEN_SUCCEEDED paramiko.sftp_server.OPEN_SUCCEEDED paramiko.sftp_si.OPEN_SUCCEEDED paramiko.transport.OPEN_SUCCEEDED -paramiko.util.OPEN_SUCCEEDED" class="py-name" href="#" onclick="return doclink('link-538', 'OPEN_SUCCEEDED', 'link-538');">OPEN_SUCCEEDED</a></tt><tt class="py-op">:</tt> </tt> -<a name="L1993"></a><tt class="py-lineno">1993</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.OPEN_SUCCEEDED" class="py-name" href="#" onclick="return doclink('link-563', 'OPEN_SUCCEEDED', 'link-563');">OPEN_SUCCEEDED</a></tt><tt class="py-op">:</tt> </tt> +<a name="L2026"></a><tt class="py-lineno">2026</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-564" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3620,11 +3660,11 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-539', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" channel request from client.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L1994"></a><tt class="py-lineno">1994</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L1995"></a><tt class="py-lineno">1995</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reject</tt><tt class="py-op">:</tt> </tt> -<a name="L1996"></a><tt class="py-lineno">1996</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-540" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-540', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L1997"></a><tt class="py-lineno">1997</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-541', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-542" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.channel.MSG_CHANNEL_OPEN_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.client.MSG_CHANNEL_OPEN_FAILURE=paramiko.client-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.common.MSG_CHANNEL_OPEN_FAILURE=paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_OPEN_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.packet.MSG_CHANNEL_OPEN_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_OPEN_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_OPEN_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.server.MSG_CHANNEL_OPEN_FAILURE=paramiko.server-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.transport.MSG_CHANNEL_OPEN_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.util.MSG_CHANNEL_OPEN_FAILURE=paramiko.util-module.html#MSG_CHANNEL_OPEN_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-564', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Rejecting "%s" channel request from client.'</tt> <tt class="py-op">%</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L2027"></a><tt class="py-lineno">2027</tt> <tt class="py-line"> <tt class="py-name">reject</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L2028"></a><tt class="py-lineno">2028</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">reject</tt><tt class="py-op">:</tt> </tt> +<a name="L2029"></a><tt class="py-lineno">2029</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt id="link-565" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-565', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2030"></a><tt class="py-lineno">2030</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-566', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-567" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.channel.MSG_CHANNEL_OPEN_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.client.MSG_CHANNEL_OPEN_FAILURE=paramiko.client-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.common.MSG_CHANNEL_OPEN_FAILURE=paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_OPEN_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.packet.MSG_CHANNEL_OPEN_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_OPEN_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_OPEN_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.server.MSG_CHANNEL_OPEN_FAILURE=paramiko.server-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.transport.MSG_CHANNEL_OPEN_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_OPEN_FAILURE,Variable paramiko.util.MSG_CHANNEL_OPEN_FAILURE=paramiko.util-module.html#MSG_CHANNEL_OPEN_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE paramiko.channel.MSG_CHANNEL_OPEN_FAILURE paramiko.client.MSG_CHANNEL_OPEN_FAILURE paramiko.common.MSG_CHANNEL_OPEN_FAILURE @@ -3644,27 +3684,27 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN_FAILURE paramiko.sftp_server.MSG_CHANNEL_OPEN_FAILURE paramiko.sftp_si.MSG_CHANNEL_OPEN_FAILURE paramiko.transport.MSG_CHANNEL_OPEN_FAILURE -paramiko.util.MSG_CHANNEL_OPEN_FAILURE" class="py-name" href="#" onclick="return doclink('link-542', 'MSG_CHANNEL_OPEN_FAILURE', 'link-542');">MSG_CHANNEL_OPEN_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L1998"></a><tt class="py-lineno">1998</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-543', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L1999"></a><tt class="py-lineno">1999</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-544" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-544', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt> -<a name="L2000"></a><tt class="py-lineno">2000</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-545" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-545', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -<a name="L2001"></a><tt class="py-lineno">2001</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-546', 'add_string', 'link-142');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'en'</tt><tt class="py-op">)</tt> </tt> -<a name="L2002"></a><tt class="py-lineno">2002</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> -<a name="L2003"></a><tt class="py-lineno">2003</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L2004"></a><tt class="py-lineno">2004</tt> <tt class="py-line"> </tt> -<a name="L2005"></a><tt class="py-lineno">2005</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt id="link-547" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-547', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L2006"></a><tt class="py-lineno">2006</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2007"></a><tt class="py-lineno">2007</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L2008"></a><tt class="py-lineno">2008</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="paramiko.SFTPClient.put -paramiko.transport.ChannelMap.put" class="py-name" href="#" onclick="return doclink('link-548', 'put', 'link-153');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> -<a name="L2009"></a><tt class="py-lineno">2009</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">[</tt><tt class="py-name">my_chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L2010"></a><tt class="py-lineno">2010</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_transport</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L2011"></a><tt class="py-lineno">2011</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L2012"></a><tt class="py-lineno">2012</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_remote_channel</tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">initial_window_size</tt><tt class="py-op">,</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L2013"></a><tt class="py-lineno">2013</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L2014"></a><tt class="py-lineno">2014</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2015"></a><tt class="py-lineno">2015</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-549" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-549', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2016"></a><tt class="py-lineno">2016</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-550', 'add_byte', 'link-140');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-551" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_OPEN_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.client.MSG_CHANNEL_OPEN_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.common.MSG_CHANNEL_OPEN_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_OPEN_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.server.MSG_CHANNEL_OPEN_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_OPEN_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.util.MSG_CHANNEL_OPEN_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_OPEN_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS +paramiko.util.MSG_CHANNEL_OPEN_FAILURE" class="py-name" href="#" onclick="return doclink('link-567', 'MSG_CHANNEL_OPEN_FAILURE', 'link-567');">MSG_CHANNEL_OPEN_FAILURE</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L2031"></a><tt class="py-lineno">2031</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-568" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-568', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L2032"></a><tt class="py-lineno">2032</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-569', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt> +<a name="L2033"></a><tt class="py-lineno">2033</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-570" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-570', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> +<a name="L2034"></a><tt class="py-lineno">2034</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt id="link-571" class="py-name"><a title="paramiko.Message.add_string" class="py-name" href="#" onclick="return doclink('link-571', 'add_string', 'link-147');">add_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'en'</tt><tt class="py-op">)</tt> </tt> +<a name="L2035"></a><tt class="py-lineno">2035</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> +<a name="L2036"></a><tt class="py-lineno">2036</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L2037"></a><tt class="py-lineno">2037</tt> <tt class="py-line"> </tt> +<a name="L2038"></a><tt class="py-lineno">2038</tt> <tt class="py-line"> <tt class="py-name">chan</tt> <tt class="py-op">=</tt> <tt id="link-572" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-572', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L2039"></a><tt class="py-lineno">2039</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2040"></a><tt class="py-lineno">2040</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L2041"></a><tt class="py-lineno">2041</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_channels</tt><tt class="py-op">.</tt><tt id="link-573" class="py-name"><a title="paramiko.SFTPClient.put +paramiko.transport.ChannelMap.put" class="py-name" href="#" onclick="return doclink('link-573', 'put', 'link-158');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> +<a name="L2042"></a><tt class="py-lineno">2042</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels_seen</tt><tt class="py-op">[</tt><tt class="py-name">my_chanid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> +<a name="L2043"></a><tt class="py-lineno">2043</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_transport</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> +<a name="L2044"></a><tt class="py-lineno">2044</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L2045"></a><tt class="py-lineno">2045</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">_set_remote_channel</tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">,</tt> <tt class="py-name">initial_window_size</tt><tt class="py-op">,</tt> <tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L2046"></a><tt class="py-lineno">2046</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L2047"></a><tt class="py-lineno">2047</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2048"></a><tt class="py-lineno">2048</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-574" class="py-name"><a title="paramiko.Message" class="py-name" href="#" onclick="return doclink('link-574', 'Message', 'link-24');">Message</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2049"></a><tt class="py-lineno">2049</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="paramiko.Message.add_byte" class="py-name" href="#" onclick="return doclink('link-575', 'add_byte', 'link-145');">add_byte</a></tt><tt class="py-op">(</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt id="link-576" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_OPEN_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.client.MSG_CHANNEL_OPEN_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.common.MSG_CHANNEL_OPEN_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_OPEN_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_OPEN_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_OPEN_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_OPEN_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_OPEN_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.server.MSG_CHANNEL_OPEN_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_OPEN_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_OPEN_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_OPEN_SUCCESS,Variable paramiko.util.MSG_CHANNEL_OPEN_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_OPEN_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS paramiko.channel.MSG_CHANNEL_OPEN_SUCCESS paramiko.client.MSG_CHANNEL_OPEN_SUCCESS paramiko.common.MSG_CHANNEL_OPEN_SUCCESS @@ -3684,13 +3724,13 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN_SUCCESS paramiko.sftp_server.MSG_CHANNEL_OPEN_SUCCESS paramiko.sftp_si.MSG_CHANNEL_OPEN_SUCCESS paramiko.transport.MSG_CHANNEL_OPEN_SUCCESS -paramiko.util.MSG_CHANNEL_OPEN_SUCCESS" class="py-name" href="#" onclick="return doclink('link-551', 'MSG_CHANNEL_OPEN_SUCCESS', 'link-551');">MSG_CHANNEL_OPEN_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L2017"></a><tt class="py-lineno">2017</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-552', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L2018"></a><tt class="py-lineno">2018</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-553', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> -<a name="L2019"></a><tt class="py-lineno">2019</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-554', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">)</tt> </tt> -<a name="L2020"></a><tt class="py-lineno">2020</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-555', 'add_int', 'link-143');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> -<a name="L2021"></a><tt class="py-lineno">2021</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> -<a name="L2022"></a><tt class="py-lineno">2022</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-556" class="py-name"><a title="paramiko.auth_handler.INFO +paramiko.util.MSG_CHANNEL_OPEN_SUCCESS" class="py-name" href="#" onclick="return doclink('link-576', 'MSG_CHANNEL_OPEN_SUCCESS', 'link-576');">MSG_CHANNEL_OPEN_SUCCESS</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L2050"></a><tt class="py-lineno">2050</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-577', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L2051"></a><tt class="py-lineno">2051</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-578" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-578', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">my_chanid</tt><tt class="py-op">)</tt> </tt> +<a name="L2052"></a><tt class="py-lineno">2052</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-579" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-579', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_size</tt><tt class="py-op">)</tt> </tt> +<a name="L2053"></a><tt class="py-lineno">2053</tt> <tt class="py-line"> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-580" class="py-name"><a title="paramiko.Message.add_int" class="py-name" href="#" onclick="return doclink('link-580', 'add_int', 'link-148');">add_int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_packet_size</tt><tt class="py-op">)</tt> </tt> +<a name="L2054"></a><tt class="py-lineno">2054</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_send_message</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt> +<a name="L2055"></a><tt class="py-lineno">2055</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-581" class="py-name"><a title="paramiko.auth_handler.INFO paramiko.channel.INFO paramiko.client.INFO paramiko.common.INFO @@ -3711,20 +3751,20 @@ paramiko.sftp_handle.INFO paramiko.sftp_server.INFO paramiko.sftp_si.INFO paramiko.transport.INFO -paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-556', 'INFO', 'link-347');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d (%s) opened.'</tt><tt class="py-op">,</tt> <tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> -<a name="L2023"></a><tt class="py-lineno">2023</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">:</tt> </tt> -<a name="L2024"></a><tt class="py-lineno">2024</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L2025"></a><tt class="py-lineno">2025</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">:</tt> </tt> -<a name="L2026"></a><tt class="py-lineno">2026</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt> </tt> -<a name="L2027"></a><tt class="py-lineno">2027</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">server_addr</tt><tt class="py-op">,</tt> <tt class="py-name">server_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L2028"></a><tt class="py-lineno">2028</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L2029"></a><tt class="py-lineno">2029</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> -</div><a name="L2030"></a><tt class="py-lineno">2030</tt> <tt class="py-line"> </tt> -<a name="Transport._parse_debug"></a><div id="Transport._parse_debug-def"><a name="L2031"></a><tt class="py-lineno">2031</tt> <a class="py-toggle" href="#" id="Transport._parse_debug-toggle" onclick="return toggle('Transport._parse_debug');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_debug">_parse_debug</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._parse_debug-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_debug-expanded"><a name="L2032"></a><tt class="py-lineno">2032</tt> <tt class="py-line"> <tt class="py-name">always_display</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-557', 'get_boolean', 'link-399');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2033"></a><tt class="py-lineno">2033</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-558', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2034"></a><tt class="py-lineno">2034</tt> <tt class="py-line"> <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-559', 'get_string', 'link-477');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2035"></a><tt class="py-lineno">2035</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-560" class="py-name"><a title="paramiko.auth_handler.DEBUG +paramiko.util.INFO" class="py-name" href="#" onclick="return doclink('link-581', 'INFO', 'link-372');">INFO</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Secsh channel %d (%s) opened.'</tt><tt class="py-op">,</tt> <tt class="py-name">my_chanid</tt><tt class="py-op">,</tt> <tt class="py-name">kind</tt><tt class="py-op">)</tt> </tt> +<a name="L2056"></a><tt class="py-lineno">2056</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'x11'</tt><tt class="py-op">:</tt> </tt> +<a name="L2057"></a><tt class="py-lineno">2057</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x11_handler</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L2058"></a><tt class="py-lineno">2058</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">kind</tt> <tt class="py-op">==</tt> <tt class="py-string">'forwarded-tcpip'</tt><tt class="py-op">:</tt> </tt> +<a name="L2059"></a><tt class="py-lineno">2059</tt> <tt class="py-line"> <tt class="py-name">chan</tt><tt class="py-op">.</tt><tt class="py-name">origin_addr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt> </tt> +<a name="L2060"></a><tt class="py-lineno">2060</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tcp_handler</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">origin_addr</tt><tt class="py-op">,</tt> <tt class="py-name">origin_port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">server_addr</tt><tt class="py-op">,</tt> <tt class="py-name">server_port</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L2061"></a><tt class="py-lineno">2061</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L2062"></a><tt class="py-lineno">2062</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_queue_incoming_channel</tt><tt class="py-op">(</tt><tt class="py-name">chan</tt><tt class="py-op">)</tt> </tt> +</div><a name="L2063"></a><tt class="py-lineno">2063</tt> <tt class="py-line"> </tt> +<a name="Transport._parse_debug"></a><div id="Transport._parse_debug-def"><a name="L2064"></a><tt class="py-lineno">2064</tt> <a class="py-toggle" href="#" id="Transport._parse_debug-toggle" onclick="return toggle('Transport._parse_debug');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_parse_debug">_parse_debug</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._parse_debug-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._parse_debug-expanded"><a name="L2065"></a><tt class="py-lineno">2065</tt> <tt class="py-line"> <tt class="py-name">always_display</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="paramiko.Message.get_boolean" class="py-name" href="#" onclick="return doclink('link-582', 'get_boolean', 'link-424');">get_boolean</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2066"></a><tt class="py-lineno">2066</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-583', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2067"></a><tt class="py-lineno">2067</tt> <tt class="py-line"> <tt class="py-name">lang</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt id="link-584" class="py-name"><a title="paramiko.Message.get_string" class="py-name" href="#" onclick="return doclink('link-584', 'get_string', 'link-502');">get_string</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2068"></a><tt class="py-lineno">2068</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_log</tt><tt class="py-op">(</tt><tt id="link-585" class="py-name"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -3745,21 +3785,21 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-560', 'DEBUG', 'link-187');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Debug msg: '</tt> <tt class="py-op">+</tt> <tt id="link-561" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-561', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-562" class="py-name" targets="Function paramiko.util.safe_string()=paramiko.util-module.html#safe_string"><a title="paramiko.util.safe_string" class="py-name" href="#" onclick="return doclink('link-562', 'safe_string', 'link-562');">safe_string</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L2036"></a><tt class="py-lineno">2036</tt> <tt class="py-line"> </tt> -<a name="Transport._get_subsystem_handler"></a><div id="Transport._get_subsystem_handler-def"><a name="L2037"></a><tt class="py-lineno">2037</tt> <a class="py-toggle" href="#" id="Transport._get_subsystem_handler-toggle" onclick="return toggle('Transport._get_subsystem_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_subsystem_handler">_get_subsystem_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Transport._get_subsystem_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_subsystem_handler-expanded"><a name="L2038"></a><tt class="py-lineno">2038</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L2039"></a><tt class="py-lineno">2039</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L2040"></a><tt class="py-lineno">2040</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-563" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-563', 'name', 'link-56');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">:</tt> </tt> -<a name="L2041"></a><tt class="py-lineno">2041</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt> -<a name="L2042"></a><tt class="py-lineno">2042</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">[</tt><tt id="link-564" class="py-name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-564', 'name', 'link-56');">name</a></tt><tt class="py-op">]</tt> </tt> -<a name="L2043"></a><tt class="py-lineno">2043</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L2044"></a><tt class="py-lineno">2044</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L2045"></a><tt class="py-lineno">2045</tt> <tt class="py-line"> </tt> -<a name="L2046"></a><tt class="py-lineno">2046</tt> <tt class="py-line"> <tt id="link-565" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-565', '_handler_table', 'link-296');">_handler_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L2047"></a><tt class="py-lineno">2047</tt> <tt class="py-line"> <tt id="link-566" class="py-name"><a title="paramiko.auth_handler.MSG_NEWKEYS +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-585', 'DEBUG', 'link-192');">DEBUG</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Debug msg: '</tt> <tt class="py-op">+</tt> <tt id="link-586" class="py-name"><a title="paramiko.util" class="py-name" href="#" onclick="return doclink('link-586', 'util', 'link-1');">util</a></tt><tt class="py-op">.</tt><tt id="link-587" class="py-name" targets="Function paramiko.util.safe_string()=paramiko.util-module.html#safe_string"><a title="paramiko.util.safe_string" class="py-name" href="#" onclick="return doclink('link-587', 'safe_string', 'link-587');">safe_string</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +</div><a name="L2069"></a><tt class="py-lineno">2069</tt> <tt class="py-line"> </tt> +<a name="Transport._get_subsystem_handler"></a><div id="Transport._get_subsystem_handler-def"><a name="L2070"></a><tt class="py-lineno">2070</tt> <a class="py-toggle" href="#" id="Transport._get_subsystem_handler-toggle" onclick="return toggle('Transport._get_subsystem_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.transport.Transport-class.html#_get_subsystem_handler">_get_subsystem_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Transport._get_subsystem_handler-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Transport._get_subsystem_handler-expanded"><a name="L2071"></a><tt class="py-lineno">2071</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L2072"></a><tt class="py-lineno">2072</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L2073"></a><tt class="py-lineno">2073</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-588" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-588', 'name', 'link-60');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">:</tt> </tt> +<a name="L2074"></a><tt class="py-lineno">2074</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt> +<a name="L2075"></a><tt class="py-lineno">2075</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">subsystem_table</tt><tt class="py-op">[</tt><tt id="link-589" class="py-name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-589', 'name', 'link-60');">name</a></tt><tt class="py-op">]</tt> </tt> +<a name="L2076"></a><tt class="py-lineno">2076</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L2077"></a><tt class="py-lineno">2077</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L2078"></a><tt class="py-lineno">2078</tt> <tt class="py-line"> </tt> +<a name="L2079"></a><tt class="py-lineno">2079</tt> <tt class="py-line"> <tt id="link-590" class="py-name"><a title="paramiko.Transport._handler_table" class="py-name" href="#" onclick="return doclink('link-590', '_handler_table', 'link-321');">_handler_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L2080"></a><tt class="py-lineno">2080</tt> <tt class="py-line"> <tt id="link-591" class="py-name"><a title="paramiko.auth_handler.MSG_NEWKEYS paramiko.channel.MSG_NEWKEYS paramiko.client.MSG_NEWKEYS paramiko.common.MSG_NEWKEYS @@ -3779,8 +3819,8 @@ paramiko.sftp_handle.MSG_NEWKEYS paramiko.sftp_server.MSG_NEWKEYS paramiko.sftp_si.MSG_NEWKEYS paramiko.transport.MSG_NEWKEYS -paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-566', 'MSG_NEWKEYS', 'link-458');">MSG_NEWKEYS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_newkeys</tt><tt class="py-op">,</tt> </tt> -<a name="L2048"></a><tt class="py-lineno">2048</tt> <tt class="py-line"> <tt id="link-567" class="py-name"><a title="paramiko.auth_handler.MSG_GLOBAL_REQUEST +paramiko.util.MSG_NEWKEYS" class="py-name" href="#" onclick="return doclink('link-591', 'MSG_NEWKEYS', 'link-483');">MSG_NEWKEYS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_newkeys</tt><tt class="py-op">,</tt> </tt> +<a name="L2081"></a><tt class="py-lineno">2081</tt> <tt class="py-line"> <tt id="link-592" class="py-name"><a title="paramiko.auth_handler.MSG_GLOBAL_REQUEST paramiko.channel.MSG_GLOBAL_REQUEST paramiko.client.MSG_GLOBAL_REQUEST paramiko.common.MSG_GLOBAL_REQUEST @@ -3800,8 +3840,8 @@ paramiko.sftp_handle.MSG_GLOBAL_REQUEST paramiko.sftp_server.MSG_GLOBAL_REQUEST paramiko.sftp_si.MSG_GLOBAL_REQUEST paramiko.transport.MSG_GLOBAL_REQUEST -paramiko.util.MSG_GLOBAL_REQUEST" class="py-name" href="#" onclick="return doclink('link-567', 'MSG_GLOBAL_REQUEST', 'link-183');">MSG_GLOBAL_REQUEST</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_global_request</tt><tt class="py-op">,</tt> </tt> -<a name="L2049"></a><tt class="py-lineno">2049</tt> <tt class="py-line"> <tt id="link-568" class="py-name"><a title="paramiko.auth_handler.MSG_REQUEST_SUCCESS +paramiko.util.MSG_GLOBAL_REQUEST" class="py-name" href="#" onclick="return doclink('link-592', 'MSG_GLOBAL_REQUEST', 'link-188');">MSG_GLOBAL_REQUEST</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_global_request</tt><tt class="py-op">,</tt> </tt> +<a name="L2082"></a><tt class="py-lineno">2082</tt> <tt class="py-line"> <tt id="link-593" class="py-name"><a title="paramiko.auth_handler.MSG_REQUEST_SUCCESS paramiko.channel.MSG_REQUEST_SUCCESS paramiko.client.MSG_REQUEST_SUCCESS paramiko.common.MSG_REQUEST_SUCCESS @@ -3821,8 +3861,8 @@ paramiko.sftp_handle.MSG_REQUEST_SUCCESS paramiko.sftp_server.MSG_REQUEST_SUCCESS paramiko.sftp_si.MSG_REQUEST_SUCCESS paramiko.transport.MSG_REQUEST_SUCCESS -paramiko.util.MSG_REQUEST_SUCCESS" class="py-name" href="#" onclick="return doclink('link-568', 'MSG_REQUEST_SUCCESS', 'link-492');">MSG_REQUEST_SUCCESS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_request_success</tt><tt class="py-op">,</tt> </tt> -<a name="L2050"></a><tt class="py-lineno">2050</tt> <tt class="py-line"> <tt id="link-569" class="py-name"><a title="paramiko.auth_handler.MSG_REQUEST_FAILURE +paramiko.util.MSG_REQUEST_SUCCESS" class="py-name" href="#" onclick="return doclink('link-593', 'MSG_REQUEST_SUCCESS', 'link-517');">MSG_REQUEST_SUCCESS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_request_success</tt><tt class="py-op">,</tt> </tt> +<a name="L2083"></a><tt class="py-lineno">2083</tt> <tt class="py-line"> <tt id="link-594" class="py-name"><a title="paramiko.auth_handler.MSG_REQUEST_FAILURE paramiko.channel.MSG_REQUEST_FAILURE paramiko.client.MSG_REQUEST_FAILURE paramiko.common.MSG_REQUEST_FAILURE @@ -3842,8 +3882,8 @@ paramiko.sftp_handle.MSG_REQUEST_FAILURE paramiko.sftp_server.MSG_REQUEST_FAILURE paramiko.sftp_si.MSG_REQUEST_FAILURE paramiko.transport.MSG_REQUEST_FAILURE -paramiko.util.MSG_REQUEST_FAILURE" class="py-name" href="#" onclick="return doclink('link-569', 'MSG_REQUEST_FAILURE', 'link-495');">MSG_REQUEST_FAILURE</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_request_failure</tt><tt class="py-op">,</tt> </tt> -<a name="L2051"></a><tt class="py-lineno">2051</tt> <tt class="py-line"> <tt id="link-570" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS +paramiko.util.MSG_REQUEST_FAILURE" class="py-name" href="#" onclick="return doclink('link-594', 'MSG_REQUEST_FAILURE', 'link-520');">MSG_REQUEST_FAILURE</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_request_failure</tt><tt class="py-op">,</tt> </tt> +<a name="L2084"></a><tt class="py-lineno">2084</tt> <tt class="py-line"> <tt id="link-595" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_SUCCESS paramiko.channel.MSG_CHANNEL_OPEN_SUCCESS paramiko.client.MSG_CHANNEL_OPEN_SUCCESS paramiko.common.MSG_CHANNEL_OPEN_SUCCESS @@ -3863,8 +3903,8 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN_SUCCESS paramiko.sftp_server.MSG_CHANNEL_OPEN_SUCCESS paramiko.sftp_si.MSG_CHANNEL_OPEN_SUCCESS paramiko.transport.MSG_CHANNEL_OPEN_SUCCESS -paramiko.util.MSG_CHANNEL_OPEN_SUCCESS" class="py-name" href="#" onclick="return doclink('link-570', 'MSG_CHANNEL_OPEN_SUCCESS', 'link-551');">MSG_CHANNEL_OPEN_SUCCESS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open_success</tt><tt class="py-op">,</tt> </tt> -<a name="L2052"></a><tt class="py-lineno">2052</tt> <tt class="py-line"> <tt id="link-571" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE +paramiko.util.MSG_CHANNEL_OPEN_SUCCESS" class="py-name" href="#" onclick="return doclink('link-595', 'MSG_CHANNEL_OPEN_SUCCESS', 'link-576');">MSG_CHANNEL_OPEN_SUCCESS</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open_success</tt><tt class="py-op">,</tt> </tt> +<a name="L2085"></a><tt class="py-lineno">2085</tt> <tt class="py-line"> <tt id="link-596" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN_FAILURE paramiko.channel.MSG_CHANNEL_OPEN_FAILURE paramiko.client.MSG_CHANNEL_OPEN_FAILURE paramiko.common.MSG_CHANNEL_OPEN_FAILURE @@ -3884,8 +3924,8 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN_FAILURE paramiko.sftp_server.MSG_CHANNEL_OPEN_FAILURE paramiko.sftp_si.MSG_CHANNEL_OPEN_FAILURE paramiko.transport.MSG_CHANNEL_OPEN_FAILURE -paramiko.util.MSG_CHANNEL_OPEN_FAILURE" class="py-name" href="#" onclick="return doclink('link-571', 'MSG_CHANNEL_OPEN_FAILURE', 'link-542');">MSG_CHANNEL_OPEN_FAILURE</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open_failure</tt><tt class="py-op">,</tt> </tt> -<a name="L2053"></a><tt class="py-lineno">2053</tt> <tt class="py-line"> <tt id="link-572" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN +paramiko.util.MSG_CHANNEL_OPEN_FAILURE" class="py-name" href="#" onclick="return doclink('link-596', 'MSG_CHANNEL_OPEN_FAILURE', 'link-567');">MSG_CHANNEL_OPEN_FAILURE</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open_failure</tt><tt class="py-op">,</tt> </tt> +<a name="L2086"></a><tt class="py-lineno">2086</tt> <tt class="py-line"> <tt id="link-597" class="py-name"><a title="paramiko.auth_handler.MSG_CHANNEL_OPEN paramiko.channel.MSG_CHANNEL_OPEN paramiko.client.MSG_CHANNEL_OPEN paramiko.common.MSG_CHANNEL_OPEN @@ -3905,8 +3945,8 @@ paramiko.sftp_handle.MSG_CHANNEL_OPEN paramiko.sftp_server.MSG_CHANNEL_OPEN paramiko.sftp_si.MSG_CHANNEL_OPEN paramiko.transport.MSG_CHANNEL_OPEN -paramiko.util.MSG_CHANNEL_OPEN" class="py-name" href="#" onclick="return doclink('link-572', 'MSG_CHANNEL_OPEN', 'link-141');">MSG_CHANNEL_OPEN</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open</tt><tt class="py-op">,</tt> </tt> -<a name="L2054"></a><tt class="py-lineno">2054</tt> <tt class="py-line"> <tt id="link-573" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT +paramiko.util.MSG_CHANNEL_OPEN" class="py-name" href="#" onclick="return doclink('link-597', 'MSG_CHANNEL_OPEN', 'link-146');">MSG_CHANNEL_OPEN</a></tt><tt class="py-op">:</tt> <tt class="py-name">_parse_channel_open</tt><tt class="py-op">,</tt> </tt> +<a name="L2087"></a><tt class="py-lineno">2087</tt> <tt class="py-line"> <tt id="link-598" class="py-name"><a title="paramiko.auth_handler.MSG_KEXINIT paramiko.channel.MSG_KEXINIT paramiko.client.MSG_KEXINIT paramiko.common.MSG_KEXINIT @@ -3926,11 +3966,11 @@ paramiko.sftp_handle.MSG_KEXINIT paramiko.sftp_server.MSG_KEXINIT paramiko.sftp_si.MSG_KEXINIT paramiko.transport.MSG_KEXINIT -paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-573', 'MSG_KEXINIT', 'link-288');">MSG_KEXINIT</a></tt><tt class="py-op">:</tt> <tt class="py-name">_negotiate_keys</tt><tt class="py-op">,</tt> </tt> -<a name="L2055"></a><tt class="py-lineno">2055</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L2056"></a><tt class="py-lineno">2056</tt> <tt class="py-line"> </tt> -<a name="L2057"></a><tt class="py-lineno">2057</tt> <tt class="py-line"> <tt id="link-574" class="py-name"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-574', '_channel_handler_table', 'link-298');">_channel_handler_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L2058"></a><tt class="py-lineno">2058</tt> <tt class="py-line"> <tt id="link-575" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.client.MSG_CHANNEL_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.common.MSG_CHANNEL_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.server.MSG_CHANNEL_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.util.MSG_CHANNEL_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_SUCCESS +paramiko.util.MSG_KEXINIT" class="py-name" href="#" onclick="return doclink('link-598', 'MSG_KEXINIT', 'link-313');">MSG_KEXINIT</a></tt><tt class="py-op">:</tt> <tt class="py-name">_negotiate_keys</tt><tt class="py-op">,</tt> </tt> +<a name="L2088"></a><tt class="py-lineno">2088</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +<a name="L2089"></a><tt class="py-lineno">2089</tt> <tt class="py-line"> </tt> +<a name="L2090"></a><tt class="py-lineno">2090</tt> <tt class="py-line"> <tt id="link-599" class="py-name"><a title="paramiko.Transport._channel_handler_table" class="py-name" href="#" onclick="return doclink('link-599', '_channel_handler_table', 'link-323');">_channel_handler_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> +<a name="L2091"></a><tt class="py-lineno">2091</tt> <tt class="py-line"> <tt id="link-600" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_SUCCESS=paramiko.auth_handler-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.channel.MSG_CHANNEL_SUCCESS=paramiko.channel-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.client.MSG_CHANNEL_SUCCESS=paramiko.client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.common.MSG_CHANNEL_SUCCESS=paramiko.common-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.dsskey.MSG_CHANNEL_SUCCESS=paramiko.dsskey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.hostkeys.MSG_CHANNEL_SUCCESS=paramiko.hostkeys-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_gex.MSG_CHANNEL_SUCCESS=paramiko.kex_gex-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.kex_group1.MSG_CHANNEL_SUCCESS=paramiko.kex_group1-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.packet.MSG_CHANNEL_SUCCESS=paramiko.packet-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.pkey.MSG_CHANNEL_SUCCESS=paramiko.pkey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.rsakey.MSG_CHANNEL_SUCCESS=paramiko.rsakey-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.server.MSG_CHANNEL_SUCCESS=paramiko.server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp.MSG_CHANNEL_SUCCESS=paramiko.sftp-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_attr.MSG_CHANNEL_SUCCESS=paramiko.sftp_attr-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_client.MSG_CHANNEL_SUCCESS=paramiko.sftp_client-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_file.MSG_CHANNEL_SUCCESS=paramiko.sftp_file-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_handle.MSG_CHANNEL_SUCCESS=paramiko.sftp_handle-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_server.MSG_CHANNEL_SUCCESS=paramiko.sftp_server-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.sftp_si.MSG_CHANNEL_SUCCESS=paramiko.sftp_si-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.transport.MSG_CHANNEL_SUCCESS=paramiko.transport-module.html#MSG_CHANNEL_SUCCESS,Variable paramiko.util.MSG_CHANNEL_SUCCESS=paramiko.util-module.html#MSG_CHANNEL_SUCCESS"><a title="paramiko.auth_handler.MSG_CHANNEL_SUCCESS paramiko.channel.MSG_CHANNEL_SUCCESS paramiko.client.MSG_CHANNEL_SUCCESS paramiko.common.MSG_CHANNEL_SUCCESS @@ -3950,8 +3990,8 @@ paramiko.sftp_handle.MSG_CHANNEL_SUCCESS paramiko.sftp_server.MSG_CHANNEL_SUCCESS paramiko.sftp_si.MSG_CHANNEL_SUCCESS paramiko.transport.MSG_CHANNEL_SUCCESS -paramiko.util.MSG_CHANNEL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-575', 'MSG_CHANNEL_SUCCESS', 'link-575');">MSG_CHANNEL_SUCCESS</a></tt><tt class="py-op">:</tt> <tt id="link-576" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-576', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_request_success</tt><tt class="py-op">,</tt> </tt> -<a name="L2059"></a><tt class="py-lineno">2059</tt> <tt class="py-line"> <tt id="link-577" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.channel.MSG_CHANNEL_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.client.MSG_CHANNEL_FAILURE=paramiko.client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.common.MSG_CHANNEL_FAILURE=paramiko.common-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.packet.MSG_CHANNEL_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.server.MSG_CHANNEL_FAILURE=paramiko.server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.transport.MSG_CHANNEL_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.util.MSG_CHANNEL_FAILURE=paramiko.util-module.html#MSG_CHANNEL_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_FAILURE +paramiko.util.MSG_CHANNEL_SUCCESS" class="py-name" href="#" onclick="return doclink('link-600', 'MSG_CHANNEL_SUCCESS', 'link-600');">MSG_CHANNEL_SUCCESS</a></tt><tt class="py-op">:</tt> <tt id="link-601" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-601', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_request_success</tt><tt class="py-op">,</tt> </tt> +<a name="L2092"></a><tt class="py-lineno">2092</tt> <tt class="py-line"> <tt id="link-602" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_FAILURE=paramiko.auth_handler-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.channel.MSG_CHANNEL_FAILURE=paramiko.channel-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.client.MSG_CHANNEL_FAILURE=paramiko.client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.common.MSG_CHANNEL_FAILURE=paramiko.common-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.dsskey.MSG_CHANNEL_FAILURE=paramiko.dsskey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.hostkeys.MSG_CHANNEL_FAILURE=paramiko.hostkeys-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_gex.MSG_CHANNEL_FAILURE=paramiko.kex_gex-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.kex_group1.MSG_CHANNEL_FAILURE=paramiko.kex_group1-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.packet.MSG_CHANNEL_FAILURE=paramiko.packet-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.pkey.MSG_CHANNEL_FAILURE=paramiko.pkey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.rsakey.MSG_CHANNEL_FAILURE=paramiko.rsakey-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.server.MSG_CHANNEL_FAILURE=paramiko.server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp.MSG_CHANNEL_FAILURE=paramiko.sftp-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_attr.MSG_CHANNEL_FAILURE=paramiko.sftp_attr-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_client.MSG_CHANNEL_FAILURE=paramiko.sftp_client-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_file.MSG_CHANNEL_FAILURE=paramiko.sftp_file-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_handle.MSG_CHANNEL_FAILURE=paramiko.sftp_handle-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_server.MSG_CHANNEL_FAILURE=paramiko.sftp_server-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.sftp_si.MSG_CHANNEL_FAILURE=paramiko.sftp_si-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.transport.MSG_CHANNEL_FAILURE=paramiko.transport-module.html#MSG_CHANNEL_FAILURE,Variable paramiko.util.MSG_CHANNEL_FAILURE=paramiko.util-module.html#MSG_CHANNEL_FAILURE"><a title="paramiko.auth_handler.MSG_CHANNEL_FAILURE paramiko.channel.MSG_CHANNEL_FAILURE paramiko.client.MSG_CHANNEL_FAILURE paramiko.common.MSG_CHANNEL_FAILURE @@ -3971,8 +4011,8 @@ paramiko.sftp_handle.MSG_CHANNEL_FAILURE paramiko.sftp_server.MSG_CHANNEL_FAILURE paramiko.sftp_si.MSG_CHANNEL_FAILURE paramiko.transport.MSG_CHANNEL_FAILURE -paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return doclink('link-577', 'MSG_CHANNEL_FAILURE', 'link-577');">MSG_CHANNEL_FAILURE</a></tt><tt class="py-op">:</tt> <tt id="link-578" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-578', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_request_failed</tt><tt class="py-op">,</tt> </tt> -<a name="L2060"></a><tt class="py-lineno">2060</tt> <tt class="py-line"> <tt id="link-579" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_DATA,Variable paramiko.channel.MSG_CHANNEL_DATA=paramiko.channel-module.html#MSG_CHANNEL_DATA,Variable paramiko.client.MSG_CHANNEL_DATA=paramiko.client-module.html#MSG_CHANNEL_DATA,Variable paramiko.common.MSG_CHANNEL_DATA=paramiko.common-module.html#MSG_CHANNEL_DATA,Variable paramiko.dsskey.MSG_CHANNEL_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_DATA,Variable paramiko.packet.MSG_CHANNEL_DATA=paramiko.packet-module.html#MSG_CHANNEL_DATA,Variable paramiko.pkey.MSG_CHANNEL_DATA=paramiko.pkey-module.html#MSG_CHANNEL_DATA,Variable paramiko.rsakey.MSG_CHANNEL_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_DATA,Variable paramiko.server.MSG_CHANNEL_DATA=paramiko.server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp.MSG_CHANNEL_DATA=paramiko.sftp-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_DATA,Variable paramiko.transport.MSG_CHANNEL_DATA=paramiko.transport-module.html#MSG_CHANNEL_DATA,Variable paramiko.util.MSG_CHANNEL_DATA=paramiko.util-module.html#MSG_CHANNEL_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_DATA +paramiko.util.MSG_CHANNEL_FAILURE" class="py-name" href="#" onclick="return doclink('link-602', 'MSG_CHANNEL_FAILURE', 'link-602');">MSG_CHANNEL_FAILURE</a></tt><tt class="py-op">:</tt> <tt id="link-603" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-603', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_request_failed</tt><tt class="py-op">,</tt> </tt> +<a name="L2093"></a><tt class="py-lineno">2093</tt> <tt class="py-line"> <tt id="link-604" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_DATA,Variable paramiko.channel.MSG_CHANNEL_DATA=paramiko.channel-module.html#MSG_CHANNEL_DATA,Variable paramiko.client.MSG_CHANNEL_DATA=paramiko.client-module.html#MSG_CHANNEL_DATA,Variable paramiko.common.MSG_CHANNEL_DATA=paramiko.common-module.html#MSG_CHANNEL_DATA,Variable paramiko.dsskey.MSG_CHANNEL_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_DATA,Variable paramiko.packet.MSG_CHANNEL_DATA=paramiko.packet-module.html#MSG_CHANNEL_DATA,Variable paramiko.pkey.MSG_CHANNEL_DATA=paramiko.pkey-module.html#MSG_CHANNEL_DATA,Variable paramiko.rsakey.MSG_CHANNEL_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_DATA,Variable paramiko.server.MSG_CHANNEL_DATA=paramiko.server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp.MSG_CHANNEL_DATA=paramiko.sftp-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_DATA,Variable paramiko.transport.MSG_CHANNEL_DATA=paramiko.transport-module.html#MSG_CHANNEL_DATA,Variable paramiko.util.MSG_CHANNEL_DATA=paramiko.util-module.html#MSG_CHANNEL_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_DATA paramiko.channel.MSG_CHANNEL_DATA paramiko.client.MSG_CHANNEL_DATA paramiko.common.MSG_CHANNEL_DATA @@ -3992,8 +4032,8 @@ paramiko.sftp_handle.MSG_CHANNEL_DATA paramiko.sftp_server.MSG_CHANNEL_DATA paramiko.sftp_si.MSG_CHANNEL_DATA paramiko.transport.MSG_CHANNEL_DATA -paramiko.util.MSG_CHANNEL_DATA" class="py-name" href="#" onclick="return doclink('link-579', 'MSG_CHANNEL_DATA', 'link-579');">MSG_CHANNEL_DATA</a></tt><tt class="py-op">:</tt> <tt id="link-580" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-580', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_feed</tt><tt class="py-op">,</tt> </tt> -<a name="L2061"></a><tt class="py-lineno">2061</tt> <tt class="py-line"> <tt id="link-581" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.channel.MSG_CHANNEL_EXTENDED_DATA=paramiko.channel-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.client.MSG_CHANNEL_EXTENDED_DATA=paramiko.client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.common.MSG_CHANNEL_EXTENDED_DATA=paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.dsskey.MSG_CHANNEL_EXTENDED_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_EXTENDED_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.packet.MSG_CHANNEL_EXTENDED_DATA=paramiko.packet-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.pkey.MSG_CHANNEL_EXTENDED_DATA=paramiko.pkey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.rsakey.MSG_CHANNEL_EXTENDED_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.server.MSG_CHANNEL_EXTENDED_DATA=paramiko.server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.transport.MSG_CHANNEL_EXTENDED_DATA=paramiko.transport-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.util.MSG_CHANNEL_EXTENDED_DATA=paramiko.util-module.html#MSG_CHANNEL_EXTENDED_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA +paramiko.util.MSG_CHANNEL_DATA" class="py-name" href="#" onclick="return doclink('link-604', 'MSG_CHANNEL_DATA', 'link-604');">MSG_CHANNEL_DATA</a></tt><tt class="py-op">:</tt> <tt id="link-605" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-605', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_feed</tt><tt class="py-op">,</tt> </tt> +<a name="L2094"></a><tt class="py-lineno">2094</tt> <tt class="py-line"> <tt id="link-606" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA=paramiko.auth_handler-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.channel.MSG_CHANNEL_EXTENDED_DATA=paramiko.channel-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.client.MSG_CHANNEL_EXTENDED_DATA=paramiko.client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.common.MSG_CHANNEL_EXTENDED_DATA=paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.dsskey.MSG_CHANNEL_EXTENDED_DATA=paramiko.dsskey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.hostkeys.MSG_CHANNEL_EXTENDED_DATA=paramiko.hostkeys-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_gex.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_gex-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.kex_group1.MSG_CHANNEL_EXTENDED_DATA=paramiko.kex_group1-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.packet.MSG_CHANNEL_EXTENDED_DATA=paramiko.packet-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.pkey.MSG_CHANNEL_EXTENDED_DATA=paramiko.pkey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.rsakey.MSG_CHANNEL_EXTENDED_DATA=paramiko.rsakey-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.server.MSG_CHANNEL_EXTENDED_DATA=paramiko.server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_attr.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_attr-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_client.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_client-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_file.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_file-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_handle-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_server-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA=paramiko.sftp_si-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.transport.MSG_CHANNEL_EXTENDED_DATA=paramiko.transport-module.html#MSG_CHANNEL_EXTENDED_DATA,Variable paramiko.util.MSG_CHANNEL_EXTENDED_DATA=paramiko.util-module.html#MSG_CHANNEL_EXTENDED_DATA"><a title="paramiko.auth_handler.MSG_CHANNEL_EXTENDED_DATA paramiko.channel.MSG_CHANNEL_EXTENDED_DATA paramiko.client.MSG_CHANNEL_EXTENDED_DATA paramiko.common.MSG_CHANNEL_EXTENDED_DATA @@ -4013,8 +4053,8 @@ paramiko.sftp_handle.MSG_CHANNEL_EXTENDED_DATA paramiko.sftp_server.MSG_CHANNEL_EXTENDED_DATA paramiko.sftp_si.MSG_CHANNEL_EXTENDED_DATA paramiko.transport.MSG_CHANNEL_EXTENDED_DATA -paramiko.util.MSG_CHANNEL_EXTENDED_DATA" class="py-name" href="#" onclick="return doclink('link-581', 'MSG_CHANNEL_EXTENDED_DATA', 'link-581');">MSG_CHANNEL_EXTENDED_DATA</a></tt><tt class="py-op">:</tt> <tt id="link-582" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-582', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_feed_extended</tt><tt class="py-op">,</tt> </tt> -<a name="L2062"></a><tt class="py-lineno">2062</tt> <tt class="py-line"> <tt id="link-583" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST=paramiko.auth_handler-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST=paramiko.channel-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.common.MSG_CHANNEL_WINDOW_ADJUST=paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.dsskey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.dsskey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.hostkeys.MSG_CHANNEL_WINDOW_ADJUST=paramiko.hostkeys-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_gex.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_gex-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_group1.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_group1-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.packet.MSG_CHANNEL_WINDOW_ADJUST=paramiko.packet-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.pkey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.pkey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.rsakey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.rsakey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_attr.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_attr-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_file.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_file-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_handle-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_si-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST=paramiko.transport-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.util.MSG_CHANNEL_WINDOW_ADJUST=paramiko.util-module.html#MSG_CHANNEL_WINDOW_ADJUST"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST +paramiko.util.MSG_CHANNEL_EXTENDED_DATA" class="py-name" href="#" onclick="return doclink('link-606', 'MSG_CHANNEL_EXTENDED_DATA', 'link-606');">MSG_CHANNEL_EXTENDED_DATA</a></tt><tt class="py-op">:</tt> <tt id="link-607" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-607', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_feed_extended</tt><tt class="py-op">,</tt> </tt> +<a name="L2095"></a><tt class="py-lineno">2095</tt> <tt class="py-line"> <tt id="link-608" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST=paramiko.auth_handler-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST=paramiko.channel-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.common.MSG_CHANNEL_WINDOW_ADJUST=paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.dsskey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.dsskey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.hostkeys.MSG_CHANNEL_WINDOW_ADJUST=paramiko.hostkeys-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_gex.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_gex-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.kex_group1.MSG_CHANNEL_WINDOW_ADJUST=paramiko.kex_group1-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.packet.MSG_CHANNEL_WINDOW_ADJUST=paramiko.packet-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.pkey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.pkey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.rsakey.MSG_CHANNEL_WINDOW_ADJUST=paramiko.rsakey-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_attr.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_attr-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_client.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_client-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_file.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_file-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_handle-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_server-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST=paramiko.sftp_si-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST=paramiko.transport-module.html#MSG_CHANNEL_WINDOW_ADJUST,Variable paramiko.util.MSG_CHANNEL_WINDOW_ADJUST=paramiko.util-module.html#MSG_CHANNEL_WINDOW_ADJUST"><a title="paramiko.auth_handler.MSG_CHANNEL_WINDOW_ADJUST paramiko.channel.MSG_CHANNEL_WINDOW_ADJUST paramiko.client.MSG_CHANNEL_WINDOW_ADJUST paramiko.common.MSG_CHANNEL_WINDOW_ADJUST @@ -4034,8 +4074,8 @@ paramiko.sftp_handle.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_server.MSG_CHANNEL_WINDOW_ADJUST paramiko.sftp_si.MSG_CHANNEL_WINDOW_ADJUST paramiko.transport.MSG_CHANNEL_WINDOW_ADJUST -paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-583', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-583');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">:</tt> <tt id="link-584" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-584', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_window_adjust</tt><tt class="py-op">,</tt> </tt> -<a name="L2063"></a><tt class="py-lineno">2063</tt> <tt class="py-line"> <tt id="link-585" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_REQUEST=paramiko.auth_handler-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.channel.MSG_CHANNEL_REQUEST=paramiko.channel-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.client.MSG_CHANNEL_REQUEST=paramiko.client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.common.MSG_CHANNEL_REQUEST=paramiko.common-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.dsskey.MSG_CHANNEL_REQUEST=paramiko.dsskey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.hostkeys.MSG_CHANNEL_REQUEST=paramiko.hostkeys-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_gex.MSG_CHANNEL_REQUEST=paramiko.kex_gex-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_group1.MSG_CHANNEL_REQUEST=paramiko.kex_group1-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.packet.MSG_CHANNEL_REQUEST=paramiko.packet-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.pkey.MSG_CHANNEL_REQUEST=paramiko.pkey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.rsakey.MSG_CHANNEL_REQUEST=paramiko.rsakey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.server.MSG_CHANNEL_REQUEST=paramiko.server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp.MSG_CHANNEL_REQUEST=paramiko.sftp-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_attr.MSG_CHANNEL_REQUEST=paramiko.sftp_attr-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_client.MSG_CHANNEL_REQUEST=paramiko.sftp_client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_file.MSG_CHANNEL_REQUEST=paramiko.sftp_file-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_handle.MSG_CHANNEL_REQUEST=paramiko.sftp_handle-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_server.MSG_CHANNEL_REQUEST=paramiko.sftp_server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_si.MSG_CHANNEL_REQUEST=paramiko.sftp_si-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.transport.MSG_CHANNEL_REQUEST=paramiko.transport-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.util.MSG_CHANNEL_REQUEST=paramiko.util-module.html#MSG_CHANNEL_REQUEST"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST +paramiko.util.MSG_CHANNEL_WINDOW_ADJUST" class="py-name" href="#" onclick="return doclink('link-608', 'MSG_CHANNEL_WINDOW_ADJUST', 'link-608');">MSG_CHANNEL_WINDOW_ADJUST</a></tt><tt class="py-op">:</tt> <tt id="link-609" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-609', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_window_adjust</tt><tt class="py-op">,</tt> </tt> +<a name="L2096"></a><tt class="py-lineno">2096</tt> <tt class="py-line"> <tt id="link-610" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_REQUEST=paramiko.auth_handler-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.channel.MSG_CHANNEL_REQUEST=paramiko.channel-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.client.MSG_CHANNEL_REQUEST=paramiko.client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.common.MSG_CHANNEL_REQUEST=paramiko.common-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.dsskey.MSG_CHANNEL_REQUEST=paramiko.dsskey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.hostkeys.MSG_CHANNEL_REQUEST=paramiko.hostkeys-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_gex.MSG_CHANNEL_REQUEST=paramiko.kex_gex-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.kex_group1.MSG_CHANNEL_REQUEST=paramiko.kex_group1-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.packet.MSG_CHANNEL_REQUEST=paramiko.packet-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.pkey.MSG_CHANNEL_REQUEST=paramiko.pkey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.rsakey.MSG_CHANNEL_REQUEST=paramiko.rsakey-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.server.MSG_CHANNEL_REQUEST=paramiko.server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp.MSG_CHANNEL_REQUEST=paramiko.sftp-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_attr.MSG_CHANNEL_REQUEST=paramiko.sftp_attr-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_client.MSG_CHANNEL_REQUEST=paramiko.sftp_client-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_file.MSG_CHANNEL_REQUEST=paramiko.sftp_file-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_handle.MSG_CHANNEL_REQUEST=paramiko.sftp_handle-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_server.MSG_CHANNEL_REQUEST=paramiko.sftp_server-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.sftp_si.MSG_CHANNEL_REQUEST=paramiko.sftp_si-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.transport.MSG_CHANNEL_REQUEST=paramiko.transport-module.html#MSG_CHANNEL_REQUEST,Variable paramiko.util.MSG_CHANNEL_REQUEST=paramiko.util-module.html#MSG_CHANNEL_REQUEST"><a title="paramiko.auth_handler.MSG_CHANNEL_REQUEST paramiko.channel.MSG_CHANNEL_REQUEST paramiko.client.MSG_CHANNEL_REQUEST paramiko.common.MSG_CHANNEL_REQUEST @@ -4055,8 +4095,8 @@ paramiko.sftp_handle.MSG_CHANNEL_REQUEST paramiko.sftp_server.MSG_CHANNEL_REQUEST paramiko.sftp_si.MSG_CHANNEL_REQUEST paramiko.transport.MSG_CHANNEL_REQUEST -paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-585', 'MSG_CHANNEL_REQUEST', 'link-585');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">:</tt> <tt id="link-586" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-586', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_request</tt><tt class="py-op">,</tt> </tt> -<a name="L2064"></a><tt class="py-lineno">2064</tt> <tt class="py-line"> <tt id="link-587" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EOF=paramiko.auth_handler-module.html#MSG_CHANNEL_EOF,Variable paramiko.channel.MSG_CHANNEL_EOF=paramiko.channel-module.html#MSG_CHANNEL_EOF,Variable paramiko.client.MSG_CHANNEL_EOF=paramiko.client-module.html#MSG_CHANNEL_EOF,Variable paramiko.common.MSG_CHANNEL_EOF=paramiko.common-module.html#MSG_CHANNEL_EOF,Variable paramiko.dsskey.MSG_CHANNEL_EOF=paramiko.dsskey-module.html#MSG_CHANNEL_EOF,Variable paramiko.hostkeys.MSG_CHANNEL_EOF=paramiko.hostkeys-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_gex.MSG_CHANNEL_EOF=paramiko.kex_gex-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_group1.MSG_CHANNEL_EOF=paramiko.kex_group1-module.html#MSG_CHANNEL_EOF,Variable paramiko.packet.MSG_CHANNEL_EOF=paramiko.packet-module.html#MSG_CHANNEL_EOF,Variable paramiko.pkey.MSG_CHANNEL_EOF=paramiko.pkey-module.html#MSG_CHANNEL_EOF,Variable paramiko.rsakey.MSG_CHANNEL_EOF=paramiko.rsakey-module.html#MSG_CHANNEL_EOF,Variable paramiko.server.MSG_CHANNEL_EOF=paramiko.server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp.MSG_CHANNEL_EOF=paramiko.sftp-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_attr.MSG_CHANNEL_EOF=paramiko.sftp_attr-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_client.MSG_CHANNEL_EOF=paramiko.sftp_client-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_file.MSG_CHANNEL_EOF=paramiko.sftp_file-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_handle.MSG_CHANNEL_EOF=paramiko.sftp_handle-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_server.MSG_CHANNEL_EOF=paramiko.sftp_server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_si.MSG_CHANNEL_EOF=paramiko.sftp_si-module.html#MSG_CHANNEL_EOF,Variable paramiko.transport.MSG_CHANNEL_EOF=paramiko.transport-module.html#MSG_CHANNEL_EOF,Variable paramiko.util.MSG_CHANNEL_EOF=paramiko.util-module.html#MSG_CHANNEL_EOF"><a title="paramiko.auth_handler.MSG_CHANNEL_EOF +paramiko.util.MSG_CHANNEL_REQUEST" class="py-name" href="#" onclick="return doclink('link-610', 'MSG_CHANNEL_REQUEST', 'link-610');">MSG_CHANNEL_REQUEST</a></tt><tt class="py-op">:</tt> <tt id="link-611" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-611', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_request</tt><tt class="py-op">,</tt> </tt> +<a name="L2097"></a><tt class="py-lineno">2097</tt> <tt class="py-line"> <tt id="link-612" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_EOF=paramiko.auth_handler-module.html#MSG_CHANNEL_EOF,Variable paramiko.channel.MSG_CHANNEL_EOF=paramiko.channel-module.html#MSG_CHANNEL_EOF,Variable paramiko.client.MSG_CHANNEL_EOF=paramiko.client-module.html#MSG_CHANNEL_EOF,Variable paramiko.common.MSG_CHANNEL_EOF=paramiko.common-module.html#MSG_CHANNEL_EOF,Variable paramiko.dsskey.MSG_CHANNEL_EOF=paramiko.dsskey-module.html#MSG_CHANNEL_EOF,Variable paramiko.hostkeys.MSG_CHANNEL_EOF=paramiko.hostkeys-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_gex.MSG_CHANNEL_EOF=paramiko.kex_gex-module.html#MSG_CHANNEL_EOF,Variable paramiko.kex_group1.MSG_CHANNEL_EOF=paramiko.kex_group1-module.html#MSG_CHANNEL_EOF,Variable paramiko.packet.MSG_CHANNEL_EOF=paramiko.packet-module.html#MSG_CHANNEL_EOF,Variable paramiko.pkey.MSG_CHANNEL_EOF=paramiko.pkey-module.html#MSG_CHANNEL_EOF,Variable paramiko.rsakey.MSG_CHANNEL_EOF=paramiko.rsakey-module.html#MSG_CHANNEL_EOF,Variable paramiko.server.MSG_CHANNEL_EOF=paramiko.server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp.MSG_CHANNEL_EOF=paramiko.sftp-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_attr.MSG_CHANNEL_EOF=paramiko.sftp_attr-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_client.MSG_CHANNEL_EOF=paramiko.sftp_client-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_file.MSG_CHANNEL_EOF=paramiko.sftp_file-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_handle.MSG_CHANNEL_EOF=paramiko.sftp_handle-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_server.MSG_CHANNEL_EOF=paramiko.sftp_server-module.html#MSG_CHANNEL_EOF,Variable paramiko.sftp_si.MSG_CHANNEL_EOF=paramiko.sftp_si-module.html#MSG_CHANNEL_EOF,Variable paramiko.transport.MSG_CHANNEL_EOF=paramiko.transport-module.html#MSG_CHANNEL_EOF,Variable paramiko.util.MSG_CHANNEL_EOF=paramiko.util-module.html#MSG_CHANNEL_EOF"><a title="paramiko.auth_handler.MSG_CHANNEL_EOF paramiko.channel.MSG_CHANNEL_EOF paramiko.client.MSG_CHANNEL_EOF paramiko.common.MSG_CHANNEL_EOF @@ -4076,8 +4116,8 @@ paramiko.sftp_handle.MSG_CHANNEL_EOF paramiko.sftp_server.MSG_CHANNEL_EOF paramiko.sftp_si.MSG_CHANNEL_EOF paramiko.transport.MSG_CHANNEL_EOF -paramiko.util.MSG_CHANNEL_EOF" class="py-name" href="#" onclick="return doclink('link-587', 'MSG_CHANNEL_EOF', 'link-587');">MSG_CHANNEL_EOF</a></tt><tt class="py-op">:</tt> <tt id="link-588" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-588', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_eof</tt><tt class="py-op">,</tt> </tt> -<a name="L2065"></a><tt class="py-lineno">2065</tt> <tt class="py-line"> <tt id="link-589" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_CLOSE=paramiko.auth_handler-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.channel.MSG_CHANNEL_CLOSE=paramiko.channel-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.client.MSG_CHANNEL_CLOSE=paramiko.client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.common.MSG_CHANNEL_CLOSE=paramiko.common-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.dsskey.MSG_CHANNEL_CLOSE=paramiko.dsskey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.hostkeys.MSG_CHANNEL_CLOSE=paramiko.hostkeys-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_gex.MSG_CHANNEL_CLOSE=paramiko.kex_gex-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_group1.MSG_CHANNEL_CLOSE=paramiko.kex_group1-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.packet.MSG_CHANNEL_CLOSE=paramiko.packet-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.pkey.MSG_CHANNEL_CLOSE=paramiko.pkey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.rsakey.MSG_CHANNEL_CLOSE=paramiko.rsakey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.server.MSG_CHANNEL_CLOSE=paramiko.server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp.MSG_CHANNEL_CLOSE=paramiko.sftp-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_attr.MSG_CHANNEL_CLOSE=paramiko.sftp_attr-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_client.MSG_CHANNEL_CLOSE=paramiko.sftp_client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_file.MSG_CHANNEL_CLOSE=paramiko.sftp_file-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_handle.MSG_CHANNEL_CLOSE=paramiko.sftp_handle-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_server.MSG_CHANNEL_CLOSE=paramiko.sftp_server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_si.MSG_CHANNEL_CLOSE=paramiko.sftp_si-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.transport.MSG_CHANNEL_CLOSE=paramiko.transport-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.util.MSG_CHANNEL_CLOSE=paramiko.util-module.html#MSG_CHANNEL_CLOSE"><a title="paramiko.auth_handler.MSG_CHANNEL_CLOSE +paramiko.util.MSG_CHANNEL_EOF" class="py-name" href="#" onclick="return doclink('link-612', 'MSG_CHANNEL_EOF', 'link-612');">MSG_CHANNEL_EOF</a></tt><tt class="py-op">:</tt> <tt id="link-613" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-613', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_eof</tt><tt class="py-op">,</tt> </tt> +<a name="L2098"></a><tt class="py-lineno">2098</tt> <tt class="py-line"> <tt id="link-614" class="py-name" targets="Variable paramiko.auth_handler.MSG_CHANNEL_CLOSE=paramiko.auth_handler-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.channel.MSG_CHANNEL_CLOSE=paramiko.channel-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.client.MSG_CHANNEL_CLOSE=paramiko.client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.common.MSG_CHANNEL_CLOSE=paramiko.common-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.dsskey.MSG_CHANNEL_CLOSE=paramiko.dsskey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.hostkeys.MSG_CHANNEL_CLOSE=paramiko.hostkeys-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_gex.MSG_CHANNEL_CLOSE=paramiko.kex_gex-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.kex_group1.MSG_CHANNEL_CLOSE=paramiko.kex_group1-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.packet.MSG_CHANNEL_CLOSE=paramiko.packet-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.pkey.MSG_CHANNEL_CLOSE=paramiko.pkey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.rsakey.MSG_CHANNEL_CLOSE=paramiko.rsakey-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.server.MSG_CHANNEL_CLOSE=paramiko.server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp.MSG_CHANNEL_CLOSE=paramiko.sftp-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_attr.MSG_CHANNEL_CLOSE=paramiko.sftp_attr-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_client.MSG_CHANNEL_CLOSE=paramiko.sftp_client-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_file.MSG_CHANNEL_CLOSE=paramiko.sftp_file-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_handle.MSG_CHANNEL_CLOSE=paramiko.sftp_handle-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_server.MSG_CHANNEL_CLOSE=paramiko.sftp_server-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.sftp_si.MSG_CHANNEL_CLOSE=paramiko.sftp_si-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.transport.MSG_CHANNEL_CLOSE=paramiko.transport-module.html#MSG_CHANNEL_CLOSE,Variable paramiko.util.MSG_CHANNEL_CLOSE=paramiko.util-module.html#MSG_CHANNEL_CLOSE"><a title="paramiko.auth_handler.MSG_CHANNEL_CLOSE paramiko.channel.MSG_CHANNEL_CLOSE paramiko.client.MSG_CHANNEL_CLOSE paramiko.common.MSG_CHANNEL_CLOSE @@ -4097,9 +4137,9 @@ paramiko.sftp_handle.MSG_CHANNEL_CLOSE paramiko.sftp_server.MSG_CHANNEL_CLOSE paramiko.sftp_si.MSG_CHANNEL_CLOSE paramiko.transport.MSG_CHANNEL_CLOSE -paramiko.util.MSG_CHANNEL_CLOSE" class="py-name" href="#" onclick="return doclink('link-589', 'MSG_CHANNEL_CLOSE', 'link-589');">MSG_CHANNEL_CLOSE</a></tt><tt class="py-op">:</tt> <tt id="link-590" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-590', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_close</tt><tt class="py-op">,</tt> </tt> -<a name="L2066"></a><tt class="py-lineno">2066</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -</div><a name="L2067"></a><tt class="py-lineno">2067</tt> <tt class="py-line"> </tt><script type="text/javascript"> +paramiko.util.MSG_CHANNEL_CLOSE" class="py-name" href="#" onclick="return doclink('link-614', 'MSG_CHANNEL_CLOSE', 'link-614');">MSG_CHANNEL_CLOSE</a></tt><tt class="py-op">:</tt> <tt id="link-615" class="py-name"><a title="paramiko.Channel" class="py-name" href="#" onclick="return doclink('link-615', 'Channel', 'link-6');">Channel</a></tt><tt class="py-op">.</tt><tt class="py-name">_handle_close</tt><tt class="py-op">,</tt> </tt> +<a name="L2099"></a><tt class="py-lineno">2099</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> +</div><a name="L2100"></a><tt class="py-lineno">2100</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -4132,7 +4172,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:33 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.transport.ChannelMap-class.html b/docs/paramiko.transport.ChannelMap-class.html index c00478a..5718626 100644 --- a/docs/paramiko.transport.ChannelMap-class.html +++ b/docs/paramiko.transport.ChannelMap-class.html @@ -175,6 +175,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -182,7 +183,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -264,7 +267,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.util-module.html b/docs/paramiko.util-module.html index 297ca6d..d6a5b61 100644 --- a/docs/paramiko.util-module.html +++ b/docs/paramiko.util-module.html @@ -78,6 +78,14 @@ <a href="paramiko.util.PFilter-class.html" class="summary-name">PFilter</a> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="paramiko.util.Counter-class.html" class="summary-name">Counter</a><br /> + Stateful counter for CTR mode crypto + </td> + </tr> </table> <!-- ==================== FUNCTIONS ==================== --> <a name="section-Functions"></a> @@ -761,6 +769,13 @@ <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> <a name="randpool"></a><span class="summary-name">randpool</span> = <code title="StrongLockingRandomPool()">StrongLockingRandomPool()</code> </td> </tr> @@ -928,7 +943,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.util-pysrc.html b/docs/paramiko.util-pysrc.html index a7bdc07..3fa6b1d 100644 --- a/docs/paramiko.util-pysrc.html +++ b/docs/paramiko.util-pysrc.html @@ -54,253 +54,256 @@ </table> <h1 class="epydoc">Source Code for <a href="paramiko.util-module.html">Module paramiko.util</a></h1> <pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robey@lag.net></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Useful functions used by the rest of paramiko.</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt> <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">__future__</tt> <tt class="py-keyword">import</tt> <tt class="py-name">generators</tt> </tt> <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt> -<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">binascii</tt> <tt class="py-keyword">import</tt> <tt class="py-name">hexlify</tt><tt class="py-op">,</tt> <tt class="py-name">unhexlify</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-0', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module paramiko.common=paramiko.common-module.html"><a title="paramiko.common" class="py-name" href="#" onclick="return doclink('link-1', 'common', 'link-1');">common</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-2', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module paramiko.config=paramiko.config-module.html"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-3', 'config', 'link-3');">config</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class paramiko.SSHConfig=paramiko.SSHConfig-class.html"><a title="paramiko.SSHConfig" class="py-name" href="#" onclick="return doclink('link-4', 'SSHConfig', 'link-4');">SSHConfig</a></tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt> +<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">array</tt> </tt> +<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">binascii</tt> <tt class="py-keyword">import</tt> <tt class="py-name">hexlify</tt><tt class="py-op">,</tt> <tt class="py-name">unhexlify</tt> </tt> +<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt> +<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">struct</tt> </tt> +<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt> +<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt> +<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt> +<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package paramiko=paramiko-module.html"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-0', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module paramiko.common=paramiko.common-module.html"><a title="paramiko.common" class="py-name" href="#" onclick="return doclink('link-1', 'common', 'link-1');">common</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> +<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-2', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module paramiko.config=paramiko.config-module.html"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-3', 'config', 'link-3');">config</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class paramiko.SSHConfig=paramiko.SSHConfig-class.html"><a title="paramiko.SSHConfig" class="py-name" href="#" onclick="return doclink('link-4', 'SSHConfig', 'link-4');">SSHConfig</a></tt> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"># Change by RogerB - python < 2.3 doesn't have enumerate so we implement it</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="enumerate"></a><div id="enumerate-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="enumerate-toggle" onclick="return toggle('enumerate');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html">enumerate</a><tt class="py-op">:</tt> </tt> -</div><div id="enumerate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="enumerate-expanded"><a name="enumerate.__init__"></a><div id="enumerate.__init__-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="enumerate.__init__-toggle" onclick="return toggle('enumerate.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html#__init__">__init__</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sequence</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="enumerate.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="enumerate.__init__-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt> <tt class="py-op">=</tt> <tt class="py-name">sequence</tt> </tt> -</div><a name="enumerate.__iter__"></a><div id="enumerate.__iter__-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="enumerate.__iter__-toggle" onclick="return toggle('enumerate.__iter__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html#__iter__">__iter__</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="enumerate.__iter__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="enumerate.__iter__-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt><tt class="py-op">:</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-op">(</tt><tt class="py-name">count</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -</div></div><a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt> -<a name="inflate_long"></a><div id="inflate_long-def"><a name="L47"></a><tt class="py-lineno"> 47</tt> <a class="py-toggle" href="#" id="inflate_long-toggle" onclick="return toggle('inflate_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#inflate_long">inflate_long</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">always_positive</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="inflate_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="inflate_long-expanded"><a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-docstring">"turns a normalized byte string into a long-int (adapted from Crypto.Util.number)"</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-number">0L</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">negative</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">always_positive</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">negative</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">filler</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">negative</tt><tt class="py-op">:</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">filler</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">filler</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">out</tt> <tt class="py-op"><<</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">negative</tt><tt class="py-op">:</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">-=</tt> <tt class="py-op">(</tt><tt class="py-number">1L</tt> <tt class="py-op"><<</tt> <tt class="py-op">(</tt><tt class="py-number">8</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt> -<a name="deflate_long"></a><div id="deflate_long-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="deflate_long-toggle" onclick="return toggle('deflate_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#deflate_long">deflate_long</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">,</tt> <tt class="py-param">add_sign_padding</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="deflate_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="deflate_long-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-docstring">"turns a long-int into a normalized byte string (adapted from Crypto.Util.number)"</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-comment"># after much testing, this algorithm was deemed to be the fastest</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">>></tt> <tt class="py-number">32</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-comment"># strip off leading zeros, FFs</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-5" class="py-name" targets="Class paramiko.util.enumerate=paramiko.util.enumerate-class.html"><a title="paramiko.util.enumerate" class="py-name" href="#" onclick="return doclink('link-5', 'enumerate', 'link-5');">enumerate</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\000'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\xff'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># degenerate case, n was either 0 or -1</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\000'</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">add_sign_padding</tt><tt class="py-op">:</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> -</div><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt> -<a name="format_binary_weird"></a><div id="format_binary_weird-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="format_binary_weird-toggle" onclick="return toggle('format_binary_weird');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="format_binary_weird-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary_weird-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-6" class="py-name"><a title="paramiko.util.enumerate" class="py-name" href="#" onclick="return doclink('link-6', 'enumerate', 'link-5');">enumerate</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">%</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' '</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">%</tt> <tt class="py-number">16</tt> <tt class="py-op">==</tt> <tt class="py-number">15</tt><tt class="py-op">:</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt> -<a name="format_binary"></a><div id="format_binary-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="format_binary-toggle" onclick="return toggle('format_binary');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary">format_binary</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="format_binary-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary-expanded"><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">x</tt> <tt class="py-op">+</tt> <tt class="py-number">16</tt><tt class="py-op">:</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-7" class="py-name" targets="Function paramiko.util.format_binary_line()=paramiko.util-module.html#format_binary_line"><a title="paramiko.util.format_binary_line" class="py-name" href="#" onclick="return doclink('link-7', 'format_binary_line', 'link-7');">format_binary_line</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">:</tt><tt class="py-name">x</tt><tt class="py-op">+</tt><tt class="py-number">16</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">+=</tt> <tt class="py-number">16</tt> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-8" class="py-name"><a title="paramiko.util.format_binary_line" class="py-name" href="#" onclick="return doclink('link-8', 'format_binary_line', 'link-7');">format_binary_line</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">prefix</tt> <tt class="py-op">+</tt> <tt class="py-name">x</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">out</tt><tt class="py-op">]</tt> </tt> -</div><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt> -<a name="format_binary_line"></a><div id="format_binary_line-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="format_binary_line-toggle" onclick="return toggle('format_binary_line');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="format_binary_line-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary_line-expanded"><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">right</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'.%c..'</tt> <tt class="py-op">%</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">63</tt><tt class="py-op">)</tt><tt class="py-op">//</tt><tt class="py-number">95</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%-50s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">left</tt><tt class="py-op">,</tt> <tt class="py-name">right</tt><tt class="py-op">)</tt> </tt> -</div><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> </tt> -<a name="hexify"></a><div id="hexify-def"><a name="L118"></a><tt class="py-lineno">118</tt> <a class="py-toggle" href="#" id="hexify-toggle" onclick="return toggle('hexify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#hexify">hexify</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="hexify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="hexify-expanded"><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt> -<a name="unhexify"></a><div id="unhexify-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="unhexify-toggle" onclick="return toggle('unhexify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#unhexify">unhexify</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="unhexify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="unhexify-expanded"><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">unhexlify</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt> -<a name="safe_string"></a><div id="safe_string-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="safe_string-toggle" onclick="return toggle('safe_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#safe_string">safe_string</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="safe_string-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="safe_string-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">c</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'%%%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> -</div><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-comment"># ''.join([['%%%02X' % ord(c), c][(ord(c) >= 32) and (ord(c) <= 127)] for c in s])</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="bit_length"></a><div id="bit_length-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="bit_length-toggle" onclick="return toggle('bit_length');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#bit_length">bit_length</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="bit_length-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="bit_length-expanded"><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">norm</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-9', 'deflate_long', 'link-9');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">hbyte</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">norm</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">bitlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">norm</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">8</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">hbyte</tt> <tt class="py-op">&</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">hbyte</tt> <tt class="py-op"><<=</tt> <tt class="py-number">1</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">bitlen</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">bitlen</tt> </tt> -</div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt> -<a name="tb_strings"></a><div id="tb_strings-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="tb_strings-toggle" onclick="return toggle('tb_strings');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#tb_strings">tb_strings</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="tb_strings-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="tb_strings-expanded"><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">format_exception</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt> +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"># Change by RogerB - python < 2.3 doesn't have enumerate so we implement it</tt> </tt> +<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="enumerate"></a><div id="enumerate-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="enumerate-toggle" onclick="return toggle('enumerate');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html">enumerate</a><tt class="py-op">:</tt> </tt> +</div><div id="enumerate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="enumerate-expanded"><a name="enumerate.__init__"></a><div id="enumerate.__init__-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="enumerate.__init__-toggle" onclick="return toggle('enumerate.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html#__init__">__init__</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sequence</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="enumerate.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="enumerate.__init__-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt> <tt class="py-op">=</tt> <tt class="py-name">sequence</tt> </tt> +</div><a name="enumerate.__iter__"></a><div id="enumerate.__iter__-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="enumerate.__iter__-toggle" onclick="return toggle('enumerate.__iter__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.enumerate-class.html#__iter__">__iter__</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="enumerate.__iter__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="enumerate.__iter__-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt><tt class="py-op">:</tt> </tt> +<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-op">(</tt><tt class="py-name">count</tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> +<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> +</div></div><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt> +<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt> +<a name="inflate_long"></a><div id="inflate_long-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="inflate_long-toggle" onclick="return toggle('inflate_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#inflate_long">inflate_long</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">always_positive</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="inflate_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="inflate_long-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-docstring">"turns a normalized byte string into a long-int (adapted from Crypto.Util.number)"</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-number">0L</tt> </tt> +<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">negative</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">always_positive</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">negative</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt> +<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt> +<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">filler</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> </tt> +<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">negative</tt><tt class="py-op">:</tt> </tt> +<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">filler</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> </tt> +<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">filler</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-number">4</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> +<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">out</tt> <tt class="py-op"><<</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">unpack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> +<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">negative</tt><tt class="py-op">:</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">-=</tt> <tt class="py-op">(</tt><tt class="py-number">1L</tt> <tt class="py-op"><<</tt> <tt class="py-op">(</tt><tt class="py-number">8</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt> +<a name="deflate_long"></a><div id="deflate_long-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="deflate_long-toggle" onclick="return toggle('deflate_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#deflate_long">deflate_long</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">,</tt> <tt class="py-param">add_sign_padding</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="deflate_long-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="deflate_long-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-docstring">"turns a long-int into a normalized byte string (adapted from Crypto.Util.number)"</tt> </tt> +<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-comment"># after much testing, this algorithm was deemed to be the fastest</tt> </tt> +<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> +<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">'>I'</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt> <tt class="py-op">&</tt> <tt class="py-number">0xffffffffL</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> +<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">>></tt> <tt class="py-number">32</tt> </tt> +<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-comment"># strip off leading zeros, FFs</tt> </tt> +<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-5" class="py-name" targets="Class paramiko.util.enumerate=paramiko.util.enumerate-class.html"><a title="paramiko.util.enumerate" class="py-name" href="#" onclick="return doclink('link-5', 'enumerate', 'link-5');">enumerate</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\000'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\xff'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> +<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-comment"># degenerate case, n was either 0 or -1</tt> </tt> +<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\000'</tt> </tt> +<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> </tt> +<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> +<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">add_sign_padding</tt><tt class="py-op">:</tt> </tt> +<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> +<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'\xff'</tt> <tt class="py-op">+</tt> <tt class="py-name">s</tt> </tt> +<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt> +</div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt> +<a name="format_binary_weird"></a><div id="format_binary_weird-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="format_binary_weird-toggle" onclick="return toggle('format_binary_weird');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="format_binary_weird-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary_weird-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-6" class="py-name"><a title="paramiko.util.enumerate" class="py-name" href="#" onclick="return doclink('link-6', 'enumerate', 'link-5');">enumerate</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">%</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">' '</tt> </tt> +<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">%</tt> <tt class="py-number">16</tt> <tt class="py-op">==</tt> <tt class="py-number">15</tt><tt class="py-op">:</tt> </tt> +<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'\n'</tt> </tt> +<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt> +<a name="format_binary"></a><div id="format_binary-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="format_binary-toggle" onclick="return toggle('format_binary');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary">format_binary</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="format_binary-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> +<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">x</tt> <tt class="py-op">+</tt> <tt class="py-number">16</tt><tt class="py-op">:</tt> </tt> +<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-7" class="py-name" targets="Function paramiko.util.format_binary_line()=paramiko.util-module.html#format_binary_line"><a title="paramiko.util.format_binary_line" class="py-name" href="#" onclick="return doclink('link-7', 'format_binary_line', 'link-7');">format_binary_line</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">:</tt><tt class="py-name">x</tt><tt class="py-op">+</tt><tt class="py-number">16</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">+=</tt> <tt class="py-number">16</tt> </tt> +<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">x</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-8" class="py-name"><a title="paramiko.util.format_binary_line" class="py-name" href="#" onclick="return doclink('link-8', 'format_binary_line', 'link-7');">format_binary_line</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">prefix</tt> <tt class="py-op">+</tt> <tt class="py-name">x</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">out</tt><tt class="py-op">]</tt> </tt> +</div><a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt> +<a name="format_binary_line"></a><div id="format_binary_line-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="format_binary_line-toggle" onclick="return toggle('format_binary_line');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><tt class="py-op">(</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="format_binary_line-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="format_binary_line-expanded"><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">left</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">right</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'.%c..'</tt> <tt class="py-op">%</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">63</tt><tt class="py-op">)</tt><tt class="py-op">//</tt><tt class="py-number">95</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%-50s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">left</tt><tt class="py-op">,</tt> <tt class="py-name">right</tt><tt class="py-op">)</tt> </tt> +</div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt> +<a name="hexify"></a><div id="hexify-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="hexify-toggle" onclick="return toggle('hexify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#hexify">hexify</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="hexify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="hexify-expanded"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hexlify</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt> +<a name="unhexify"></a><div id="unhexify-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="unhexify-toggle" onclick="return toggle('unhexify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#unhexify">unhexify</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="unhexify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="unhexify-expanded"><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">unhexlify</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> +</div><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt> +<a name="safe_string"></a><div id="safe_string-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="safe_string-toggle" onclick="return toggle('safe_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#safe_string">safe_string</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="safe_string-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="safe_string-expanded"><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">s</tt><tt class="py-op">:</tt> </tt> +<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">32</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-name">c</tt> </tt> +<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">out</tt> <tt class="py-op">+=</tt> <tt class="py-string">'%%%02X'</tt> <tt class="py-op">%</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt> +<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">out</tt> </tt> +</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt> +<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-comment"># ''.join([['%%%02X' % ord(c), c][(ord(c) >= 32) and (ord(c) <= 127)] for c in s])</tt> </tt> +<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt> +<a name="bit_length"></a><div id="bit_length-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="bit_length-toggle" onclick="return toggle('bit_length');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#bit_length">bit_length</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="bit_length-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="bit_length-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">norm</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name" targets="Function paramiko.util.deflate_long()=paramiko.util-module.html#deflate_long"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-9', 'deflate_long', 'link-9');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> +<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">hbyte</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">norm</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> +<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hbyte</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt> +<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">bitlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">norm</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">8</tt> </tt> +<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">hbyte</tt> <tt class="py-op">&</tt> <tt class="py-number">0x80</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">hbyte</tt> <tt class="py-op"><<=</tt> <tt class="py-number">1</tt> </tt> +<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">bitlen</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt> +<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">bitlen</tt> </tt> </div><a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt> -<a name="generate_key_bytes"></a><div id="generate_key_bytes-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="generate_key_bytes-toggle" onclick="return toggle('generate_key_bytes');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><tt class="py-op">(</tt><tt class="py-param">hashclass</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="generate_key_bytes-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="generate_key_bytes-expanded"><a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> Given a password, passphrase, or other human-source key, scramble it</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> through a secure hash into some keyworthy bytes. This specific algorithm</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> is used for encrypting/decrypting private key files.</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> @param hashclass: class from L{Crypto.Hash} that can be used as a secure</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> hashing function (like C{MD5} or C{SHA}).</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> @type hashclass: L{Crypto.Hash}</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> @param salt: data to salt the hash with.</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> @type salt: string</tt> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> @param key: human-entered password or passphrase.</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> @type key: string</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: number of bytes to generate.</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> @return: key data</tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">keydata</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">salt</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">8</tt><tt class="py-op">]</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">nbytes</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt class="py-name">hashclass</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">keydata</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">nbytes</tt> <tt class="py-op">-=</tt> <tt class="py-name">size</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">keydata</tt> </tt> -</div><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt> -<a name="load_host_keys"></a><div id="load_host_keys-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="load_host_keys-toggle" onclick="return toggle('load_host_keys');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="load_host_keys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_host_keys-expanded"><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> Read a file of known SSH host keys, in the format used by openssh, and</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> return a compound dict of C{hostname -> keytype ->} L{PKey <paramiko.pkey.PKey>}.</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> The hostname may be an IP address or DNS name. The keytype will be either</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> C{"ssh-rsa"} or C{"ssh-dss"}.</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> This type of file unfortunately doesn't exist on Windows, but on posix,</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> it will usually be stored in C{os.path.expanduser("~/.ssh/known_hosts")}.</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5.3, this is just a wrapper around L{HostKeys}.</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to read host keys from</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> @return: dict of host keys, indexed by hostname and then keytype</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: dict(hostname, dict(keytype, L{PKey <paramiko.pkey.PKey>}))</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-10', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module paramiko.hostkeys=paramiko.hostkeys-module.html"><a title="paramiko.hostkeys" class="py-name" href="#" onclick="return doclink('link-11', 'hostkeys', 'link-11');">hostkeys</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class paramiko.HostKeys=paramiko.HostKeys-class.html"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-12', 'HostKeys', 'link-12');">HostKeys</a></tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-13', 'HostKeys', 'link-12');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> -</div><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt> -<a name="parse_ssh_config"></a><div id="parse_ssh_config-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="parse_ssh_config-toggle" onclick="return toggle('parse_ssh_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><tt class="py-op">(</tt><tt class="py-param">file_obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="parse_ssh_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse_ssh_config-expanded"><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"> Provided only as a backward-compatible wrapper around L{SSHConfig}.</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-14', 'config', 'link-3');">config</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="paramiko.SSHConfig" class="py-name" href="#" onclick="return doclink('link-15', 'SSHConfig', 'link-4');">SSHConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt id="link-16" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-16', 'config', 'link-3');">config</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method paramiko.SSHConfig.parse()=paramiko.SSHConfig-class.html#parse"><a title="paramiko.SSHConfig.parse" class="py-name" href="#" onclick="return doclink('link-17', 'parse', 'link-17');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">file_obj</tt><tt class="py-op">)</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-18" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-18', 'config', 'link-3');">config</a></tt> </tt> -</div><a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> </tt> -<a name="lookup_ssh_host_config"></a><div id="lookup_ssh_host_config-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="lookup_ssh_host_config-toggle" onclick="return toggle('lookup_ssh_host_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><tt class="py-op">(</tt><tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">config</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="lookup_ssh_host_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="lookup_ssh_host_config-expanded"><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"> Provided only as a backward-compatible wrapper around L{SSHConfig}.</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-19', 'config', 'link-3');">config</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method paramiko.HostKeys.lookup()=paramiko.HostKeys-class.html#lookup,Method paramiko.SSHConfig.lookup()=paramiko.SSHConfig-class.html#lookup"><a title="paramiko.HostKeys.lookup -paramiko.SSHConfig.lookup" class="py-name" href="#" onclick="return doclink('link-20', 'lookup', 'link-20');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> -</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt> -<a name="mod_inverse"></a><div id="mod_inverse-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="mod_inverse-toggle" onclick="return toggle('mod_inverse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><tt class="py-op">(</tt><tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="mod_inverse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="mod_inverse-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-comment"># it's crazy how small python can make this function.</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">u1</tt><tt class="py-op">,</tt> <tt class="py-name">u2</tt><tt class="py-op">,</tt> <tt class="py-name">u3</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">v1</tt><tt class="py-op">,</tt> <tt class="py-name">v2</tt><tt class="py-op">,</tt> <tt class="py-name">v3</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">v3</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">u3</tt> <tt class="py-op">//</tt> <tt class="py-name">v3</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">u1</tt><tt class="py-op">,</tt> <tt class="py-name">v1</tt> <tt class="py-op">=</tt> <tt class="py-name">v1</tt><tt class="py-op">,</tt> <tt class="py-name">u1</tt> <tt class="py-op">-</tt> <tt class="py-name">v1</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">u2</tt><tt class="py-op">,</tt> <tt class="py-name">v2</tt> <tt class="py-op">=</tt> <tt class="py-name">v2</tt><tt class="py-op">,</tt> <tt class="py-name">u2</tt> <tt class="py-op">-</tt> <tt class="py-name">v2</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">u3</tt><tt class="py-op">,</tt> <tt class="py-name">v3</tt> <tt class="py-op">=</tt> <tt class="py-name">v3</tt><tt class="py-op">,</tt> <tt class="py-name">u3</tt> <tt class="py-op">-</tt> <tt class="py-name">v3</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">u2</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">u2</tt> <tt class="py-op">+=</tt> <tt class="py-name">m</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">u2</tt> </tt> -</div><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt id="link-21" class="py-name" targets="Variable paramiko.util._g_thread_ids=paramiko.util-module.html#_g_thread_ids"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-21', '_g_thread_ids', 'link-21');">_g_thread_ids</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable paramiko.util._g_thread_counter=paramiko.util-module.html#_g_thread_counter"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-22', '_g_thread_counter', 'link-22');">_g_thread_counter</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable paramiko.util._g_thread_lock=paramiko.util-module.html#_g_thread_lock"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-23', '_g_thread_lock', 'link-23');">_g_thread_lock</a></tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="get_thread_id"></a><div id="get_thread_id-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="get_thread_id-toggle" onclick="return toggle('get_thread_id');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="get_thread_id-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_thread_id-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-24" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-24', '_g_thread_ids', 'link-21');">_g_thread_ids</a></tt><tt class="py-op">,</tt> <tt id="link-25" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-25', '_g_thread_counter', 'link-22');">_g_thread_counter</a></tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-26', '_g_thread_lock', 'link-23');">_g_thread_lock</a></tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">tid</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">currentThread</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-27', '_g_thread_ids', 'link-21');">_g_thread_ids</a></tt><tt class="py-op">[</tt><tt class="py-name">tid</tt><tt class="py-op">]</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-28', '_g_thread_lock', 'link-23');">_g_thread_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-29', '_g_thread_counter', 'link-22');">_g_thread_counter</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-30', '_g_thread_ids', 'link-21');">_g_thread_ids</a></tt><tt class="py-op">[</tt><tt class="py-name">tid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-31', '_g_thread_counter', 'link-22');">_g_thread_counter</a></tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-32', '_g_thread_lock', 'link-23');">_g_thread_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> -</div><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt> -<a name="log_to_file"></a><div id="log_to_file-def"><a name="L246"></a><tt class="py-lineno">246</tt> <a class="py-toggle" href="#" id="log_to_file-toggle" onclick="return toggle('log_to_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#log_to_file">log_to_file</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">=</tt><tt id="link-33" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG +<a name="tb_strings"></a><div id="tb_strings-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="tb_strings-toggle" onclick="return toggle('tb_strings');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#tb_strings">tb_strings</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="tb_strings-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="tb_strings-expanded"><a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">format_exception</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> +</div><a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt> +<a name="generate_key_bytes"></a><div id="generate_key_bytes-def"><a name="L150"></a><tt class="py-lineno">150</tt> <a class="py-toggle" href="#" id="generate_key_bytes-toggle" onclick="return toggle('generate_key_bytes');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><tt class="py-op">(</tt><tt class="py-param">hashclass</tt><tt class="py-op">,</tt> <tt class="py-param">salt</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">nbytes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="generate_key_bytes-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="generate_key_bytes-expanded"><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> Given a password, passphrase, or other human-source key, scramble it</tt> </tt> +<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> through a secure hash into some keyworthy bytes. This specific algorithm</tt> </tt> +<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> is used for encrypting/decrypting private key files.</tt> </tt> +<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> @param hashclass: class from L{Crypto.Hash} that can be used as a secure</tt> </tt> +<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> hashing function (like C{MD5} or C{SHA}).</tt> </tt> +<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> @type hashclass: L{Crypto.Hash}</tt> </tt> +<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> @param salt: data to salt the hash with.</tt> </tt> +<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> @type salt: string</tt> </tt> +<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> @param key: human-entered password or passphrase.</tt> </tt> +<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> @type key: string</tt> </tt> +<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> @param nbytes: number of bytes to generate.</tt> </tt> +<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> @type nbytes: int</tt> </tt> +<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> @return: key data</tt> </tt> +<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt> +<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">keydata</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> +<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt> +<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">salt</tt> <tt class="py-op">=</tt> <tt class="py-name">salt</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">8</tt><tt class="py-op">]</tt> </tt> +<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">nbytes</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt> <tt class="py-op">=</tt> <tt class="py-name">hashclass</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class Method paramiko.util.Counter.new()=paramiko.util.Counter-class.html#new"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-10', 'new', 'link-10');">new</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt> </tt> +<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> +<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">salt</tt><tt class="py-op">)</tt> </tt> +<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">hash_obj</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">size</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">nbytes</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">keydata</tt> <tt class="py-op">+=</tt> <tt class="py-name">digest</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">size</tt><tt class="py-op">]</tt> </tt> +<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">nbytes</tt> <tt class="py-op">-=</tt> <tt class="py-name">size</tt> </tt> +<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">keydata</tt> </tt> +</div><a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt> +<a name="load_host_keys"></a><div id="load_host_keys-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="load_host_keys-toggle" onclick="return toggle('load_host_keys');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="load_host_keys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_host_keys-expanded"><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> Read a file of known SSH host keys, in the format used by openssh, and</tt> </tt> +<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> return a compound dict of C{hostname -> keytype ->} L{PKey <paramiko.pkey.PKey>}.</tt> </tt> +<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> The hostname may be an IP address or DNS name. The keytype will be either</tt> </tt> +<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> C{"ssh-rsa"} or C{"ssh-dss"}.</tt> </tt> +<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> This type of file unfortunately doesn't exist on Windows, but on posix,</tt> </tt> +<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> it will usually be stored in C{os.path.expanduser("~/.ssh/known_hosts")}.</tt> </tt> +<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> Since 1.5.3, this is just a wrapper around L{HostKeys}.</tt> </tt> +<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> +<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> @param filename: name of the file to read host keys from</tt> </tt> +<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> @type filename: str</tt> </tt> +<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> @return: dict of host keys, indexed by hostname and then keytype</tt> </tt> +<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: dict(hostname, dict(keytype, L{PKey <paramiko.pkey.PKey>}))</tt> </tt> +<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="paramiko" class="py-name" href="#" onclick="return doclink('link-11', 'paramiko', 'link-0');">paramiko</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module paramiko.hostkeys=paramiko.hostkeys-module.html"><a title="paramiko.hostkeys" class="py-name" href="#" onclick="return doclink('link-12', 'hostkeys', 'link-12');">hostkeys</a></tt> <tt class="py-keyword">import</tt> <tt id="link-13" class="py-name" targets="Class paramiko.HostKeys=paramiko.HostKeys-class.html"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-13', 'HostKeys', 'link-13');">HostKeys</a></tt> </tt> +<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-14" class="py-name"><a title="paramiko.HostKeys" class="py-name" href="#" onclick="return doclink('link-14', 'HostKeys', 'link-13');">HostKeys</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +</div><a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt> +<a name="parse_ssh_config"></a><div id="parse_ssh_config-def"><a name="L204"></a><tt class="py-lineno">204</tt> <a class="py-toggle" href="#" id="parse_ssh_config-toggle" onclick="return toggle('parse_ssh_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><tt class="py-op">(</tt><tt class="py-param">file_obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="parse_ssh_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="parse_ssh_config-expanded"><a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> Provided only as a backward-compatible wrapper around L{SSHConfig}.</tt> </tt> +<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-15', 'config', 'link-3');">config</a></tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="paramiko.SSHConfig" class="py-name" href="#" onclick="return doclink('link-16', 'SSHConfig', 'link-4');">SSHConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt id="link-17" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-17', 'config', 'link-3');">config</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method paramiko.SSHConfig.parse()=paramiko.SSHConfig-class.html#parse"><a title="paramiko.SSHConfig.parse" class="py-name" href="#" onclick="return doclink('link-18', 'parse', 'link-18');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">file_obj</tt><tt class="py-op">)</tt> </tt> +<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-19', 'config', 'link-3');">config</a></tt> </tt> +</div><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt> +<a name="lookup_ssh_host_config"></a><div id="lookup_ssh_host_config-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="lookup_ssh_host_config-toggle" onclick="return toggle('lookup_ssh_host_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><tt class="py-op">(</tt><tt class="py-param">hostname</tt><tt class="py-op">,</tt> <tt class="py-param">config</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="lookup_ssh_host_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="lookup_ssh_host_config-expanded"><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> +<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> Provided only as a backward-compatible wrapper around L{SSHConfig}.</tt> </tt> +<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> +<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-20" class="py-name"><a title="paramiko.config" class="py-name" href="#" onclick="return doclink('link-20', 'config', 'link-3');">config</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method paramiko.HostKeys.lookup()=paramiko.HostKeys-class.html#lookup,Method paramiko.SSHConfig.lookup()=paramiko.SSHConfig-class.html#lookup"><a title="paramiko.HostKeys.lookup +paramiko.SSHConfig.lookup" class="py-name" href="#" onclick="return doclink('link-21', 'lookup', 'link-21');">lookup</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt> +</div><a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt> +<a name="mod_inverse"></a><div id="mod_inverse-def"><a name="L218"></a><tt class="py-lineno">218</tt> <a class="py-toggle" href="#" id="mod_inverse-toggle" onclick="return toggle('mod_inverse');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><tt class="py-op">(</tt><tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">m</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="mod_inverse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="mod_inverse-expanded"><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-comment"># it's crazy how small python can make this function.</tt> </tt> +<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">u1</tt><tt class="py-op">,</tt> <tt class="py-name">u2</tt><tt class="py-op">,</tt> <tt class="py-name">u3</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt> </tt> +<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">v1</tt><tt class="py-op">,</tt> <tt class="py-name">v2</tt><tt class="py-op">,</tt> <tt class="py-name">v3</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt> </tt> +<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt> +<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">v3</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">u3</tt> <tt class="py-op">//</tt> <tt class="py-name">v3</tt> </tt> +<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">u1</tt><tt class="py-op">,</tt> <tt class="py-name">v1</tt> <tt class="py-op">=</tt> <tt class="py-name">v1</tt><tt class="py-op">,</tt> <tt class="py-name">u1</tt> <tt class="py-op">-</tt> <tt class="py-name">v1</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> +<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">u2</tt><tt class="py-op">,</tt> <tt class="py-name">v2</tt> <tt class="py-op">=</tt> <tt class="py-name">v2</tt><tt class="py-op">,</tt> <tt class="py-name">u2</tt> <tt class="py-op">-</tt> <tt class="py-name">v2</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> +<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">u3</tt><tt class="py-op">,</tt> <tt class="py-name">v3</tt> <tt class="py-op">=</tt> <tt class="py-name">v3</tt><tt class="py-op">,</tt> <tt class="py-name">u3</tt> <tt class="py-op">-</tt> <tt class="py-name">v3</tt> <tt class="py-op">*</tt> <tt class="py-name">q</tt> </tt> +<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">u2</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">u2</tt> <tt class="py-op">+=</tt> <tt class="py-name">m</tt> </tt> +<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">u2</tt> </tt> +</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt> +<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable paramiko.util._g_thread_ids=paramiko.util-module.html#_g_thread_ids"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-22', '_g_thread_ids', 'link-22');">_g_thread_ids</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> +<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt id="link-23" class="py-name" targets="Variable paramiko.util._g_thread_counter=paramiko.util-module.html#_g_thread_counter"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-23', '_g_thread_counter', 'link-23');">_g_thread_counter</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> +<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable paramiko.util._g_thread_lock=paramiko.util-module.html#_g_thread_lock"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-24', '_g_thread_lock', 'link-24');">_g_thread_lock</a></tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="get_thread_id"></a><div id="get_thread_id-def"><a name="L235"></a><tt class="py-lineno">235</tt> <a class="py-toggle" href="#" id="get_thread_id-toggle" onclick="return toggle('get_thread_id');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="get_thread_id-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_thread_id-expanded"><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-25" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-25', '_g_thread_ids', 'link-22');">_g_thread_ids</a></tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-26', '_g_thread_counter', 'link-23');">_g_thread_counter</a></tt><tt class="py-op">,</tt> <tt id="link-27" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-27', '_g_thread_lock', 'link-24');">_g_thread_lock</a></tt> </tt> +<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">tid</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">currentThread</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-28" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-28', '_g_thread_ids', 'link-22');">_g_thread_ids</a></tt><tt class="py-op">[</tt><tt class="py-name">tid</tt><tt class="py-op">]</tt> </tt> +<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> +<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-29', '_g_thread_lock', 'link-24');">_g_thread_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> +<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-30', '_g_thread_counter', 'link-23');">_g_thread_counter</a></tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> +<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">ret</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="paramiko.util._g_thread_ids" class="py-name" href="#" onclick="return doclink('link-31', '_g_thread_ids', 'link-22');">_g_thread_ids</a></tt><tt class="py-op">[</tt><tt class="py-name">tid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="paramiko.util._g_thread_counter" class="py-name" href="#" onclick="return doclink('link-32', '_g_thread_counter', 'link-23');">_g_thread_counter</a></tt> </tt> +<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> +<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="paramiko.util._g_thread_lock" class="py-name" href="#" onclick="return doclink('link-33', '_g_thread_lock', 'link-24');">_g_thread_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ret</tt> </tt> +</div><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> </tt> +<a name="log_to_file"></a><div id="log_to_file-def"><a name="L249"></a><tt class="py-lineno">249</tt> <a class="py-toggle" href="#" id="log_to_file-toggle" onclick="return toggle('log_to_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#log_to_file">log_to_file</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">level</tt><tt class="py-op">=</tt><tt id="link-34" class="py-name" targets="Variable paramiko.auth_handler.DEBUG=paramiko.auth_handler-module.html#DEBUG,Variable paramiko.channel.DEBUG=paramiko.channel-module.html#DEBUG,Variable paramiko.client.DEBUG=paramiko.client-module.html#DEBUG,Variable paramiko.common.DEBUG=paramiko.common-module.html#DEBUG,Variable paramiko.dsskey.DEBUG=paramiko.dsskey-module.html#DEBUG,Variable paramiko.hostkeys.DEBUG=paramiko.hostkeys-module.html#DEBUG,Variable paramiko.kex_gex.DEBUG=paramiko.kex_gex-module.html#DEBUG,Variable paramiko.kex_group1.DEBUG=paramiko.kex_group1-module.html#DEBUG,Variable paramiko.logging22.DEBUG=paramiko.logging22-module.html#DEBUG,Variable paramiko.packet.DEBUG=paramiko.packet-module.html#DEBUG,Variable paramiko.pkey.DEBUG=paramiko.pkey-module.html#DEBUG,Variable paramiko.rsakey.DEBUG=paramiko.rsakey-module.html#DEBUG,Variable paramiko.server.DEBUG=paramiko.server-module.html#DEBUG,Variable paramiko.sftp.DEBUG=paramiko.sftp-module.html#DEBUG,Variable paramiko.sftp_attr.DEBUG=paramiko.sftp_attr-module.html#DEBUG,Variable paramiko.sftp_client.DEBUG=paramiko.sftp_client-module.html#DEBUG,Variable paramiko.sftp_file.DEBUG=paramiko.sftp_file-module.html#DEBUG,Variable paramiko.sftp_handle.DEBUG=paramiko.sftp_handle-module.html#DEBUG,Variable paramiko.sftp_server.DEBUG=paramiko.sftp_server-module.html#DEBUG,Variable paramiko.sftp_si.DEBUG=paramiko.sftp_si-module.html#DEBUG,Variable paramiko.transport.DEBUG=paramiko.transport-module.html#DEBUG,Variable paramiko.util.DEBUG=paramiko.util-module.html#DEBUG"><a title="paramiko.auth_handler.DEBUG paramiko.channel.DEBUG paramiko.client.DEBUG paramiko.common.DEBUG @@ -321,31 +324,62 @@ paramiko.sftp_handle.DEBUG paramiko.sftp_server.DEBUG paramiko.sftp_si.DEBUG paramiko.transport.DEBUG -paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-33', 'DEBUG', 'link-33');">DEBUG</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="log_to_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="log_to_file-expanded"><a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-docstring">"send paramiko logs to a logfile, if they're not already going somewhere"</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Function paramiko.logging22.getLogger()=paramiko.logging22-module.html#getLogger"><a title="paramiko.logging22.getLogger" class="py-name" href="#" onclick="return doclink('link-34', 'getLogger', 'link-34');">getLogger</a></tt><tt class="py-op">(</tt><tt class="py-string">"paramiko"</tt><tt class="py-op">)</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method paramiko.logging22.logger.setLevel()=paramiko.logging22.logger-class.html#setLevel"><a title="paramiko.logging22.logger.setLevel" class="py-name" href="#" onclick="return doclink('link-35', 'setLevel', 'link-35');">setLevel</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">)</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-36', 'open', 'link-36');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">lh</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Class paramiko.logging22.StreamHandler=paramiko.logging22.StreamHandler-class.html"><a title="paramiko.logging22.StreamHandler" class="py-name" href="#" onclick="return doclink('link-37', 'StreamHandler', 'link-37');">StreamHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">lh</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method paramiko.logging22.StreamHandler.setFormatter()=paramiko.logging22.StreamHandler-class.html#setFormatter"><a title="paramiko.logging22.StreamHandler.setFormatter" class="py-name" href="#" onclick="return doclink('link-38', 'setFormatter', 'link-38');">setFormatter</a></tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Class paramiko.logging22.Formatter=paramiko.logging22.Formatter-class.html"><a title="paramiko.logging22.Formatter" class="py-name" href="#" onclick="return doclink('link-39', 'Formatter', 'link-39');">Formatter</a></tt><tt class="py-op">(</tt><tt class="py-string">'%(levelname)-.3s [%(asctime)s.%(msecs)03d] thr=%(_threadid)-3d %(name)s: %(message)s'</tt><tt class="py-op">,</tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-string">'%Y%m%d-%H:%M:%S'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method paramiko.logging22.logger.addHandler()=paramiko.logging22.logger-class.html#addHandler"><a title="paramiko.logging22.logger.addHandler" class="py-name" href="#" onclick="return doclink('link-40', 'addHandler', 'link-40');">addHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">lh</tt><tt class="py-op">)</tt> </tt> -</div><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-comment"># make only one filter object, so it doesn't get applied more than once</tt> </tt> -<a name="PFilter"></a><div id="PFilter-def"><a name="L259"></a><tt class="py-lineno">259</tt> <a class="py-toggle" href="#" id="PFilter-toggle" onclick="return toggle('PFilter');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.util.PFilter-class.html">PFilter</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="PFilter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PFilter-expanded"><a name="PFilter.filter"></a><div id="PFilter.filter-def"><a name="L260"></a><tt class="py-lineno">260</tt> <a class="py-toggle" href="#" id="PFilter.filter-toggle" onclick="return toggle('PFilter.filter');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.PFilter-class.html#filter">filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">record</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="PFilter.filter-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PFilter.filter-expanded"><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">record</tt><tt class="py-op">.</tt><tt class="py-name">_threadid</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Function paramiko.util.get_thread_id()=paramiko.util-module.html#get_thread_id"><a title="paramiko.util.get_thread_id" class="py-name" href="#" onclick="return doclink('link-41', 'get_thread_id', 'link-41');">get_thread_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -</div></div><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt id="link-42" class="py-name" targets="Variable paramiko.util._pfilter=paramiko.util-module.html#_pfilter"><a title="paramiko.util._pfilter" class="py-name" href="#" onclick="return doclink('link-42', '_pfilter', 'link-42');">_pfilter</a></tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Class paramiko.util.PFilter=paramiko.util.PFilter-class.html"><a title="paramiko.util.PFilter" class="py-name" href="#" onclick="return doclink('link-43', 'PFilter', 'link-43');">PFilter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> </tt> -<a name="get_logger"></a><div id="get_logger-def"><a name="L265"></a><tt class="py-lineno">265</tt> <a class="py-toggle" href="#" id="get_logger-toggle" onclick="return toggle('get_logger');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#get_logger">get_logger</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="get_logger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_logger-expanded"><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="paramiko.logging22.getLogger" class="py-name" href="#" onclick="return doclink('link-44', 'getLogger', 'link-34');">getLogger</a></tt><tt class="py-op">(</tt><tt id="link-45" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name -paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-45', 'name', 'link-45');">name</a></tt><tt class="py-op">)</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method paramiko.logging22.logger.addFilter()=paramiko.logging22.logger-class.html#addFilter"><a title="paramiko.logging22.logger.addFilter" class="py-name" href="#" onclick="return doclink('link-46', 'addFilter', 'link-46');">addFilter</a></tt><tt class="py-op">(</tt><tt id="link-47" class="py-name"><a title="paramiko.util._pfilter" class="py-name" href="#" onclick="return doclink('link-47', '_pfilter', 'link-42');">_pfilter</a></tt><tt class="py-op">)</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">l</tt> </tt> -</div><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt><script type="text/javascript"> +paramiko.util.DEBUG" class="py-name" href="#" onclick="return doclink('link-34', 'DEBUG', 'link-34');">DEBUG</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="log_to_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="log_to_file-expanded"><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-docstring">"send paramiko logs to a logfile, if they're not already going somewhere"</tt> </tt> +<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Function paramiko.logging22.getLogger()=paramiko.logging22-module.html#getLogger"><a title="paramiko.logging22.getLogger" class="py-name" href="#" onclick="return doclink('link-35', 'getLogger', 'link-35');">getLogger</a></tt><tt class="py-op">(</tt><tt class="py-string">"paramiko"</tt><tt class="py-op">)</tt> </tt> +<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> +<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method paramiko.logging22.logger.setLevel()=paramiko.logging22.logger-class.html#setLevel"><a title="paramiko.logging22.logger.setLevel" class="py-name" href="#" onclick="return doclink('link-36', 'setLevel', 'link-36');">setLevel</a></tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">)</tt> </tt> +<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-37', 'open', 'link-37');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt> +<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">lh</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Class paramiko.logging22.StreamHandler=paramiko.logging22.StreamHandler-class.html"><a title="paramiko.logging22.StreamHandler" class="py-name" href="#" onclick="return doclink('link-38', 'StreamHandler', 'link-38');">StreamHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt> +<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">lh</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method paramiko.logging22.StreamHandler.setFormatter()=paramiko.logging22.StreamHandler-class.html#setFormatter"><a title="paramiko.logging22.StreamHandler.setFormatter" class="py-name" href="#" onclick="return doclink('link-39', 'setFormatter', 'link-39');">setFormatter</a></tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Class paramiko.logging22.Formatter=paramiko.logging22.Formatter-class.html"><a title="paramiko.logging22.Formatter" class="py-name" href="#" onclick="return doclink('link-40', 'Formatter', 'link-40');">Formatter</a></tt><tt class="py-op">(</tt><tt class="py-string">'%(levelname)-.3s [%(asctime)s.%(msecs)03d] thr=%(_threadid)-3d %(name)s: %(message)s'</tt><tt class="py-op">,</tt> </tt> +<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-string">'%Y%m%d-%H:%M:%S'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> +<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method paramiko.logging22.logger.addHandler()=paramiko.logging22.logger-class.html#addHandler"><a title="paramiko.logging22.logger.addHandler" class="py-name" href="#" onclick="return doclink('link-41', 'addHandler', 'link-41');">addHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">lh</tt><tt class="py-op">)</tt> </tt> +</div><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt> +<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-comment"># make only one filter object, so it doesn't get applied more than once</tt> </tt> +<a name="PFilter"></a><div id="PFilter-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="PFilter-toggle" onclick="return toggle('PFilter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.util.PFilter-class.html">PFilter</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="PFilter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PFilter-expanded"><a name="PFilter.filter"></a><div id="PFilter.filter-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="PFilter.filter-toggle" onclick="return toggle('PFilter.filter');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.PFilter-class.html#filter">filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">record</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="PFilter.filter-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PFilter.filter-expanded"><a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">record</tt><tt class="py-op">.</tt><tt class="py-name">_threadid</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name" targets="Function paramiko.util.get_thread_id()=paramiko.util-module.html#get_thread_id"><a title="paramiko.util.get_thread_id" class="py-name" href="#" onclick="return doclink('link-42', 'get_thread_id', 'link-42');">get_thread_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> +</div></div><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt id="link-43" class="py-name" targets="Variable paramiko.util._pfilter=paramiko.util-module.html#_pfilter"><a title="paramiko.util._pfilter" class="py-name" href="#" onclick="return doclink('link-43', '_pfilter', 'link-43');">_pfilter</a></tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name" targets="Class paramiko.util.PFilter=paramiko.util.PFilter-class.html"><a title="paramiko.util.PFilter" class="py-name" href="#" onclick="return doclink('link-44', 'PFilter', 'link-44');">PFilter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt> +<a name="get_logger"></a><div id="get_logger-def"><a name="L268"></a><tt class="py-lineno">268</tt> <a class="py-toggle" href="#" id="get_logger-toggle" onclick="return toggle('get_logger');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util-module.html#get_logger">get_logger</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="get_logger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_logger-expanded"><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="paramiko.logging22.getLogger" class="py-name" href="#" onclick="return doclink('link-45', 'getLogger', 'link-35');">getLogger</a></tt><tt class="py-op">(</tt><tt id="link-46" class="py-name" targets="Variable paramiko.kex_gex.KexGex.name=paramiko.kex_gex.KexGex-class.html#name,Variable paramiko.kex_group1.KexGroup1.name=paramiko.kex_group1.KexGroup1-class.html#name"><a title="paramiko.kex_gex.KexGex.name +paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doclink('link-46', 'name', 'link-46');">name</a></tt><tt class="py-op">)</tt> </tt> +<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">l</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method paramiko.logging22.logger.addFilter()=paramiko.logging22.logger-class.html#addFilter"><a title="paramiko.logging22.logger.addFilter" class="py-name" href="#" onclick="return doclink('link-47', 'addFilter', 'link-47');">addFilter</a></tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="paramiko.util._pfilter" class="py-name" href="#" onclick="return doclink('link-48', '_pfilter', 'link-43');">_pfilter</a></tt><tt class="py-op">)</tt> </tt> +<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">l</tt> </tt> +</div><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> </tt> +<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> </tt> +<a name="Counter"></a><div id="Counter-def"><a name="L274"></a><tt class="py-lineno">274</tt> <a class="py-toggle" href="#" id="Counter-toggle" onclick="return toggle('Counter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.util.Counter-class.html">Counter</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Counter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Counter-expanded"><a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-docstring">"""Stateful counter for CTR mode crypto"""</tt> </tt> +<a name="Counter.__init__"></a><div id="Counter.__init__-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="Counter.__init__-toggle" onclick="return toggle('Counter.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.Counter-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nbits</tt><tt class="py-op">,</tt> <tt class="py-param">initial_value</tt><tt class="py-op">=</tt><tt class="py-number">1L</tt><tt class="py-op">,</tt> <tt class="py-param">overflow</tt><tt class="py-op">=</tt><tt class="py-number">0L</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Counter.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Counter.__init__-expanded"><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blocksize</tt> <tt class="py-op">=</tt> <tt class="py-name">nbits</tt> <tt class="py-op">/</tt> <tt class="py-number">8</tt> </tt> +<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">overflow</tt> <tt class="py-op">=</tt> <tt class="py-name">overflow</tt> </tt> +<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># start with value - 1 so we don't have to store intermediate values when counting</tt> </tt> +<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-comment"># could the iv be 0?</tt> </tt> +<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">initial_value</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> +<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-string">'\xFF'</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blocksize</tt><tt class="py-op">)</tt> </tt> +<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> +<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-49', 'deflate_long', 'link-9');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">initial_value</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">add_sign_padding</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> +<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blocksize</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt> +<a name="Counter.__call__"></a><div id="Counter.__call__-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="Counter.__call__-toggle" onclick="return toggle('Counter.__call__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.Counter-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Counter.__call__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Counter.__call__-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-docstring">"""Increament the counter and return the new value"""</tt> </tt> +<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blocksize</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> +<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op">></tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> +<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">256</tt><tt class="py-op">)</tt> </tt> +<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-op">!=</tt> <tt class="py-string">'\x00'</tt><tt class="py-op">:</tt> </tt> +<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt> +<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-comment"># counter reset</tt> </tt> +<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="paramiko.util.deflate_long" class="py-name" href="#" onclick="return doclink('link-50', 'deflate_long', 'link-9');">deflate_long</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">overflow</tt><tt class="py-op">,</tt> <tt class="py-name">add_sign_padding</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> +<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-string">'\x00'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blocksize</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt> </tt> +<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> +</div><a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> </tt> +<a name="Counter.new"></a><div id="Counter.new-def"><a name="L300"></a><tt class="py-lineno">300</tt> <a class="py-toggle" href="#" id="Counter.new-toggle" onclick="return toggle('Counter.new');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.util.Counter-class.html#new">new</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">nbits</tt><tt class="py-op">,</tt> <tt class="py-param">initial_value</tt><tt class="py-op">=</tt><tt class="py-number">1L</tt><tt class="py-op">,</tt> <tt class="py-param">overflow</tt><tt class="py-op">=</tt><tt class="py-number">0L</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> +</div><div id="Counter.new-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Counter.new-expanded"><a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">nbits</tt><tt class="py-op">,</tt> <tt class="py-name">initial_value</tt><tt class="py-op">=</tt><tt class="py-name">initial_value</tt><tt class="py-op">,</tt> <tt class="py-name">overflow</tt><tt class="py-op">=</tt><tt class="py-name">overflow</tt><tt class="py-op">)</tt> </tt> +</div><a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt id="link-51" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-51', 'new', 'link-10');">new</a></tt> <tt class="py-op">=</tt> <tt class="py-name">classmethod</tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="paramiko.util.Counter.new" class="py-name" href="#" onclick="return doclink('link-52', 'new', 'link-10');">new</a></tt><tt class="py-op">)</tt> </tt> +</div><a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt><script type="text/javascript"> <!-- expandto(location.href); // --> @@ -378,7 +412,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:34 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.util.Counter-class.html b/docs/paramiko.util.Counter-class.html new file mode 100644 index 0000000..0d77ad5 --- /dev/null +++ b/docs/paramiko.util.Counter-class.html @@ -0,0 +1,258 @@ +<?xml version="1.0" encoding="ascii"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>paramiko.util.Counter</title> + <link rel="stylesheet" href="epydoc.css" type="text/css" /> + <script type="text/javascript" src="epydoc.js"></script> +</head> + +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<!-- ==================== NAVIGATION BAR ==================== --> +<table class="navbar" border="0" width="100%" cellpadding="0" + bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="middle"> + <!-- Home link --> + <th> <a + href="paramiko-module.html">Home</a> </th> + + <!-- Tree link --> + <th> <a + href="module-tree.html">Trees</a> </th> + + <!-- Index link --> + <th> <a + href="identifier-index.html">Indices</a> </th> + + <!-- Help link --> + <th> <a + href="help.html">Help</a> </th> + + <th class="navbar" width="100%"></th> + </tr> +</table> +<table width="100%" cellpadding="0" cellspacing="0"> + <tr valign="top"> + <td width="100%"> + <span class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="paramiko.util-module.html">Module util</a> :: + Class Counter + </span> + </td> + <td> + <table cellpadding="0" cellspacing="0"> + <!-- hide/show private --> + <tr><td align="right"><span class="options" + >[<a href="frames.html" target="_top">frames</a + >] | <a href="paramiko.util.Counter-class.html" + target="_top">no frames</a>]</span></td></tr> + </table> + </td> + </tr> +</table> +<!-- ==================== CLASS DESCRIPTION ==================== --> +<h1 class="epydoc">Class Counter</h1><p class="nomargin-top"><span class="codelink"><a href="paramiko.util-pysrc.html#Counter">source code</a></span></p> +<pre class="base-tree"> +object --+ + | + <strong class="uidshort">Counter</strong> +</pre> + +<hr /> +<p>Stateful counter for CTR mode crypto</p> + +<!-- ==================== INSTANCE METHODS ==================== --> +<a name="section-InstanceMethods"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Instance Methods</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><span class="summary-sig"><a href="paramiko.util.Counter-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, + <span class="summary-sig-arg">nbits</span>, + <span class="summary-sig-arg">initial_value</span>=<span class="summary-sig-default">1</span>, + <span class="summary-sig-arg">overflow</span>=<span class="summary-sig-default">0</span>)</span><br /> + x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> + <td align="right" valign="top"> + <span class="codelink"><a href="paramiko.util-pysrc.html#Counter.__init__">source code</a></span> + + </td> + </tr> + </table> + + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><span class="summary-sig"><a name="__call__"></a><span class="summary-sig-name">__call__</span>(<span class="summary-sig-arg">self</span>)</span><br /> + Increament the counter and return the new value</td> + <td align="right" valign="top"> + <span class="codelink"><a href="paramiko.util-pysrc.html#Counter.__call__">source code</a></span> + + </td> + </tr> + </table> + + </td> + </tr> + <tr> + <td colspan="2" class="summary"> + <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__delattr__</code>, + <code>__format__</code>, + <code>__getattribute__</code>, + <code>__hash__</code>, + <code>__new__</code>, + <code>__reduce__</code>, + <code>__reduce_ex__</code>, + <code>__repr__</code>, + <code>__setattr__</code>, + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> + </p> + </td> + </tr> +</table> +<!-- ==================== CLASS METHODS ==================== --> +<a name="section-ClassMethods"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Class Methods</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><span class="summary-sig"><a name="new"></a><span class="summary-sig-name">new</span>(<span class="summary-sig-arg">cls</span>, + <span class="summary-sig-arg">nbits</span>, + <span class="summary-sig-arg">initial_value</span>=<span class="summary-sig-default">1</span>, + <span class="summary-sig-arg">overflow</span>=<span class="summary-sig-default">0</span>)</span></td> + <td align="right" valign="top"> + <span class="codelink"><a href="paramiko.util-pysrc.html#Counter.new">source code</a></span> + + </td> + </tr> + </table> + + </td> + </tr> +</table> +<!-- ==================== PROPERTIES ==================== --> +<a name="section-Properties"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Properties</span></td> +</tr> + <tr> + <td colspan="2" class="summary"> + <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: + <code>__class__</code> + </p> + </td> + </tr> +</table> +<!-- ==================== METHOD DETAILS ==================== --> +<a name="section-MethodDetails"></a> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Method Details</span></td> +</tr> +</table> +<a name="__init__"></a> +<div> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr><td> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr valign="top"><td> + <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, + <span class="sig-arg">nbits</span>, + <span class="sig-arg">initial_value</span>=<span class="sig-default">1</span>, + <span class="sig-arg">overflow</span>=<span class="sig-default">0</span>)</span> + <br /><em class="fname">(Constructor)</em> + </h3> + </td><td align="right" valign="top" + ><span class="codelink"><a href="paramiko.util-pysrc.html#Counter.__init__">source code</a></span> + </td> + </tr></table> + + <p>x.__init__(...) initializes x; see x.__class__.__doc__ for + signature</p> + <dl class="fields"> + <dt>Overrides: + object.__init__ + <dd><em class="note">(inherited documentation)</em></dd> + </dt> + </dl> +</td></tr></table> +</div> +<br /> +<!-- ==================== NAVIGATION BAR ==================== --> +<table class="navbar" border="0" width="100%" cellpadding="0" + bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="middle"> + <!-- Home link --> + <th> <a + href="paramiko-module.html">Home</a> </th> + + <!-- Tree link --> + <th> <a + href="module-tree.html">Trees</a> </th> + + <!-- Index link --> + <th> <a + href="identifier-index.html">Indices</a> </th> + + <!-- Help link --> + <th> <a + href="help.html">Help</a> </th> + + <th class="navbar" width="100%"></th> + </tr> +</table> +<table border="0" cellpadding="0" cellspacing="0" width="100%%"> + <tr> + <td align="left" class="footer"> + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 + </td> + <td align="right" class="footer"> + <a target="mainFrame" href="http://epydoc.sourceforge.net" + >http://epydoc.sourceforge.net</a> + </td> + </tr> +</table> + +<script type="text/javascript"> + <!-- + // Private objects are initially displayed (because if + // javascript is turned off then we want them to be + // visible); but by default, we want to hide them. So hide + // them unless we have a cookie that says to show them. + checkCookie(); + // --> +</script> +</body> +</html> diff --git a/docs/paramiko.util.PFilter-class.html b/docs/paramiko.util.PFilter-class.html index c68bd23..2af319b 100644 --- a/docs/paramiko.util.PFilter-class.html +++ b/docs/paramiko.util.PFilter-class.html @@ -91,6 +91,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__init__</code>, @@ -99,7 +100,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -146,7 +149,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.util.enumerate-class.html b/docs/paramiko.util.enumerate-class.html index 9553b31..2bfa0c7 100644 --- a/docs/paramiko.util.enumerate-class.html +++ b/docs/paramiko.util.enumerate-class.html @@ -123,7 +123,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.win_pageant-module.html b/docs/paramiko.win_pageant-module.html index cc3bbf0..c37382c 100644 --- a/docs/paramiko.win_pageant-module.html +++ b/docs/paramiko.win_pageant-module.html @@ -116,6 +116,13 @@ <a name="win32con_WM_COPYDATA"></a><span class="summary-name">win32con_WM_COPYDATA</span> = <code title="74">74</code> </td> </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'paramiko'"><code class="variable-quote">'</code><code class="variable-string">paramiko</code><code class="variable-quote">'</code></code> + </td> + </tr> </table> <!-- ==================== FUNCTION DETAILS ==================== --> <a name="section-FunctionDetails"></a> @@ -175,7 +182,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:15 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.win_pageant-pysrc.html b/docs/paramiko.win_pageant-pysrc.html index 6b062ee..3ff1f48 100644 --- a/docs/paramiko.win_pageant-pysrc.html +++ b/docs/paramiko.win_pageant-pysrc.html @@ -55,24 +55,24 @@ <h1 class="epydoc">Source Code for <a href="paramiko.win_pageant-module.html">Module paramiko.win_pageant</a></h1> <pre class="py-src"> <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2005 John Arbash-Meinel <john@arbash-meinel.com></tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Modified up by: Todd Whiteman <ToddW@ActiveState.com></tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of paramiko.</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># any later version.</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># details.</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> +<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># Modified up by: Todd Whiteman <ToddW@ActiveState.com></tt> </tt> +<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># This file is part of paramiko.</tt> </tt> +<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is free software; you can redistribute it and/or modify it under the</tt> </tt> +<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># terms of the GNU Lesser General Public License as published by the Free</tt> </tt> +<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># Software Foundation; either version 2.1 of the License, or (at your option)</tt> </tt> +<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># any later version.</tt> </tt> +<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY</tt> </tt> +<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR</tt> </tt> +<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more</tt> </tt> +<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"># details.</tt> </tt> +<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt> +<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt> +<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># along with Paramiko; if not, write to the Free Software Foundation, Inc.,</tt> </tt> +<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"># 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.</tt> </tt> +<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt> <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">Functions for communicating with Pageant, the basic windows ssh agent program.</tt> </tt> <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> @@ -84,12 +84,12 @@ <a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">array</tt> </tt> <a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt> <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-comment"># if you're on windows, you should have one of these, i guess?</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ctypes is part of standard library since Python 2.5</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable paramiko.win_pageant._has_win32all=paramiko.win_pageant-module.html#_has_win32all"><a title="paramiko.win_pageant._has_win32all" class="py-name" href="#" onclick="return doclink('link-0', '_has_win32all', 'link-0');">_has_win32all</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> +<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-comment"># ctypes is part of standard library since Python 2.5</tt> </tt> +<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable paramiko.win_pageant._has_win32all=paramiko.win_pageant-module.html#_has_win32all"><a title="paramiko.win_pageant._has_win32all" class="py-name" href="#" onclick="return doclink('link-0', '_has_win32all', 'link-0');">_has_win32all</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable paramiko.win_pageant._has_ctypes=paramiko.win_pageant-module.html#_has_ctypes"><a title="paramiko.win_pageant._has_ctypes" class="py-name" href="#" onclick="return doclink('link-1', '_has_ctypes', 'link-1');">_has_ctypes</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-comment"># win32gui is preferred over win32ui to avoid MFC dependencies</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">import</tt> <tt class="py-name">win32gui</tt> </tt> +<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32gui</tt> </tt> <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt id="link-2" class="py-name"><a title="paramiko.win_pageant._has_win32all" class="py-name" href="#" onclick="return doclink('link-2', '_has_win32all', 'link-0');">_has_win32all</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> @@ -102,8 +102,8 @@ <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable paramiko.win_pageant._AGENT_COPYDATA_ID=paramiko.win_pageant-module.html#_AGENT_COPYDATA_ID"><a title="paramiko.win_pageant._AGENT_COPYDATA_ID" class="py-name" href="#" onclick="return doclink('link-4', '_AGENT_COPYDATA_ID', 'link-4');">_AGENT_COPYDATA_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0x804e50ba</tt> </tt> <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable paramiko.win_pageant._AGENT_MAX_MSGLEN=paramiko.win_pageant-module.html#_AGENT_MAX_MSGLEN"><a title="paramiko.win_pageant._AGENT_MAX_MSGLEN" class="py-name" href="#" onclick="return doclink('link-5', '_AGENT_MAX_MSGLEN', 'link-5');">_AGENT_MAX_MSGLEN</a></tt> <tt class="py-op">=</tt> <tt class="py-number">8192</tt> </tt> <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-comment"># Note: The WM_COPYDATA value is pulled from win32con, as a workaround</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># so we do not have to import this huge library just for this one variable.</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-6" class="py-name" targets="Variable paramiko.win_pageant.win32con_WM_COPYDATA=paramiko.win_pageant-module.html#win32con_WM_COPYDATA"><a title="paramiko.win_pageant.win32con_WM_COPYDATA" class="py-name" href="#" onclick="return doclink('link-6', 'win32con_WM_COPYDATA', 'link-6');">win32con_WM_COPYDATA</a></tt> <tt class="py-op">=</tt> <tt class="py-number">74</tt> </tt> +<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-comment"># so we do not have to import this huge library just for this one variable.</tt> </tt> +<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable paramiko.win_pageant.win32con_WM_COPYDATA=paramiko.win_pageant-module.html#win32con_WM_COPYDATA"><a title="paramiko.win_pageant.win32con_WM_COPYDATA" class="py-name" href="#" onclick="return doclink('link-6', 'win32con_WM_COPYDATA', 'link-6');">win32con_WM_COPYDATA</a></tt> <tt class="py-op">=</tt> <tt class="py-number">74</tt> </tt> <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt> <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt> <a name="_get_pageant_window_object"></a><div id="_get_pageant_window_object-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="_get_pageant_window_object-toggle" onclick="return toggle('_get_pageant_window_object');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="paramiko.win_pageant-module.html#_get_pageant_window_object">_get_pageant_window_object</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -116,7 +116,7 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> <a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-9" class="py-name"><a title="paramiko.win_pageant._has_ctypes" class="py-name" href="#" onclick="return doclink('link-9', '_has_ctypes', 'link-1');">_has_ctypes</a></tt><tt class="py-op">:</tt> </tt> <a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-comment"># Return 0 if there is no Pageant window.</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">windll</tt><tt class="py-op">.</tt><tt class="py-name">user32</tt><tt class="py-op">.</tt><tt class="py-name">FindWindowA</tt><tt class="py-op">(</tt><tt class="py-string">'Pageant'</tt><tt class="py-op">,</tt> <tt class="py-string">'Pageant'</tt><tt class="py-op">)</tt> </tt> +<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">windll</tt><tt class="py-op">.</tt><tt class="py-name">user32</tt><tt class="py-op">.</tt><tt class="py-name">FindWindowA</tt><tt class="py-op">(</tt><tt class="py-string">'Pageant'</tt><tt class="py-op">,</tt> <tt class="py-string">'Pageant'</tt><tt class="py-op">)</tt> </tt> <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> </div><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt> <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt> @@ -136,33 +136,33 @@ paramiko.rng_win32.error" class="py-name" href="#" onclick="return doclink('link </div><div id="_query_pageant-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_query_pageant-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">hwnd</tt> <tt class="py-op">=</tt> <tt class="py-name">_get_pageant_window_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hwnd</tt><tt class="py-op">:</tt> </tt> <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-comment"># Raise a failure to connect exception, pageant isn't running anymore!</tt> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> +<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-comment"># Write our pageant request string into the file (pageant will read this to determine what to do)</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mktemp</tt><tt class="py-op">(</tt><tt class="py-string">'.pag'</tt><tt class="py-op">)</tt> </tt> +<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mktemp</tt><tt class="py-op">(</tt><tt class="py-string">'.pag'</tt><tt class="py-op">)</tt> </tt> <a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">map_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> <a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name" targets="Method paramiko.SFTPServerInterface.open()=paramiko.SFTPServerInterface-class.html#open"><a title="paramiko.SFTPServerInterface.open" class="py-name" href="#" onclick="return doclink('link-12', 'open', 'link-12');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'w+b'</tt><tt class="py-op">)</tt> </tt> <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method paramiko.BufferedFile.write()=paramiko.BufferedFile-class.html#write,Method paramiko.SFTPHandle.write()=paramiko.SFTPHandle-class.html#write"><a title="paramiko.BufferedFile.write paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-13', 'write', 'link-13');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt> <tt class="py-op">)</tt> </tt> <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-comment"># Ensure the rest of the file is empty, otherwise pageant will read this</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="paramiko.BufferedFile.write +<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="paramiko.BufferedFile.write paramiko.SFTPHandle.write" class="py-name" href="#" onclick="return doclink('link-14', 'write', 'link-13');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'\0'</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="paramiko.win_pageant._AGENT_MAX_MSGLEN" class="py-name" href="#" onclick="return doclink('link-15', '_AGENT_MAX_MSGLEN', 'link-5');">_AGENT_MAX_MSGLEN</a></tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-comment"># Create the shared file map that pageant will use to read from</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">pymap</tt> <tt class="py-op">=</tt> <tt class="py-name">mmap</tt><tt class="py-op">.</tt><tt class="py-name">mmap</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno +<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">pymap</tt> <tt class="py-op">=</tt> <tt class="py-name">mmap</tt><tt class="py-op">.</tt><tt class="py-name">mmap</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method paramiko.Channel.fileno()=paramiko.Channel-class.html#fileno,Method paramiko.pipe.PosixPipe.fileno()=paramiko.pipe.PosixPipe-class.html#fileno,Method paramiko.pipe.WindowsPipe.fileno()=paramiko.pipe.WindowsPipe-class.html#fileno"><a title="paramiko.Channel.fileno paramiko.pipe.PosixPipe.fileno paramiko.pipe.WindowsPipe.fileno" class="py-name" href="#" onclick="return doclink('link-16', 'fileno', 'link-16');">fileno</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name"><a title="paramiko.win_pageant._AGENT_MAX_MSGLEN" class="py-name" href="#" onclick="return doclink('link-17', '_AGENT_MAX_MSGLEN', 'link-5');">_AGENT_MAX_MSGLEN</a></tt><tt class="py-op">,</tt> <tt class="py-name">tagname</tt><tt class="py-op">=</tt><tt class="py-name">map_filename</tt><tt class="py-op">,</tt> <tt class="py-name">access</tt><tt class="py-op">=</tt><tt class="py-name">mmap</tt><tt class="py-op">.</tt><tt class="py-name">ACCESS_WRITE</tt><tt class="py-op">)</tt> </tt> <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-comment"># Create an array buffer containing the mapped filename</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">char_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">"c"</tt><tt class="py-op">,</tt> <tt class="py-name">map_filename</tt> <tt class="py-op">+</tt> <tt class="py-string">'\0'</tt><tt class="py-op">)</tt> </tt> +<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">char_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">"c"</tt><tt class="py-op">,</tt> <tt class="py-name">map_filename</tt> <tt class="py-op">+</tt> <tt class="py-string">'\0'</tt><tt class="py-op">)</tt> </tt> <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">char_buffer_address</tt><tt class="py-op">,</tt> <tt class="py-name">char_buffer_size</tt> <tt class="py-op">=</tt> <tt class="py-name">char_buffer</tt><tt class="py-op">.</tt><tt class="py-name">buffer_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-comment"># Create a string to use for the SendMessage function call</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">cds</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">"LLP"</tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name"><a title="paramiko.win_pageant._AGENT_COPYDATA_ID" class="py-name" href="#" onclick="return doclink('link-18', '_AGENT_COPYDATA_ID', 'link-4');">_AGENT_COPYDATA_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">char_buffer_size</tt><tt class="py-op">,</tt> <tt class="py-name">char_buffer_address</tt><tt class="py-op">)</tt> </tt> +<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">cds</tt> <tt class="py-op">=</tt> <tt class="py-name">struct</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-string">"LLP"</tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name"><a title="paramiko.win_pageant._AGENT_COPYDATA_ID" class="py-name" href="#" onclick="return doclink('link-18', '_AGENT_COPYDATA_ID', 'link-4');">_AGENT_COPYDATA_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">char_buffer_size</tt><tt class="py-op">,</tt> <tt class="py-name">char_buffer_address</tt><tt class="py-op">)</tt> </tt> <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt> <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-19" class="py-name"><a title="paramiko.win_pageant._has_win32all" class="py-name" href="#" onclick="return doclink('link-19', '_has_win32all', 'link-0');">_has_win32all</a></tt><tt class="py-op">:</tt> </tt> <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-comment"># win32gui.SendMessage should also allow the same pattern as</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># ctypes, but let's keep it like this for now...</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">win32gui</tt><tt class="py-op">.</tt><tt class="py-name">SendMessage</tt><tt class="py-op">(</tt><tt class="py-name">hwnd</tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name"><a title="paramiko.win_pageant.win32con_WM_COPYDATA" class="py-name" href="#" onclick="return doclink('link-20', 'win32con_WM_COPYDATA', 'link-6');">win32con_WM_COPYDATA</a></tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cds</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">cds</tt><tt class="py-op">)</tt> </tt> +<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-comment"># ctypes, but let's keep it like this for now...</tt> </tt> +<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">response</tt> <tt class="py-op">=</tt> <tt class="py-name">win32gui</tt><tt class="py-op">.</tt><tt class="py-name">SendMessage</tt><tt class="py-op">(</tt><tt class="py-name">hwnd</tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name"><a title="paramiko.win_pageant.win32con_WM_COPYDATA" class="py-name" href="#" onclick="return doclink('link-20', 'win32con_WM_COPYDATA', 'link-6');">win32con_WM_COPYDATA</a></tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cds</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">cds</tt><tt class="py-op">)</tt> </tt> <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-21" class="py-name"><a title="paramiko.win_pageant._has_ctypes" class="py-name" href="#" onclick="return doclink('link-21', '_has_ctypes', 'link-1');">_has_ctypes</a></tt><tt class="py-op">:</tt> </tt> <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">_buf</tt> <tt class="py-op">=</tt> <tt class="py-name">array</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-string">'B'</tt><tt class="py-op">,</tt> <tt class="py-name">cds</tt><tt class="py-op">)</tt> </tt> <a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">_addr</tt><tt class="py-op">,</tt> <tt class="py-name">_size</tt> <tt class="py-op">=</tt> <tt class="py-name">_buf</tt><tt class="py-op">.</tt><tt class="py-name">buffer_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> @@ -205,7 +205,7 @@ paramiko.pipe.PosixPipe.close paramiko.pipe.WindowsPipe.close paramiko.win_pageant.PageantConnection.close" class="py-name" href="#" onclick="return doclink('link-26', 'close', 'link-25');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-comment"># Remove the file, it was temporary only</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.SFTPClient.unlink()=paramiko.SFTPClient-class.html#unlink"><a title="paramiko.SFTPClient.unlink" class="py-name" href="#" onclick="return doclink('link-27', 'unlink', 'link-27');">unlink</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> +<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method paramiko.SFTPClient.unlink()=paramiko.SFTPClient-class.html#unlink"><a title="paramiko.SFTPClient.unlink" class="py-name" href="#" onclick="return doclink('link-27', 'unlink', 'link-27');">unlink</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt> </div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt> <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt> <a name="PageantConnection"></a><div id="PageantConnection-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="PageantConnection-toggle" onclick="return toggle('PageantConnection');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="paramiko.win_pageant.PageantConnection-class.html">PageantConnection</a> <tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> @@ -266,7 +266,7 @@ expandto(location.href); <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:35 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:20 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/paramiko.win_pageant.PageantConnection-class.html b/docs/paramiko.win_pageant.PageantConnection-class.html index 40eb0af..dd2bd18 100644 --- a/docs/paramiko.win_pageant.PageantConnection-class.html +++ b/docs/paramiko.win_pageant.PageantConnection-class.html @@ -146,6 +146,7 @@ object --+ <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, + <code>__format__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, @@ -153,7 +154,9 @@ object --+ <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, - <code>__str__</code> + <code>__sizeof__</code>, + <code>__str__</code>, + <code>__subclasshook__</code> </p> </td> </tr> @@ -235,7 +238,7 @@ object --+ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:31 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:17 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/redirect.html b/docs/redirect.html index 33190ec..af9392a 100644 --- a/docs/redirect.html +++ b/docs/redirect.html @@ -7,7 +7,7 @@ <body> <script type="text/javascript"> <!-- -var pages = ["paramiko.ssh_exception.PartialAuthentication-c", "paramiko.win_pageant.PageantConnection-c", "paramiko.rng.StrongLockingRandomPool-c", "paramiko.buffered_pipe.BufferedPipe-c", "paramiko.PasswordRequiredException-c", "paramiko.buffered_pipe.PipeTimeout-c", "paramiko.channel.ChannelStderrFile-c", "paramiko.compress.ZlibDecompressor-c", "paramiko.packet.NeedRekeyException-c", "paramiko.AuthenticationException-c", "paramiko.compress.ZlibCompressor-c", "paramiko.logging22.StreamHandler-c", "paramiko.BadAuthenticationType-c", "paramiko.hostkeys.HostKeyEntry-c", "paramiko.MissingHostKeyPolicy-c", "paramiko.kex_group1.KexGroup1-c", "paramiko.transport.ChannelMap-c", "paramiko.BadHostKeyException-c", "paramiko.SFTPServerInterface-c", "paramiko.logging22.Formatter-c", "paramiko.primes.ModulusPack-c", "paramiko.ChannelException-c", "paramiko.SubsystemHandler-c", "paramiko.ber.BERException-c", "paramiko.logging22.logger-c", "paramiko.pipe.WindowsPipe-c", "paramiko.SecurityOptions-c", "paramiko.ServerInterface-c", "paramiko.rng_posix.error-c", "paramiko.rng_win32.error-c", "paramiko.SFTPAttributes-c", "paramiko.kex_gex.KexGex-c", "paramiko.pipe.PosixPipe-c", "paramiko.util.enumerate-c", "paramiko.buffered_pipe-m", "paramiko.ssh_exception-m", "paramiko.AutoAddPolicy-c", "paramiko.WarningPolicy-c", "paramiko.auth_handler-m", "paramiko.BufferedFile-c", "paramiko.RejectPolicy-c", "paramiko.SSHException-c", "paramiko.util.PFilter-c", "paramiko.sftp_client-m", "paramiko.sftp_handle-m", "paramiko.sftp_server-m", "paramiko.win_pageant-m", "paramiko.pipe.OrPipe-c", "paramiko.kex_group1-m", "paramiko.SFTPClient-c", "paramiko.SFTPHandle-c", "paramiko.SFTPServer-c", "paramiko.logging22-m", "paramiko.rng_posix-m", "paramiko.rng_win32-m", "paramiko.sftp_attr-m", "paramiko.sftp_file-m", "paramiko.transport-m", "paramiko.SFTPError-c", "paramiko.SSHClient-c", "paramiko.SSHConfig-c", "paramiko.Transport-c", "paramiko.compress-m", "paramiko.hostkeys-m", "paramiko.resource-m", "paramiko.AgentKey-c", "paramiko.HostKeys-c", "paramiko.SFTPFile-c", "paramiko.channel-m", "paramiko.kex_gex-m", "paramiko.message-m", "paramiko.sftp_si-m", "paramiko.Channel-c", "paramiko.Message-c", "paramiko.ber.BER-c", "paramiko.client-m", "paramiko.common-m", "paramiko.config-m", "paramiko.dsskey-m", "paramiko.packet-m", "paramiko.primes-m", "paramiko.rsakey-m", "paramiko.server-m", "paramiko.DSSKey-c", "paramiko.RSAKey-c", "paramiko.agent-m", "paramiko.Agent-c", "paramiko.file-m", "paramiko.pipe-m", "paramiko.pkey-m", "paramiko.sftp-m", "paramiko.util-m", "paramiko.PKey-c", "paramiko.SFTP-c", "paramiko.ber-m", "paramiko.rng-m", "paramiko-m"]; +var pages = ["paramiko.ssh_exception.PartialAuthentication-c", "paramiko.win_pageant.PageantConnection-c", "paramiko.rng.StrongLockingRandomPool-c", "paramiko.buffered_pipe.BufferedPipe-c", "paramiko.PasswordRequiredException-c", "paramiko.buffered_pipe.PipeTimeout-c", "paramiko.channel.ChannelStderrFile-c", "paramiko.compress.ZlibDecompressor-c", "paramiko.packet.NeedRekeyException-c", "paramiko.AuthenticationException-c", "paramiko.compress.ZlibCompressor-c", "paramiko.logging22.StreamHandler-c", "paramiko.BadAuthenticationType-c", "paramiko.hostkeys.HostKeyEntry-c", "paramiko.MissingHostKeyPolicy-c", "paramiko.kex_group1.KexGroup1-c", "paramiko.transport.ChannelMap-c", "paramiko.BadHostKeyException-c", "paramiko.SFTPServerInterface-c", "paramiko.logging22.Formatter-c", "paramiko.primes.ModulusPack-c", "paramiko.ChannelException-c", "paramiko.SubsystemHandler-c", "paramiko.ber.BERException-c", "paramiko.logging22.logger-c", "paramiko.pipe.WindowsPipe-c", "paramiko.SecurityOptions-c", "paramiko.ServerInterface-c", "paramiko.rng_posix.error-c", "paramiko.rng_win32.error-c", "paramiko.SFTPAttributes-c", "paramiko.kex_gex.KexGex-c", "paramiko.pipe.PosixPipe-c", "paramiko.util.enumerate-c", "paramiko.buffered_pipe-m", "paramiko.ssh_exception-m", "paramiko.AutoAddPolicy-c", "paramiko.WarningPolicy-c", "paramiko.auth_handler-m", "paramiko.BufferedFile-c", "paramiko.RejectPolicy-c", "paramiko.SSHException-c", "paramiko.util.Counter-c", "paramiko.util.PFilter-c", "paramiko.sftp_client-m", "paramiko.sftp_handle-m", "paramiko.sftp_server-m", "paramiko.win_pageant-m", "paramiko.pipe.OrPipe-c", "paramiko.kex_group1-m", "paramiko.SFTPClient-c", "paramiko.SFTPHandle-c", "paramiko.SFTPServer-c", "paramiko.logging22-m", "paramiko.rng_posix-m", "paramiko.rng_win32-m", "paramiko.sftp_attr-m", "paramiko.sftp_file-m", "paramiko.transport-m", "paramiko.SFTPError-c", "paramiko.SSHClient-c", "paramiko.SSHConfig-c", "paramiko.Transport-c", "paramiko.compress-m", "paramiko.hostkeys-m", "paramiko.resource-m", "paramiko.AgentKey-c", "paramiko.HostKeys-c", "paramiko.SFTPFile-c", "paramiko.channel-m", "paramiko.kex_gex-m", "paramiko.message-m", "paramiko.sftp_si-m", "paramiko.Channel-c", "paramiko.Message-c", "paramiko.ber.BER-c", "paramiko.client-m", "paramiko.common-m", "paramiko.config-m", "paramiko.dsskey-m", "paramiko.packet-m", "paramiko.primes-m", "paramiko.rsakey-m", "paramiko.server-m", "paramiko.DSSKey-c", "paramiko.RSAKey-c", "paramiko.agent-m", "paramiko.Agent-c", "paramiko.file-m", "paramiko.pipe-m", "paramiko.pkey-m", "paramiko.sftp-m", "paramiko.util-m", "paramiko.PKey-c", "paramiko.SFTP-c", "paramiko.ber-m", "paramiko.rng-m", "paramiko-m"]; var dottedName = get_anchor(); if (dottedName) { var target = redirect_url(dottedName); diff --git a/docs/since-index.html b/docs/since-index.html index 078046b..ef2aa22 100644 --- a/docs/since-index.html +++ b/docs/since-index.html @@ -280,7 +280,7 @@ <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:25 2008 + Generated by Epydoc 3.0.1 on Sun Nov 1 22:14:14 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" diff --git a/docs/toc-everything.html b/docs/toc-everything.html index 53f4262..e276cc5 100644 --- a/docs/toc-everything.html +++ b/docs/toc-everything.html @@ -50,7 +50,8 @@ >paramiko.logging22.Formatter</a><br /> <a target="mainFrame" href="paramiko.logging22.StreamHandler-class.html" >paramiko.logging22.StreamHandler</a><br /> <a target="mainFrame" href="paramiko.logging22.logger-class.html" >paramiko.logging22.logger</a><br /> <a target="mainFrame" href="paramiko.rng_win32.error-class.html" - >paramiko.rng_win32.error</a><br /> <a target="mainFrame" href="paramiko.util.PFilter-class.html" + >paramiko.rng_win32.error</a><br /> <a target="mainFrame" href="paramiko.util.Counter-class.html" + >paramiko.util.Counter</a><br /> <a target="mainFrame" href="paramiko.util.PFilter-class.html" >paramiko.util.PFilter</a><br /> <a target="mainFrame" href="paramiko.util.enumerate-class.html" >paramiko.util.enumerate</a><br /> <a target="mainFrame" href="paramiko.win_pageant.PageantConnection-class.html" >paramiko.win_pageant.PageantConnection</a><br /> <h2 class="toc">All Functions</h2> @@ -81,7 +82,9 @@ >paramiko.logging22.DEBUG</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#ERROR" >paramiko.logging22.ERROR</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#INFO" >paramiko.logging22.INFO</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#WARNING" - >paramiko.logging22.WARNING</a><br /> <a target="mainFrame" href="paramiko.util-module.html#AUTH_FAILED" + >paramiko.logging22.WARNING</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#__package__" + >paramiko.logging22.__package__</a><br /> <a target="mainFrame" href="paramiko.rng_win32-module.html#__package__" + >paramiko.rng_win32.__package__</a><br /> <a target="mainFrame" href="paramiko.util-module.html#AUTH_FAILED" >paramiko.util.AUTH_FAILED</a><br /> <a target="mainFrame" href="paramiko.util-module.html#AUTH_PARTIALLY_SUCCESSFUL" >paramiko.util.AUTH_PARTIALLY_SUCCESSFUL</a><br /> <a target="mainFrame" href="paramiko.util-module.html#AUTH_SUCCESSFUL" >paramiko.util.AUTH_SUCCESSFUL</a><br /> <a target="mainFrame" href="paramiko.util-module.html#CONNECTION_FAILED_CODE" @@ -129,8 +132,10 @@ >paramiko.util.OPEN_FAILED_UNKNOWN_CHANNEL_TYPE</a><br /> <a target="mainFrame" href="paramiko.util-module.html#OPEN_SUCCEEDED" >paramiko.util.OPEN_SUCCEEDED</a><br /> <a target="mainFrame" href="paramiko.util-module.html#PY22" >paramiko.util.PY22</a><br /> <a target="mainFrame" href="paramiko.util-module.html#WARNING" - >paramiko.util.WARNING</a><br /> <a target="mainFrame" href="paramiko.util-module.html#randpool" - >paramiko.util.randpool</a><br /> <a target="mainFrame" href="paramiko.win_pageant-module.html#win32con_WM_COPYDATA" + >paramiko.util.WARNING</a><br /> <a target="mainFrame" href="paramiko.util-module.html#__package__" + >paramiko.util.__package__</a><br /> <a target="mainFrame" href="paramiko.util-module.html#randpool" + >paramiko.util.randpool</a><br /> <a target="mainFrame" href="paramiko.win_pageant-module.html#__package__" + >paramiko.win_pageant.__package__</a><br /> <a target="mainFrame" href="paramiko.win_pageant-module.html#win32con_WM_COPYDATA" >paramiko.win_pageant.win32con_WM_COPYDATA</a><br /><hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.ber-module.html b/docs/toc-paramiko.ber-module.html index b5c19e1..7190335 100644 --- a/docs/toc-paramiko.ber-module.html +++ b/docs/toc-paramiko.ber-module.html @@ -13,6 +13,7 @@ <h1 class="toc">Module ber</h1> <hr /> <h2 class="toc">Classes</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.buffered_pipe-module.html b/docs/toc-paramiko.buffered_pipe-module.html index 699ad46..338589e 100644 --- a/docs/toc-paramiko.buffered_pipe-module.html +++ b/docs/toc-paramiko.buffered_pipe-module.html @@ -13,6 +13,7 @@ <h1 class="toc">Module buffered_pipe</h1> <hr /> <h2 class="toc">Classes</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.compress-module.html b/docs/toc-paramiko.compress-module.html index ac5a589..b4243ab 100644 --- a/docs/toc-paramiko.compress-module.html +++ b/docs/toc-paramiko.compress-module.html @@ -13,6 +13,7 @@ <h1 class="toc">Module compress</h1> <hr /> <h2 class="toc">Classes</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.config-module.html b/docs/toc-paramiko.config-module.html index 4552d73..fab1f11 100644 --- a/docs/toc-paramiko.config-module.html +++ b/docs/toc-paramiko.config-module.html @@ -12,6 +12,7 @@ alink="#204080"> <h1 class="toc">Module config</h1> <hr /> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.file-module.html b/docs/toc-paramiko.file-module.html index 3fefa62..bb4f7e9 100644 --- a/docs/toc-paramiko.file-module.html +++ b/docs/toc-paramiko.file-module.html @@ -12,6 +12,7 @@ alink="#204080"> <h1 class="toc">Module file</h1> <hr /> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.logging22-module.html b/docs/toc-paramiko.logging22-module.html index 23b4050..df6f73f 100644 --- a/docs/toc-paramiko.logging22-module.html +++ b/docs/toc-paramiko.logging22-module.html @@ -24,7 +24,8 @@ >DEBUG</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#ERROR" >ERROR</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#INFO" >INFO</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#WARNING" - >WARNING</a><br /><hr /> + >WARNING</a><br /> <a target="mainFrame" href="paramiko.logging22-module.html#__package__" + >__package__</a><br /><hr /> <script type="text/javascript"> <!-- diff --git a/docs/toc-paramiko.message-module.html b/docs/toc-paramiko.message-module.html index 0ef8b8b..14c9b27 100644 --- a/docs/toc-paramiko.message-module.html +++ b/docs/toc-paramiko.message-module.html @@ -12,6 +12,7 @@ alink="#204080"> <h1 class="toc">Module message</h1> <hr /> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.pipe-module.html b/docs/toc-paramiko.pipe-module.html index 328fcb9..fc5da49 100644 --- a/docs/toc-paramiko.pipe-module.html +++ b/docs/toc-paramiko.pipe-module.html @@ -14,6 +14,7 @@ <hr /> <h2 class="toc">Classes</h2> <h2 class="toc">Functions</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.primes-module.html b/docs/toc-paramiko.primes-module.html index ddf708a..ae93b5c 100644 --- a/docs/toc-paramiko.primes-module.html +++ b/docs/toc-paramiko.primes-module.html @@ -13,6 +13,7 @@ <h1 class="toc">Module primes</h1> <hr /> <h2 class="toc">Classes</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.rng_posix-module.html b/docs/toc-paramiko.rng_posix-module.html index 308d2e4..57f7c20 100644 --- a/docs/toc-paramiko.rng_posix-module.html +++ b/docs/toc-paramiko.rng_posix-module.html @@ -14,6 +14,7 @@ <hr /> <h2 class="toc">Classes</h2> <h2 class="toc">Functions</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.rng_win32-module.html b/docs/toc-paramiko.rng_win32-module.html index 71da0c5..48d7c5f 100644 --- a/docs/toc-paramiko.rng_win32-module.html +++ b/docs/toc-paramiko.rng_win32-module.html @@ -16,7 +16,9 @@ <a target="mainFrame" href="paramiko.rng_win32.error-class.html" >error</a><br /> <h2 class="toc">Functions</h2> <a target="mainFrame" href="paramiko.rng_win32-module.html#open_rng_device" - >open_rng_device</a><br /><hr /> + >open_rng_device</a><br /> <h2 class="toc">Variables</h2> + <a target="mainFrame" href="paramiko.rng_win32-module.html#__package__" + >__package__</a><br /><hr /> <script type="text/javascript"> <!-- diff --git a/docs/toc-paramiko.ssh_exception-module.html b/docs/toc-paramiko.ssh_exception-module.html index eb2abfe..90172f1 100644 --- a/docs/toc-paramiko.ssh_exception-module.html +++ b/docs/toc-paramiko.ssh_exception-module.html @@ -13,6 +13,7 @@ <h1 class="toc">Module ssh_exception</h1> <hr /> <h2 class="toc">Classes</h2> + <h2 class="toc">Variables</h2> <hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.util-module.html b/docs/toc-paramiko.util-module.html index 569b46c..2addc4c 100644 --- a/docs/toc-paramiko.util-module.html +++ b/docs/toc-paramiko.util-module.html @@ -13,7 +13,8 @@ <h1 class="toc">Module util</h1> <hr /> <h2 class="toc">Classes</h2> - <a target="mainFrame" href="paramiko.util.PFilter-class.html" + <a target="mainFrame" href="paramiko.util.Counter-class.html" + >Counter</a><br /> <a target="mainFrame" href="paramiko.util.PFilter-class.html" >PFilter</a><br /> <a target="mainFrame" href="paramiko.util.enumerate-class.html" >enumerate</a><br /> <h2 class="toc">Functions</h2> <a target="mainFrame" href="paramiko.util-module.html#bit_length" @@ -83,7 +84,8 @@ >OPEN_FAILED_UNKNOWN_CHANNEL_TYPE</a><br /> <a target="mainFrame" href="paramiko.util-module.html#OPEN_SUCCEEDED" >OPEN_SUCCEEDED</a><br /> <a target="mainFrame" href="paramiko.util-module.html#PY22" >PY22</a><br /> <a target="mainFrame" href="paramiko.util-module.html#WARNING" - >WARNING</a><br /> <a target="mainFrame" href="paramiko.util-module.html#randpool" + >WARNING</a><br /> <a target="mainFrame" href="paramiko.util-module.html#__package__" + >__package__</a><br /> <a target="mainFrame" href="paramiko.util-module.html#randpool" >randpool</a><br /><hr /> <script type="text/javascript"> diff --git a/docs/toc-paramiko.win_pageant-module.html b/docs/toc-paramiko.win_pageant-module.html index 988262c..51065be 100644 --- a/docs/toc-paramiko.win_pageant-module.html +++ b/docs/toc-paramiko.win_pageant-module.html @@ -17,7 +17,8 @@ >PageantConnection</a><br /> <h2 class="toc">Functions</h2> <a target="mainFrame" href="paramiko.win_pageant-module.html#can_talk_to_agent" >can_talk_to_agent</a><br /> <h2 class="toc">Variables</h2> - <a target="mainFrame" href="paramiko.win_pageant-module.html#win32con_WM_COPYDATA" + <a target="mainFrame" href="paramiko.win_pageant-module.html#__package__" + >__package__</a><br /> <a target="mainFrame" href="paramiko.win_pageant-module.html#win32con_WM_COPYDATA" >win32con_WM_COPYDATA</a><br /><hr /> <script type="text/javascript"> diff --git a/paramiko.egg-info/PKG-INFO b/paramiko.egg-info/PKG-INFO index f40d53f..b94ab07 100644 --- a/paramiko.egg-info/PKG-INFO +++ b/paramiko.egg-info/PKG-INFO @@ -1,12 +1,12 @@ Metadata-Version: 1.0 Name: paramiko -Version: 1.7.4 +Version: 1.7.6 Summary: SSH2 protocol library Home-page: http://www.lag.net/paramiko/ Author: Robey Pointer -Author-email: robey@lag.net +Author-email: robeypointer@gmail.com License: LGPL -Download-URL: http://www.lag.net/paramiko/download/paramiko-1.7.4.zip +Download-URL: http://www.lag.net/paramiko/download/paramiko-1.7.6.zip Description: This is a library for making SSH2 connections (client or server). Emphasis is on using SSH2 as an alternative to SSL for making secure diff --git a/paramiko.egg-info/SOURCES.txt b/paramiko.egg-info/SOURCES.txt index 40a1c7d..2a1510f 100644 --- a/paramiko.egg-info/SOURCES.txt +++ b/paramiko.egg-info/SOURCES.txt @@ -155,6 +155,7 @@ docs/paramiko.transport-pysrc.html docs/paramiko.transport.ChannelMap-class.html docs/paramiko.util-module.html docs/paramiko.util-pysrc.html +docs/paramiko.util.Counter-class.html docs/paramiko.util.PFilter-class.html docs/paramiko.util.enumerate-class.html docs/paramiko.win_pageant-module.html @@ -263,4 +264,4 @@ tests/test_rsa_password.key tests/test_sftp.py tests/test_sftp_big.py tests/test_transport.py -tests/test_util.py +tests/test_util.py
\ No newline at end of file diff --git a/paramiko/__init__.py b/paramiko/__init__.py index 9a8caec..ac0d559 100644 --- a/paramiko/__init__.py +++ b/paramiko/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2008 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -47,9 +47,9 @@ released under the GNU Lesser General Public License (LGPL). Website: U{http://www.lag.net/paramiko/} -@version: 1.7.4 (Desmond) +@version: 1.7.6 (Fanny) @author: Robey Pointer -@contact: robey@lag.net +@contact: robeypointer@gmail.com @license: GNU Lesser General Public License (LGPL) """ @@ -59,10 +59,10 @@ if sys.version_info < (2, 2): raise RuntimeError('You need python 2.2 for this module.') -__author__ = "Robey Pointer <robey@lag.net>" -__date__ = "06 Jul 2008" -__version__ = "1.7.4 (Desmond)" -__version_info__ = (1, 7, 4) +__author__ = "Robey Pointer <robeypointer@gmail.com>" +__date__ = "1 Nov 2009" +__version__ = "1.7.6 (Fanny)" +__version_info__ = (1, 7, 6) __license__ = "GNU Lesser General Public License (LGPL)" diff --git a/paramiko/auth_handler.py b/paramiko/auth_handler.py index 39a0194..0f2e4f6 100644 --- a/paramiko/auth_handler.py +++ b/paramiko/auth_handler.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -363,7 +363,7 @@ class AuthHandler (object): self.transport._log(DEBUG, 'Methods: ' + str(authlist)) self.transport.saved_exception = PartialAuthentication(authlist) elif self.auth_method not in authlist: - self.transport._log(INFO, 'Authentication type (%s) not permitted.' % self.auth_method) + self.transport._log(DEBUG, 'Authentication type (%s) not permitted.' % self.auth_method) self.transport._log(DEBUG, 'Allowed methods: ' + str(authlist)) self.transport.saved_exception = BadAuthenticationType('Bad authentication type', authlist) else: diff --git a/paramiko/ber.py b/paramiko/ber.py index 9d8ddfa..19568dd 100644 --- a/paramiko/ber.py +++ b/paramiko/ber.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/buffered_pipe.py b/paramiko/buffered_pipe.py index ae3d9d6..b19d74b 100644 --- a/paramiko/buffered_pipe.py +++ b/paramiko/buffered_pipe.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/channel.py b/paramiko/channel.py index 910a03c..4694eef 100644 --- a/paramiko/channel.py +++ b/paramiko/channel.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -90,6 +90,7 @@ class Channel (object): self.logger = util.get_logger('paramiko.transport') self._pipe = None self.event = threading.Event() + self.event_ready = False self.combine_stderr = False self.exit_status = -1 self.origin_addr = None @@ -152,7 +153,7 @@ class Channel (object): # pixel height, width (usually useless) m.add_int(0).add_int(0) m.add_string('') - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() @@ -179,7 +180,7 @@ class Channel (object): m.add_int(self.remote_chanid) m.add_string('shell') m.add_boolean(1) - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() @@ -207,7 +208,7 @@ class Channel (object): m.add_string('exec') m.add_boolean(True) m.add_string(command) - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() @@ -234,7 +235,7 @@ class Channel (object): m.add_string('subsystem') m.add_boolean(True) m.add_string(subsystem) - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() @@ -261,7 +262,7 @@ class Channel (object): m.add_int(width) m.add_int(height) m.add_int(0).add_int(0) - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() @@ -291,10 +292,8 @@ class Channel (object): @since: 1.2 """ - while True: - if self.closed or self.status_event.isSet(): - break - self.status_event.wait(0.1) + self.status_event.wait() + assert self.status_event.isSet() return self.exit_status def send_exit_status(self, status): @@ -376,7 +375,7 @@ class Channel (object): m.add_string(auth_protocol) m.add_string(auth_cookie) m.add_int(screen_number) - self.event.clear() + self._event_pending() self.transport._send_user_message(m) self._wait_for_event() self.transport._set_x11_handler(handler) @@ -919,9 +918,10 @@ class Channel (object): self.out_max_packet_size = max(max_packet_size, MIN_PACKET_SIZE) self.active = 1 self._log(DEBUG, 'Max packet out: %d bytes' % max_packet_size) - + def _request_success(self, m): self._log(DEBUG, 'Sesch channel %d request ok' % self.chanid) + self.event_ready = True self.event.set() return @@ -1069,17 +1069,19 @@ class Channel (object): def _log(self, level, msg, *args): self.logger.log(level, "[chan " + self._name + "] " + msg, *args) + def _event_pending(self): + self.event.clear() + self.event_ready = False + def _wait_for_event(self): - while True: - self.event.wait(0.1) - if self.event.isSet(): - return - if self.closed: - e = self.transport.get_exception() - if e is None: - e = SSHException('Channel closed.') - raise e - return + self.event.wait() + assert self.event.isSet() + if self.event_ready: + return + e = self.transport.get_exception() + if e is None: + e = SSHException('Channel closed.') + raise e def _set_closed(self): # you are holding the lock. @@ -1087,6 +1089,9 @@ class Channel (object): self.in_buffer.close() self.in_stderr_buffer.close() self.out_buffer_cv.notifyAll() + # Notify any waiters that we are closed + self.event.set() + self.status_event.set() if self._pipe is not None: self._pipe.set_forever() diff --git a/paramiko/client.py b/paramiko/client.py index 7870ea9..023b405 100644 --- a/paramiko/client.py +++ b/paramiko/client.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -36,6 +36,8 @@ from paramiko.ssh_exception import SSHException, BadHostKeyException from paramiko.transport import Transport +SSH_PORT = 22 + class MissingHostKeyPolicy (object): """ Interface for defining the policy that L{SSHClient} should use when the @@ -43,10 +45,10 @@ class MissingHostKeyPolicy (object): application's keys. Pre-made classes implement policies for automatically adding the key to the application's L{HostKeys} object (L{AutoAddPolicy}), and for automatically rejecting the key (L{RejectPolicy}). - + This function may be used to ask the user to verify the key, for example. """ - + def missing_host_key(self, client, hostname, key): """ Called when an L{SSHClient} receives a server key for a server that @@ -62,7 +64,7 @@ class AutoAddPolicy (MissingHostKeyPolicy): Policy for automatically adding the hostname and new host key to the local L{HostKeys} object, and saving it. This is used by L{SSHClient}. """ - + def missing_host_key(self, client, hostname, key): client._host_keys.add(hostname, key.get_name(), key) if client._host_keys_filename is not None: @@ -76,7 +78,7 @@ class RejectPolicy (MissingHostKeyPolicy): Policy for automatically rejecting the unknown hostname & key. This is used by L{SSHClient}. """ - + def missing_host_key(self, client, hostname, key): client._log(DEBUG, 'Rejecting %s host key for %s: %s' % (key.get_name(), hostname, hexlify(key.get_fingerprint()))) @@ -98,16 +100,16 @@ class SSHClient (object): A high-level representation of a session with an SSH server. This class wraps L{Transport}, L{Channel}, and L{SFTPClient} to take care of most aspects of authenticating and opening channels. A typical use case is:: - + client = SSHClient() client.load_system_host_keys() client.connect('ssh.example.com') stdin, stdout, stderr = client.exec_command('ls -l') - + You may pass in explicit overrides for authentication and server host key checking. The default mechanism is to try to use local key files or an SSH agent (if one is running). - + @since: 1.6 """ @@ -121,16 +123,16 @@ class SSHClient (object): self._log_channel = None self._policy = RejectPolicy() self._transport = None - + def load_system_host_keys(self, filename=None): """ Load host keys from a system (read-only) file. Host keys read with this method will not be saved back by L{save_host_keys}. - + This method can be called multiple times. Each new set of host keys will be merged with the existing set (new replacing old if there are conflicts). - + If C{filename} is left as C{None}, an attempt will be made to read keys from the user's local "known hosts" file, as used by OpenSSH, and no exception will be raised if the file can't be read. This is @@ -138,7 +140,7 @@ class SSHClient (object): @param filename: the filename to read, or C{None} @type filename: str - + @raise IOError: if a filename was provided and the file could not be read """ @@ -151,7 +153,7 @@ class SSHClient (object): pass return self._system_host_keys.load(filename) - + def load_host_keys(self, filename): """ Load host keys from a local host-key file. Host keys read with this @@ -159,11 +161,11 @@ class SSHClient (object): but will be saved back by L{save_host_keys} (so they can be modified). The missing host key policy L{AutoAddPolicy} adds keys to this set and saves them, when connecting to a previously-unknown server. - + This method can be called multiple times. Each new set of host keys will be merged with the existing set (new replacing old if there are conflicts). When automatically saving, the last hostname is used. - + @param filename: the filename to read @type filename: str @@ -171,16 +173,16 @@ class SSHClient (object): """ self._host_keys_filename = filename self._host_keys.load(filename) - + def save_host_keys(self, filename): """ Save the host keys back to a file. Only the host keys loaded with L{load_host_keys} (plus any added directly) will be saved -- not any host keys loaded with L{load_system_host_keys}. - + @param filename: the filename to save to @type filename: str - + @raise IOError: if the file could not be written """ f = open(filename, 'w') @@ -189,17 +191,17 @@ class SSHClient (object): for keytype, key in keys.iteritems(): f.write('%s %s %s\n' % (hostname, keytype, key.get_base64())) f.close() - + def get_host_keys(self): """ Get the local L{HostKeys} object. This can be used to examine the local host keys or change them. - + @return: the local host keys @rtype: L{HostKeys} """ return self._host_keys - + def set_log_channel(self, name): """ Set the channel for logging. The default is C{"paramiko.transport"} @@ -209,21 +211,21 @@ class SSHClient (object): @type name: str """ self._log_channel = name - + def set_missing_host_key_policy(self, policy): """ Set the policy to use when connecting to a server that doesn't have a host key in either the system or local L{HostKeys} objects. The default policy is to reject all unknown servers (using L{RejectPolicy}). You may substitute L{AutoAddPolicy} or write your own policy class. - + @param policy: the policy to use when receiving a host key from a previously-unknown server @type policy: L{MissingHostKeyPolicy} """ self._policy = policy - def connect(self, hostname, port=22, username=None, password=None, pkey=None, + def connect(self, hostname, port=SSH_PORT, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True): """ Connect to an SSH server and authenticate to it. The server's host key @@ -232,14 +234,14 @@ class SSHClient (object): is not found in either set of host keys, the missing host key policy is used (see L{set_missing_host_key_policy}). The default policy is to reject the key and raise an L{SSHException}. - + Authentication is attempted in the following order of priority: - + - The C{pkey} or C{key_filename} passed in (if any) - Any key we can find through an SSH agent - Any "id_rsa" or "id_dsa" key discoverable in C{~/.ssh/} - Plain username/password auth, if a password was given - + If a private key requires a password to unlock it, and a password is passed in, that password will be used to attempt to unlock the key. @@ -273,39 +275,49 @@ class SSHClient (object): establishing an SSH session @raise socket.error: if a socket error occurred while connecting """ - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM): + if socktype == socket.SOCK_STREAM: + af = family + addr = sockaddr + break + else: + raise SSHException('No suitable address family for %s' % hostname) + sock = socket.socket(af, socket.SOCK_STREAM) if timeout is not None: try: sock.settimeout(timeout) except: pass - - sock.connect((hostname, port)) + sock.connect(addr) t = self._transport = Transport(sock) if self._log_channel is not None: t.set_log_channel(self._log_channel) t.start_client() ResourceManager.register(self, t) - + server_key = t.get_remote_server_key() keytype = server_key.get_name() - - our_server_key = self._system_host_keys.get(hostname, {}).get(keytype, None) + + if port == SSH_PORT: + server_hostkey_name = hostname + else: + server_hostkey_name = "[%s]:%d" % (hostname, port) + our_server_key = self._system_host_keys.get(server_hostkey_name, {}).get(keytype, None) if our_server_key is None: - our_server_key = self._host_keys.get(hostname, {}).get(keytype, None) + our_server_key = self._host_keys.get(server_hostkey_name, {}).get(keytype, None) if our_server_key is None: # will raise exception if the key is rejected; let that fall out - self._policy.missing_host_key(self, hostname, server_key) + self._policy.missing_host_key(self, server_hostkey_name, server_key) # if the callback returns, assume the key is ok our_server_key = server_key - + if server_key != our_server_key: raise BadHostKeyException(hostname, server_key, our_server_key) if username is None: username = getpass.getuser() - + if key_filename is None: key_filenames = [] elif isinstance(key_filename, (str, unicode)): @@ -313,7 +325,7 @@ class SSHClient (object): else: key_filenames = key_filename self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys) - + def close(self): """ Close this SSHClient and its underlying L{Transport}. @@ -329,7 +341,7 @@ class SSHClient (object): the requested command is executed. The command's input and output streams are returned as python C{file}-like objects representing stdin, stdout, and stderr. - + @param command: the command to execute @type command: str @param bufsize: interpreted the same way as by the built-in C{file()} function in python @@ -351,7 +363,7 @@ class SSHClient (object): Start an interactive shell session on the SSH server. A new L{Channel} is opened and connected to a pseudo-terminal using the requested terminal type and size. - + @param term: the terminal type to emulate (for example, C{"vt100"}) @type term: str @param width: the width (in characters) of the terminal window @@ -360,47 +372,47 @@ class SSHClient (object): @type height: int @return: a new channel connected to the remote shell @rtype: L{Channel} - + @raise SSHException: if the server fails to invoke a shell """ chan = self._transport.open_session() chan.get_pty(term, width, height) chan.invoke_shell() return chan - + def open_sftp(self): """ Open an SFTP session on the SSH server. - + @return: a new SFTP session object @rtype: L{SFTPClient} """ return self._transport.open_sftp_client() - + def get_transport(self): """ Return the underlying L{Transport} object for this SSH connection. This can be used to perform lower-level tasks, like opening specific kinds of channels. - + @return: the Transport for this connection @rtype: L{Transport} """ return self._transport - + def _auth(self, username, password, pkey, key_filenames, allow_agent, look_for_keys): """ Try, in order: - + - The key passed in, if one was passed in. - Any key we can find through an SSH agent (if allowed). - Any "id_rsa" or "id_dsa" key discoverable in ~/.ssh/ (if allowed). - Plain username/password auth, if a password was given. - + (The password might be needed to unlock a private key.) """ saved_exception = None - + if pkey is not None: try: self._log(DEBUG, 'Trying SSH key %s' % hexlify(pkey.get_fingerprint())) @@ -418,7 +430,7 @@ class SSHClient (object): return except SSHException, e: saved_exception = e - + if allow_agent: for key in Agent().get_keys(): try: @@ -442,7 +454,7 @@ class SSHClient (object): keyfiles.append((RSAKey, rsa_key)) if os.path.isfile(dsa_key): keyfiles.append((DSSKey, dsa_key)) - + if not look_for_keys: keyfiles = [] @@ -456,7 +468,7 @@ class SSHClient (object): saved_exception = e except IOError, e: saved_exception = e - + if password is not None: try: self._transport.auth_password(username, password) diff --git a/paramiko/common.py b/paramiko/common.py index f4a4d81..7a37463 100644 --- a/paramiko/common.py +++ b/paramiko/common.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/compress.py b/paramiko/compress.py index 08fffb1..40b430f 100644 --- a/paramiko/compress.py +++ b/paramiko/compress.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/config.py b/paramiko/config.py index 1e3d680..2a2cbff 100644 --- a/paramiko/config.py +++ b/paramiko/config.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -26,28 +26,28 @@ import fnmatch class SSHConfig (object): """ Representation of config information as stored in the format used by - OpenSSH. Queries can be made via L{lookup}. The format is described in - OpenSSH's C{ssh_config} man page. This class is provided primarily as a - convenience to posix users (since the OpenSSH format is a de-facto + OpenSSH. Queries can be made via L{lookup}. The format is described in + OpenSSH's C{ssh_config} man page. This class is provided primarily as a + convenience to posix users (since the OpenSSH format is a de-facto standard on posix) but should work fine on Windows too. - + @since: 1.6 """ - + def __init__(self): """ Create a new OpenSSH config object. """ self._config = [ { 'host': '*' } ] - + def parse(self, file_obj): """ Read an OpenSSH config from the given file object. - + @param file_obj: a file-like object to read the config file from @type file_obj: file """ - config = self._config[0] + configs = [self._config[0]] for line in file_obj: line = line.rstrip('\n').lstrip() if (line == '') or (line[0] == '#'): @@ -66,15 +66,20 @@ class SSHConfig (object): value = line[i:].lstrip() if key == 'host': - # do we have a pre-existing host config to append to? - matches = [c for c in self._config if c['host'] == value] - if len(matches) > 0: - config = matches[0] - else: - config = { 'host': value } - self._config.append(config) + del configs[:] + # the value may be multiple hosts, space-delimited + for host in value.split(): + # do we have a pre-existing host config to append to? + matches = [c for c in self._config if c['host'] == host] + if len(matches) > 0: + configs.append(matches[0]) + else: + config = { 'host': host } + self._config.append(config) + configs.append(config) else: - config[key] = value + for config in configs: + config[key] = value def lookup(self, hostname): """ @@ -83,13 +88,13 @@ class SSHConfig (object): The host-matching rules of OpenSSH's C{ssh_config} man page are used, which means that all configuration options from matching host specifications are merged, with more specific hostmasks taking - precedence. In other words, if C{"Port"} is set under C{"Host *"} + precedence. In other words, if C{"Port"} is set under C{"Host *"} and also C{"Host *.example.com"}, and the lookup is for C{"ssh.example.com"}, then the port entry for C{"Host *.example.com"} will win out. The keys in the returned dict are all normalized to lowercase (look for - C{"port"}, not C{"Port"}. No other processing is done to the keys or + C{"port"}, not C{"Port"}. No other processing is done to the keys or values. @param hostname: the hostname to lookup diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py index 9f381d2..eecfa69 100644 --- a/paramiko/dsskey.py +++ b/paramiko/dsskey.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/file.py b/paramiko/file.py index 7db4401..d4aec8e 100644 --- a/paramiko/file.py +++ b/paramiko/file.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/hostkeys.py b/paramiko/hostkeys.py index 0c0ac8c..9ceef43 100644 --- a/paramiko/hostkeys.py +++ b/paramiko/hostkeys.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -33,7 +33,7 @@ class HostKeyEntry: """ Representation of a line in an OpenSSH-style "known hosts" file. """ - + def __init__(self, hostnames=None, key=None): self.valid = (hostnames is not None) and (key is not None) self.hostnames = hostnames @@ -53,9 +53,10 @@ class HostKeyEntry: @type line: str """ fields = line.split(' ') - if len(fields) != 3: + if len(fields) < 3: # Bad number of fields return None + fields = fields[:3] names, keytype, key = fields names = names.split(',') @@ -82,7 +83,7 @@ class HostKeyEntry: return '%s %s %s\n' % (','.join(self.hostnames), self.key.get_name(), self.key.get_base64()) return None - + def __repr__(self): return '<HostKeyEntry %r: %r>' % (self.hostnames, self.key) @@ -92,18 +93,18 @@ class HostKeys (UserDict.DictMixin): Representation of an openssh-style "known hosts" file. Host keys can be read from one or more files, and then individual hosts can be looked up to verify server keys during SSH negotiation. - + A HostKeys object can be treated like a dict; any dict lookup is equivalent to calling L{lookup}. - + @since: 1.5.3 """ - + def __init__(self, filename=None): """ Create a new HostKeys object, optionally loading keys from an openssh style host-key file. - + @param filename: filename to load host keys from, or C{None} @type filename: str """ @@ -111,12 +112,12 @@ class HostKeys (UserDict.DictMixin): self._entries = [] if filename is not None: self.load(filename) - + def add(self, hostname, keytype, key): """ Add a host key entry to the table. Any existing entry for a C{(hostname, keytype)} pair will be replaced. - + @param hostname: the hostname (or IP) to add @type hostname: str @param keytype: key type (C{"ssh-rsa"} or C{"ssh-dss"}) @@ -129,21 +130,21 @@ class HostKeys (UserDict.DictMixin): e.key = key return self._entries.append(HostKeyEntry([hostname], key)) - + def load(self, filename): """ Read a file of known SSH host keys, in the format used by openssh. This type of file unfortunately doesn't exist on Windows, but on posix, it will usually be stored in C{os.path.expanduser("~/.ssh/known_hosts")}. - + If this method is called multiple times, the host keys are merged, not cleared. So multiple calls to C{load} will just call L{add}, replacing any existing entries and adding new ones. - + @param filename: name of the file to read host keys from @type filename: str - + @raise IOError: if there was an error reading the file """ f = open(filename, 'r') @@ -155,19 +156,19 @@ class HostKeys (UserDict.DictMixin): if e is not None: self._entries.append(e) f.close() - + def save(self, filename): """ Save host keys into a file, in the format used by openssh. The order of keys in the file will be preserved when possible (if these keys were loaded from a file originally). The single exception is that combined lines will be split into individual key lines, which is arguably a bug. - + @param filename: name of the file to write @type filename: str - + @raise IOError: if there was an error writing the file - + @since: 1.6.1 """ f = open(filename, 'w') @@ -182,7 +183,7 @@ class HostKeys (UserDict.DictMixin): Find a hostkey entry for a given hostname or IP. If no entry is found, C{None} is returned. Otherwise a dictionary of keytype to key is returned. The keytype will be either C{"ssh-rsa"} or C{"ssh-dss"}. - + @param hostname: the hostname (or IP) to lookup @type hostname: str @return: keys associated with this host (or C{None}) @@ -193,13 +194,13 @@ class HostKeys (UserDict.DictMixin): self._hostname = hostname self._entries = entries self._hostkeys = hostkeys - + def __getitem__(self, key): for e in self._entries: if e.key.get_name() == key: return e.key raise KeyError(key) - + def __setitem__(self, key, val): for e in self._entries: if e.key is None: @@ -213,7 +214,7 @@ class HostKeys (UserDict.DictMixin): e = HostKeyEntry([hostname], val) self._entries.append(e) self._hostkeys._entries.append(e) - + def keys(self): return [e.key.get_name() for e in self._entries if e.key is not None] @@ -225,12 +226,12 @@ class HostKeys (UserDict.DictMixin): if len(entries) == 0: return None return SubDict(hostname, entries, self) - + def check(self, hostname, key): """ Return True if the given key is associated with the given hostname in this dictionary. - + @param hostname: hostname (or IP) of the SSH server @type hostname: str @param key: the key to check @@ -252,13 +253,13 @@ class HostKeys (UserDict.DictMixin): Remove all host keys from the dictionary. """ self._entries = [] - + def __getitem__(self, key): ret = self.lookup(key) if ret is None: raise KeyError(key) return ret - + def __setitem__(self, hostname, entry): # don't use this please. if len(entry) == 0: @@ -273,7 +274,7 @@ class HostKeys (UserDict.DictMixin): found = True if not found: self._entries.append(HostKeyEntry([hostname], entry[key_type])) - + def keys(self): # python 2.4 sets would be nice here. ret = [] @@ -293,7 +294,7 @@ class HostKeys (UserDict.DictMixin): """ Return a "hashed" form of the hostname, as used by openssh when storing hashed hostnames in the known_hosts file. - + @param hostname: the hostname to hash @type hostname: str @param salt: optional salt to use when hashing (must be 20 bytes long) diff --git a/paramiko/kex_gex.py b/paramiko/kex_gex.py index 63a0c99..c6be638 100644 --- a/paramiko/kex_gex.py +++ b/paramiko/kex_gex.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/kex_group1.py b/paramiko/kex_group1.py index 843a6d8..4228dd9 100644 --- a/paramiko/kex_group1.py +++ b/paramiko/kex_group1.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/logging22.py b/paramiko/logging22.py index 9bf7656..ed1d891 100644 --- a/paramiko/logging22.py +++ b/paramiko/logging22.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/message.py b/paramiko/message.py index 1a5151c..366c43c 100644 --- a/paramiko/message.py +++ b/paramiko/message.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -111,7 +111,7 @@ class Message (object): """ b = self.packet.read(n) if len(b) < n: - return '\x00'*n + return b + '\x00' * (n - len(b)) return b def get_byte(self): diff --git a/paramiko/packet.py b/paramiko/packet.py index 4bde2f7..9072fbe 100644 --- a/paramiko/packet.py +++ b/paramiko/packet.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -268,11 +268,11 @@ class Packetizer (object): Read a line from the socket. We assume no data is pending after the line, so it's okay to attempt large reads. """ - buf = '' + buf = self.__remainder while not '\n' in buf: buf += self._read_timeout(timeout) n = buf.index('\n') - self.__remainder += buf[n+1:] + self.__remainder = buf[n+1:] buf = buf[:n] if (len(buf) > 0) and (buf[-1] == '\r'): buf = buf[:-1] diff --git a/paramiko/pipe.py b/paramiko/pipe.py index 1cfed2d..37191ef 100644 --- a/paramiko/pipe.py +++ b/paramiko/pipe.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/pkey.py b/paramiko/pkey.py index 4e8b26b..bb8c83c 100644 --- a/paramiko/pkey.py +++ b/paramiko/pkey.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/primes.py b/paramiko/primes.py index 7b35736..1cf7905 100644 --- a/paramiko/primes.py +++ b/paramiko/primes.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/resource.py b/paramiko/resource.py index a089754..0d5c82f 100644 --- a/paramiko/resource.py +++ b/paramiko/resource.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/rng_posix.py b/paramiko/rng_posix.py index 1e6d72c..c4c9691 100644 --- a/paramiko/rng_posix.py +++ b/paramiko/rng_posix.py @@ -43,7 +43,7 @@ def open_rng_device(device_path=None): f = None g = None - + if device_path is None: device_path = "/dev/urandom" @@ -54,7 +54,7 @@ def open_rng_device(device_path=None): f = open(device_path, "rb", 0) except EnvironmentError: raise error("Unable to open /dev/urandom") - + # Open a second file descriptor for sanity checking later. try: g = open(device_path, "rb", 0) @@ -65,17 +65,17 @@ def open_rng_device(device_path=None): st = os.fstat(f.fileno()) # f if stat.S_ISREG(st.st_mode) or not stat.S_ISCHR(st.st_mode): raise error("/dev/urandom is not a character special device") - + st = os.fstat(g.fileno()) # g if stat.S_ISREG(st.st_mode) or not stat.S_ISCHR(st.st_mode): raise error("/dev/urandom is not a character special device") - + # Check that /dev/urandom always returns the number of bytes requested x = f.read(20) y = g.read(20) if len(x) != 20 or len(y) != 20: raise error("Error reading from /dev/urandom: input truncated") - + # Check that different reads return different data if x == y: raise error("/dev/urandom is broken; returning identical data: %r == %r" % (x, y)) diff --git a/paramiko/rsakey.py b/paramiko/rsakey.py index d72d175..a665279 100644 --- a/paramiko/rsakey.py +++ b/paramiko/rsakey.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/server.py b/paramiko/server.py index bcaa4be..6424b63 100644 --- a/paramiko/server.py +++ b/paramiko/server.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp.py b/paramiko/sftp.py index 2296d85..a0b08e0 100644 --- a/paramiko/sftp.py +++ b/paramiko/sftp.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp_attr.py b/paramiko/sftp_attr.py index 9c92862..26290be 100644 --- a/paramiko/sftp_attr.py +++ b/paramiko/sftp_attr.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2006 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2006 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp_client.py b/paramiko/sftp_client.py index b3d2d56..1f11075 100644 --- a/paramiko/sftp_client.py +++ b/paramiko/sftp_client.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -23,6 +23,7 @@ Client-mode SFTP support. from binascii import hexlify import errno import os +import stat import threading import time import weakref @@ -104,27 +105,31 @@ class SFTPClient (BaseSFTP): chan.invoke_subsystem('sftp') return cls(chan) from_transport = classmethod(from_transport) - + def _log(self, level, msg, *args): - super(SFTPClient, self)._log(level, "[chan %s] " + msg, *([ self.sock.get_name() ] + list(args))) + if isinstance(msg, list): + for m in msg: + super(SFTPClient, self)._log(level, "[chan %s] " + m, *([ self.sock.get_name() ] + list(args))) + else: + super(SFTPClient, self)._log(level, "[chan %s] " + msg, *([ self.sock.get_name() ] + list(args))) def close(self): """ Close the SFTP session and its underlying channel. - + @since: 1.4 """ self._log(INFO, 'sftp session closed.') self.sock.close() - + def get_channel(self): """ Return the underlying L{Channel} object for this SFTP session. This might be useful for doing things like setting a timeout on the channel. - + @return: the SSH channel @rtype: L{Channel} - + @since: 1.7.1 """ return self.sock @@ -143,14 +148,14 @@ class SFTPClient (BaseSFTP): @rtype: list of str """ return [f.filename for f in self.listdir_attr(path)] - + def listdir_attr(self, path='.'): """ Return a list containing L{SFTPAttributes} objects corresponding to files in the given C{path}. The list is in arbitrary order. It does not include the special entries C{'.'} and C{'..'} even if they are present in the folder. - + The returned L{SFTPAttributes} objects will each have an additional field: C{longname}, which may contain a formatted string of the file's attributes, in unix format. The content of this string will probably @@ -160,7 +165,7 @@ class SFTPClient (BaseSFTP): @type path: str @return: list of attributes @rtype: list of L{SFTPAttributes} - + @since: 1.2 """ path = self._adjust_cwd(path) @@ -201,7 +206,7 @@ class SFTPClient (BaseSFTP): existing file), C{'a+'} for reading/appending. The python C{'b'} flag is ignored, since SSH treats all files as binary. The C{'U'} flag is supported in a compatible way. - + Since 1.5.2, an C{'x'} flag indicates that the operation should only succeed if the file was created and did not previously exist. This has no direct mapping to python's file flags, but is commonly known as the @@ -271,7 +276,7 @@ class SFTPClient (BaseSFTP): @type oldpath: str @param newpath: new name for the file or folder @type newpath: str - + @raise IOError: if C{newpath} is a folder, or something else goes wrong """ @@ -384,7 +389,7 @@ class SFTPClient (BaseSFTP): attr = SFTPAttributes() attr.st_mode = mode self._request(CMD_SETSTAT, path, attr) - + def chown(self, path, uid, gid): """ Change the owner (C{uid}) and group (C{gid}) of a file. As with @@ -433,7 +438,7 @@ class SFTPClient (BaseSFTP): Change the size of the file specified by C{path}. This usually extends or shrinks the size of the file, just like the C{truncate()} method on python file objects. - + @param path: path of the file to modify @type path: str @param size: the new size of the file @@ -479,7 +484,7 @@ class SFTPClient (BaseSFTP): @type path: str @return: normalized form of the given path @rtype: str - + @raise IOError: if the path can't be resolved on the server """ path = self._adjust_cwd(path) @@ -491,45 +496,51 @@ class SFTPClient (BaseSFTP): if count != 1: raise SFTPError('Realpath returned %d results' % count) return _to_unicode(msg.get_string()) - + def chdir(self, path): """ Change the "current directory" of this SFTP session. Since SFTP doesn't really have the concept of a current working directory, this is emulated by paramiko. Once you use this method to set a working directory, all operations on this SFTPClient object will be relative - to that path. - + to that path. You can pass in C{None} to stop using a current working + directory. + @param path: new current working directory @type path: str - + @raise IOError: if the requested path doesn't exist on the server - + @since: 1.4 """ - self._cwd = self.normalize(path) - + if path is None: + self._cwd = None + return + if not stat.S_ISDIR(self.stat(path).st_mode): + raise SFTPError(errno.ENOTDIR, "%s: %s" % (os.strerror(errno.ENOTDIR), path)) + self._cwd = self.normalize(path).encode('utf-8') + def getcwd(self): """ Return the "current working directory" for this SFTP session, as emulated by paramiko. If no directory has been set with L{chdir}, this method will return C{None}. - + @return: the current working directory on the server, or C{None} @rtype: str - + @since: 1.4 """ return self._cwd - + def put(self, localpath, remotepath, callback=None): """ Copy a local file (C{localpath}) to the SFTP server as C{remotepath}. Any exception raised by operations will be passed through. This method is primarily provided as a convenience. - + The SFTP operations use pipelining for speed. - + @param localpath: the local file to copy @type localpath: str @param remotepath: the destination path on the SFTP server @@ -541,35 +552,39 @@ class SFTPClient (BaseSFTP): @return: an object containing attributes about the given file (since 1.7.4) @rtype: SFTPAttributes - + @since: 1.4 """ file_size = os.stat(localpath).st_size fl = file(localpath, 'rb') - fr = self.file(remotepath, 'wb') - fr.set_pipelined(True) - size = 0 - while True: - data = fl.read(32768) - if len(data) == 0: - break - fr.write(data) - size += len(data) - if callback is not None: - callback(size, file_size) - fl.close() - fr.close() + try: + fr = self.file(remotepath, 'wb') + fr.set_pipelined(True) + size = 0 + try: + while True: + data = fl.read(32768) + if len(data) == 0: + break + fr.write(data) + size += len(data) + if callback is not None: + callback(size, file_size) + finally: + fr.close() + finally: + fl.close() s = self.stat(remotepath) if s.st_size != size: raise IOError('size mismatch in put! %d != %d' % (s.st_size, size)) return s - + def get(self, remotepath, localpath, callback=None): """ Copy a remote file (C{remotepath}) from the SFTP server to the local host as C{localpath}. Any exception raised by operations will be passed through. This method is primarily provided as a convenience. - + @param remotepath: the remote file to copy @type remotepath: str @param localpath: the destination path on the local host @@ -578,24 +593,28 @@ class SFTPClient (BaseSFTP): transferred so far and the total bytes to be transferred (since 1.7.4) @type callback: function(int, int) - + @since: 1.4 """ fr = self.file(remotepath, 'rb') file_size = self.stat(remotepath).st_size fr.prefetch() - fl = file(localpath, 'wb') - size = 0 - while True: - data = fr.read(32768) - if len(data) == 0: - break - fl.write(data) - size += len(data) - if callback is not None: - callback(size, file_size) - fl.close() - fr.close() + try: + fl = file(localpath, 'wb') + try: + size = 0 + while True: + data = fr.read(32768) + if len(data) == 0: + break + fl.write(data) + size += len(data) + if callback is not None: + callback(size, file_size) + finally: + fl.close() + finally: + fr.close() s = os.stat(localpath) if s.st_size != size: raise IOError('size mismatch in get! %d != %d' % (s.st_size, size)) @@ -607,7 +626,7 @@ class SFTPClient (BaseSFTP): def _request(self, t, *arg): num = self._async_request(type(None), t, *arg) return self._read_response(num) - + def _async_request(self, fileobj, t, *arg): # this method may be called from other threads (prefetch) self._lock.acquire() @@ -684,7 +703,7 @@ class SFTPClient (BaseSFTP): raise IOError(errno.EACCES, text) else: raise IOError(text) - + def _adjust_cwd(self, path): """ Return an adjusted path if we're emulating a "current working diff --git a/paramiko/sftp_file.py b/paramiko/sftp_file.py index cfa7db1..8c5c7ac 100644 --- a/paramiko/sftp_file.py +++ b/paramiko/sftp_file.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp_handle.py b/paramiko/sftp_handle.py index e976f43..a6cd44a 100644 --- a/paramiko/sftp_handle.py +++ b/paramiko/sftp_handle.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp_server.py b/paramiko/sftp_server.py index 099ac12..7cc6c0c 100644 --- a/paramiko/sftp_server.py +++ b/paramiko/sftp_server.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/sftp_si.py b/paramiko/sftp_si.py index 47dd25d..401a4e9 100644 --- a/paramiko/sftp_si.py +++ b/paramiko/sftp_si.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/ssh_exception.py b/paramiko/ssh_exception.py index e3120bb..68924d0 100644 --- a/paramiko/ssh_exception.py +++ b/paramiko/ssh_exception.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/paramiko/transport.py b/paramiko/transport.py index a18e05b..50e78e7 100644 --- a/paramiko/transport.py +++ b/paramiko/transport.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -50,8 +50,12 @@ from paramiko.ssh_exception import SSHException, BadAuthenticationType, ChannelE # i believe this on the standards track. # PyCrypt compiled for Win32 can be downloaded from the HashTar homepage: # http://nitace.bsd.uchicago.edu:8080/hashtar -from Crypto.Cipher import Blowfish, AES, DES3 +from Crypto.Cipher import Blowfish, AES, DES3, ARC4 from Crypto.Hash import SHA, MD5 +try: + from Crypto.Util import Counter +except ImportError: + from paramiko.util import Counter # for thread cleanup @@ -99,7 +103,7 @@ class SecurityOptions (object): def _get_kex(self): return self._transport._preferred_kex - + def _get_compression(self): return self._transport._preferred_compression @@ -125,7 +129,7 @@ class SecurityOptions (object): def _set_kex(self, x): self._set('_preferred_kex', '_kex_info', x) - + def _set_compression(self, x): self._set('_preferred_compression', '_compression_info', x) @@ -152,14 +156,14 @@ class ChannelMap (object): self._map[chanid] = chan finally: self._lock.release() - + def get(self, chanid): self._lock.acquire() try: return self._map.get(chanid, None) finally: self._lock.release() - + def delete(self, chanid): self._lock.acquire() try: @@ -169,14 +173,14 @@ class ChannelMap (object): pass finally: self._lock.release() - + def values(self): self._lock.acquire() try: return self._map.values() finally: self._lock.release() - + def __len__(self): self._lock.acquire() try: @@ -194,19 +198,24 @@ class Transport (threading.Thread): """ _PROTO_ID = '2.0' - _CLIENT_ID = 'paramiko_1.7.4' + _CLIENT_ID = 'paramiko_1.7.6' - _preferred_ciphers = ( 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc' ) + _preferred_ciphers = ( 'aes128-ctr', 'aes256-ctr', 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc', + 'arcfour128', 'arcfour256' ) _preferred_macs = ( 'hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96' ) _preferred_keys = ( 'ssh-rsa', 'ssh-dss' ) _preferred_kex = ( 'diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1' ) _preferred_compression = ( 'none', ) - + _cipher_info = { + 'aes128-ctr': { 'class': AES, 'mode': AES.MODE_CTR, 'block-size': 16, 'key-size': 16 }, + 'aes256-ctr': { 'class': AES, 'mode': AES.MODE_CTR, 'block-size': 16, 'key-size': 32 }, 'blowfish-cbc': { 'class': Blowfish, 'mode': Blowfish.MODE_CBC, 'block-size': 8, 'key-size': 16 }, 'aes128-cbc': { 'class': AES, 'mode': AES.MODE_CBC, 'block-size': 16, 'key-size': 16 }, 'aes256-cbc': { 'class': AES, 'mode': AES.MODE_CBC, 'block-size': 16, 'key-size': 32 }, '3des-cbc': { 'class': DES3, 'mode': DES3.MODE_CBC, 'block-size': 8, 'key-size': 24 }, + 'arcfour128': { 'class': ARC4, 'mode': None, 'block-size': 8, 'key-size': 16 }, + 'arcfour256': { 'class': ARC4, 'mode': None, 'block-size': 8, 'key-size': 32 }, } _mac_info = { @@ -225,7 +234,7 @@ class Transport (threading.Thread): 'diffie-hellman-group1-sha1': KexGroup1, 'diffie-hellman-group-exchange-sha1': KexGex, } - + _compression_info = { # zlib@openssh.com is just zlib, but only turned on after a successful # authentication. openssh servers may only offer this type because @@ -266,7 +275,7 @@ class Transport (threading.Thread): @param sock: a socket or socket-like object to create the session over. @type sock: socket """ - if type(sock) is str: + if isinstance(sock, (str, unicode)): # convert "host:port" into (host, port) hl = sock.split(':', 1) if len(hl) == 1: @@ -276,10 +285,18 @@ class Transport (threading.Thread): if type(sock) is tuple: # connect to the given (host, port) hostname, port = sock - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM): + if socktype == socket.SOCK_STREAM: + af = family + addr = sockaddr + break + else: + raise SSHException('No suitable address family for %s' % hostname) + sock = socket.socket(af, socket.SOCK_STREAM) sock.connect((hostname, port)) # okay, normal socket-ish flow here... threading.Thread.__init__(self) + self.setDaemon(True) self.randpool = randpool self.sock = sock # Python < 2.3 doesn't have the settimeout method - RogerB @@ -302,7 +319,7 @@ class Transport (threading.Thread): self.session_id = None self.host_key_type = None self.host_key = None - + # state used during negotiation self.kex_engine = None self.H = None @@ -328,6 +345,7 @@ class Transport (threading.Thread): self.saved_exception = None self.clear_to_send = threading.Event() self.clear_to_send_lock = threading.Lock() + self.clear_to_send_timeout = 30.0 self.log_name = 'paramiko.transport' self.logger = util.get_logger(self.log_name) self.packetizer.set_log(self.logger) @@ -365,7 +383,7 @@ class Transport (threading.Thread): out += ' (connecting)' out += '>' return out - + def atfork(self): """ Terminate this Transport without closing the session. On posix @@ -373,7 +391,7 @@ class Transport (threading.Thread): and child will share the underlying socket, but only one process can use the connection (without corrupting the session). Use this method to clean up a Transport object without disrupting the other process. - + @since: 1.5.3 """ self.sock.close() @@ -396,11 +414,11 @@ class Transport (threading.Thread): Negotiate a new SSH2 session as a client. This is the first step after creating a new L{Transport}. A separate thread is created for protocol negotiation. - + If an event is passed in, this method returns immediately. When negotiation is done (successful or not), the given C{Event} will be triggered. On failure, L{is_active} will return C{False}. - + (Since 1.4) If C{event} is C{None}, this method will not return until negotation is done. On success, the method returns normally. Otherwise an SSHException is raised. @@ -410,7 +428,7 @@ class Transport (threading.Thread): L{auth_publickey <Transport.auth_publickey>}. @note: L{connect} is a simpler method for connecting as a client. - + @note: After calling this method (or L{start_server} or L{connect}), you should no longer directly read from or write to the original socket object. @@ -447,11 +465,11 @@ class Transport (threading.Thread): Negotiate a new SSH2 session as a server. This is the first step after creating a new L{Transport} and setting up your server host key(s). A separate thread is created for protocol negotiation. - + If an event is passed in, this method returns immediately. When negotiation is done (successful or not), the given C{Event} will be triggered. On failure, L{is_active} will return C{False}. - + (Since 1.4) If C{event} is C{None}, this method will not return until negotation is done. On success, the method returns normally. Otherwise an SSHException is raised. @@ -514,7 +532,7 @@ class Transport (threading.Thread): we are. Because this is used for signing, the key must contain private key info, not just the public half. Only one key of each type (RSA or DSS) is kept. - + @param key: the host key to add, usually an L{RSAKey <rsakey.RSAKey>} or L{DSSKey <dsskey.DSSKey>}. @type key: L{PKey <pkey.PKey>} @@ -564,7 +582,7 @@ class Transport (threading.Thread): @return: True if a moduli file was successfully loaded; False otherwise. @rtype: bool - + @note: This has no effect when used in client mode. """ Transport._modulus_pack = ModulusPack(randpool) @@ -605,7 +623,7 @@ class Transport (threading.Thread): C{str(key)} for the key string. @raise SSHException: if no session is currently active. - + @return: public key of the remote server @rtype: L{PKey <pkey.PKey>} """ @@ -630,7 +648,7 @@ class Transport (threading.Thread): @return: a new L{Channel} @rtype: L{Channel} - + @raise SSHException: if the request is rejected or the session ends prematurely """ @@ -646,25 +664,25 @@ class Transport (threading.Thread): @type src_addr: (str, int) @return: a new L{Channel} @rtype: L{Channel} - + @raise SSHException: if the request is rejected or the session ends prematurely """ return self.open_channel('x11', src_addr=src_addr) - + def open_forwarded_tcpip_channel(self, (src_addr, src_port), (dest_addr, dest_port)): """ Request a new channel back to the client, of type C{"forwarded-tcpip"}. This is used after a client has requested port forwarding, for sending incoming connections back to the client. - + @param src_addr: originator's address @param src_port: originator's port @param dest_addr: local (server) connected address @param dest_port: local (server) connected port """ return self.open_channel('forwarded-tcpip', (dest_addr, dest_port), (src_addr, src_port)) - + def open_channel(self, kind, dest_addr=None, src_addr=None): """ Request a new channel to the server. L{Channel}s are socket-like @@ -739,19 +757,19 @@ class Transport (threading.Thread): """ Ask the server to forward TCP connections from a listening port on the server, across this SSH session. - + If a handler is given, that handler is called from a different thread whenever a forwarded connection arrives. The handler parameters are:: - + handler(channel, (origin_addr, origin_port), (server_addr, server_port)) - + where C{server_addr} and C{server_port} are the address and port that the server was listening on. - + If no handler is set, the default behavior is to send new incoming forwarded connections into the accept queue, to be picked up via L{accept}. - + @param address: the address to bind when forwarding @type address: str @param port: the port to forward, or 0 to ask the server to allocate @@ -761,7 +779,7 @@ class Transport (threading.Thread): @type handler: function(Channel, (str, int), (str, int)) @return: the port # allocated by the server @rtype: int - + @raise SSHException: if the server refused the TCP forward request """ if not self.active: @@ -785,7 +803,7 @@ class Transport (threading.Thread): Ask the server to cancel a previous port-forwarding request. No more connections to the given address & port will be forwarded across this ssh connection. - + @param address: the address to stop forwarding @type address: str @param port: the port to stop forwarding @@ -795,7 +813,7 @@ class Transport (threading.Thread): return self._tcp_handler = None self.global_request('cancel-tcpip-forward', (address, port), wait=True) - + def open_sftp_client(self): """ Create an SFTP client channel from an open transport. On success, @@ -858,7 +876,7 @@ class Transport (threading.Thread): C{interval} seconds without sending any data over the connection, a "keepalive" packet will be sent (and ignored by the remote host). This can be useful to keep connections alive over a NAT, for example. - + @param interval: seconds to wait before sending a keepalive packet (or 0 to disable keepalives). @type interval: int @@ -909,7 +927,7 @@ class Transport (threading.Thread): Return the next channel opened by the client over this transport, in server mode. If no channel is opened before the given timeout, C{None} is returned. - + @param timeout: seconds to wait for a channel, or C{None} to wait forever @type timeout: int @@ -961,7 +979,7 @@ class Transport (threading.Thread): @param pkey: a private key to use for authentication, if you want to use private key authentication; otherwise C{None}. @type pkey: L{PKey<pkey.PKey>} - + @raise SSHException: if the SSH2 negotiation fails, the host key supplied by the server is incorrect, or authentication fails. """ @@ -989,17 +1007,17 @@ class Transport (threading.Thread): self.auth_publickey(username, pkey) return - + def get_exception(self): """ Return any exception that happened during the last server request. This can be used to fetch more specific error information after using calls like L{start_client}. The exception (if any) is cleared after this call. - + @return: an exception, or C{None} if there is no stored exception. @rtype: Exception - + @since: 1.1 """ self.lock.acquire() @@ -1031,7 +1049,7 @@ class Transport (threading.Thread): self.subsystem_table[name] = (handler, larg, kwarg) finally: self.lock.release() - + def is_authenticated(self): """ Return true if this session is active and authenticated. @@ -1042,7 +1060,7 @@ class Transport (threading.Thread): @rtype: bool """ return self.active and (self.auth_handler is not None) and self.auth_handler.is_authenticated() - + def get_username(self): """ Return the username this connection is authenticated for. If the @@ -1062,7 +1080,7 @@ class Transport (threading.Thread): This will almost always fail. It may be useful for determining the list of authentication types supported by the server, by catching the L{BadAuthenticationType} exception raised. - + @param username: the username to authenticate as @type username: string @return: list of auth types permissible for the next stage of @@ -1073,7 +1091,7 @@ class Transport (threading.Thread): by the server for this user @raise SSHException: if the authentication failed due to a network error - + @since: 1.5 """ if (not self.active) or (not self.initial_kex_done): @@ -1087,7 +1105,7 @@ class Transport (threading.Thread): """ Authenticate to the server using a password. The username and password are sent over an encrypted link. - + If an C{event} is passed in, this method will return immediately, and the event will be triggered once authentication succeeds or fails. On success, L{is_authenticated} will return C{True}. On failure, you may @@ -1096,7 +1114,7 @@ class Transport (threading.Thread): Since 1.1, if no event is passed, this method will block until the authentication succeeds or fails. On failure, an exception is raised. Otherwise, the method simply returns. - + Since 1.5, if no event is passed and C{fallback} is C{True} (the default), if the server doesn't support plain password authentication but does support so-called "keyboard-interactive" mode, an attempt @@ -1105,11 +1123,11 @@ class Transport (threading.Thread): made. This is useful for some recent Gentoo and Debian distributions, which turn off plain password authentication in a misguided belief that interactive authentication is "more secure". (It's not.) - + If the server requires multi-step authentication (which is very rare), this method will return a list of auth types permissible for the next step. Otherwise, in the normal case, an empty list is returned. - + @param username: the username to authenticate as @type username: str @param password: the password to authenticate with @@ -1124,7 +1142,7 @@ class Transport (threading.Thread): @return: list of auth types permissible for the next stage of authentication (normally empty) @rtype: list - + @raise BadAuthenticationType: if password authentication isn't allowed by the server for this user (and no event was passed in) @raise AuthenticationException: if the authentication failed (and no @@ -1170,12 +1188,12 @@ class Transport (threading.Thread): """ Authenticate to the server using a private key. The key is used to sign data from the server, so it must include the private part. - + If an C{event} is passed in, this method will return immediately, and the event will be triggered once authentication succeeds or fails. On success, L{is_authenticated} will return C{True}. On failure, you may use L{get_exception} to get more detailed error information. - + Since 1.1, if no event is passed, this method will block until the authentication succeeds or fails. On failure, an exception is raised. Otherwise, the method simply returns. @@ -1194,7 +1212,7 @@ class Transport (threading.Thread): @return: list of auth types permissible for the next stage of authentication (normally empty) @rtype: list - + @raise BadAuthenticationType: if public-key authentication isn't allowed by the server for this user (and no event was passed in) @raise AuthenticationException: if the authentication failed (and no @@ -1214,18 +1232,18 @@ class Transport (threading.Thread): # caller wants to wait for event themselves return [] return self.auth_handler.wait_for_response(my_event) - + def auth_interactive(self, username, handler, submethods=''): """ Authenticate to the server interactively. A handler is used to answer arbitrary questions from the server. On many servers, this is just a dumb wrapper around PAM. - + This method will block until the authentication succeeds or fails, peroidically calling the handler asynchronously to get answers to authentication questions. The handler may be called more than once if the server continues to ask questions. - + The handler is expected to be a callable that will handle calls of the form: C{handler(title, instructions, prompt_list)}. The C{title} is meant to be a dialog-window title, and the C{instructions} are user @@ -1233,13 +1251,13 @@ class Transport (threading.Thread): prompts, each prompt being a tuple of C{(str, bool)}. The string is the prompt and the boolean indicates whether the user text should be echoed. - + A sample call would thus be: C{handler('title', 'instructions', [('Password:', False)])}. - + The handler should return a list or tuple of answers to the server's questions. - + If the server requires multi-step authentication (which is very rare), this method will return a list of auth types permissible for the next step. Otherwise, in the normal case, an empty list is returned. @@ -1253,12 +1271,12 @@ class Transport (threading.Thread): @return: list of auth types permissible for the next stage of authentication (normally empty). @rtype: list - + @raise BadAuthenticationType: if public-key authentication isn't allowed by the server for this user @raise AuthenticationException: if the authentication failed @raise SSHException: if there was a network error - + @since: 1.5 """ if (not self.active) or (not self.initial_kex_done): @@ -1307,43 +1325,43 @@ class Transport (threading.Thread): @type hexdump: bool """ self.packetizer.set_hexdump(hexdump) - + def get_hexdump(self): """ Return C{True} if the transport is currently logging hex dumps of protocol traffic. - + @return: C{True} if hex dumps are being logged @rtype: bool - + @since: 1.4 """ return self.packetizer.get_hexdump() - + def use_compression(self, compress=True): """ Turn on/off compression. This will only have an affect before starting the transport (ie before calling L{connect}, etc). By default, compression is off since it negatively affects interactive sessions. - + @param compress: C{True} to ask the remote client/server to compress traffic; C{False} to refuse compression @type compress: bool - + @since: 1.5.2 """ if compress: self._preferred_compression = ( 'zlib@openssh.com', 'zlib', 'none' ) else: self._preferred_compression = ( 'none', ) - + def getpeername(self): """ Return the address of the remote side of this Transport, if possible. This is effectively a wrapper around C{'getpeername'} on the underlying socket. If the socket-like object has no C{'getpeername'} method, then C{("unknown", 0)} is returned. - + @return: the address if the remote host, if known @rtype: tuple(str, int) """ @@ -1359,7 +1377,7 @@ class Transport (threading.Thread): ### internals... - + def _log(self, level, msg, *args): if issubclass(type(msg), list): for m in msg: @@ -1392,6 +1410,7 @@ class Transport (threading.Thread): send a message, but block if we're in key negotiation. this is used for user-initiated requests. """ + start = time.time() while True: self.clear_to_send.wait(0.1) if not self.active: @@ -1401,6 +1420,8 @@ class Transport (threading.Thread): if self.clear_to_send.isSet(): break self.clear_to_send_lock.release() + if time.time() > start + self.clear_to_send_timeout: + raise SSHException('Key-exchange timed out waiting for key negotiation') try: self._send_message(data) finally: @@ -1422,7 +1443,7 @@ class Transport (threading.Thread): if key is None: raise SSHException('Unknown host key type') if not key.verify_ssh_sig(self.H, Message(sig)): - raise SSHException('Signature verification (%s) failed. Boo. Robey should debug this.' % self.host_key_type) + raise SSHException('Signature verification (%s) failed.' % self.host_key_type) self.host_key = key def _compute_key(self, id, nbytes): @@ -1446,7 +1467,19 @@ class Transport (threading.Thread): def _get_cipher(self, name, key, iv): if name not in self._cipher_info: raise SSHException('Unknown client cipher ' + name) - return self._cipher_info[name]['class'].new(key, self._cipher_info[name]['mode'], iv) + if name in ('arcfour128', 'arcfour256'): + # arcfour cipher + cipher = self._cipher_info[name]['class'].new(key) + # as per RFC 4345, the first 1536 bytes of keystream + # generated by the cipher MUST be discarded + cipher.encrypt(" " * 1536) + return cipher + elif name.endswith("-ctr"): + # CTR modes, we need a counter + counter = Counter.new(nbits=self._cipher_info[name]['block-size'] * 8, initial_value=util.inflate_long(iv, True)) + return self._cipher_info[name]['class'].new(key, self._cipher_info[name]['mode'], iv, counter) + else: + return self._cipher_info[name]['class'].new(key, self._cipher_info[name]['mode'], iv) def _set_x11_handler(self, handler): # only called if a channel has turned on x11 forwarding @@ -1465,13 +1498,13 @@ class Transport (threading.Thread): self.server_accept_cv.notify() finally: self.lock.release() - + def run(self): # (use the exposed "run" method, because if we specify a thread target # of a private method, threading.Thread will keep a reference to it # indefinitely, creating a GC cycle and not letting Transport ever be - # GC'd. it's a bug in Thread.) - + # GC'd. it's a bug in Thread.) + # active=True occurs before the thread is launched, to avoid a race _active_threads.append(self) if self.server_mode: @@ -1587,7 +1620,7 @@ class Transport (threading.Thread): def _check_banner(self): # this is slow, but we only have to do it once - for i in range(5): + for i in range(100): # give them 15 seconds for the first line, then just 2 seconds # each additional line. (some sites have very high latency.) if i == 0: @@ -1896,7 +1929,7 @@ class Transport (threading.Thread): self.global_response = m if self.completion_event is not None: self.completion_event.set() - + def _parse_request_failure(self, m): self._log(DEBUG, 'Global request denied.') self.global_response = None @@ -1985,7 +2018,7 @@ class Transport (threading.Thread): origin_addr = m.get_string() origin_port = m.get_int() reason = self.server_object.check_channel_direct_tcpip_request( - my_chanid, (origin_addr, origin_port), + my_chanid, (origin_addr, origin_port), (dest_addr, dest_port)) else: reason = self.server_object.check_channel_request(kind, my_chanid) @@ -2001,7 +2034,7 @@ class Transport (threading.Thread): msg.add_string('en') self._send_message(msg) return - + chan = Channel(my_chanid) self.lock.acquire() try: diff --git a/paramiko/util.py b/paramiko/util.py index 8abdc0c..0d6a534 100644 --- a/paramiko/util.py +++ b/paramiko/util.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -22,6 +22,7 @@ Useful functions used by the rest of paramiko. from __future__ import generators +import array from binascii import hexlify, unhexlify import sys import struct @@ -135,6 +136,8 @@ def safe_string(s): def bit_length(n): norm = deflate_long(n, 0) hbyte = ord(norm[0]) + if hbyte == 0: + return 1 bitlen = len(norm) * 8 while not (hbyte & 0x80): hbyte <<= 1 @@ -184,10 +187,10 @@ def load_host_keys(filename): return a compound dict of C{hostname -> keytype ->} L{PKey <paramiko.pkey.PKey>}. The hostname may be an IP address or DNS name. The keytype will be either C{"ssh-rsa"} or C{"ssh-dss"}. - + This type of file unfortunately doesn't exist on Windows, but on posix, it will usually be stored in C{os.path.expanduser("~/.ssh/known_hosts")}. - + Since 1.5.3, this is just a wrapper around L{HostKeys}. @param filename: name of the file to read host keys from @@ -268,3 +271,32 @@ def get_logger(name): return l +class Counter (object): + """Stateful counter for CTR mode crypto""" + def __init__(self, nbits, initial_value=1L, overflow=0L): + self.blocksize = nbits / 8 + self.overflow = overflow + # start with value - 1 so we don't have to store intermediate values when counting + # could the iv be 0? + if initial_value == 0: + self.value = array.array('c', '\xFF' * self.blocksize) + else: + x = deflate_long(initial_value - 1, add_sign_padding=False) + self.value = array.array('c', '\x00' * (self.blocksize - len(x)) + x) + + def __call__(self): + """Increament the counter and return the new value""" + i = self.blocksize - 1 + while i > -1: + c = self.value[i] = chr((ord(self.value[i]) + 1) % 256) + if c != '\x00': + return self.value.tostring() + i -= 1 + # counter reset + x = deflate_long(self.overflow, add_sign_padding=False) + self.value = array.array('c', '\x00' * (self.blocksize - len(x)) + x) + return self.value.tostring() + + def new(cls, nbits, initial_value=1L, overflow=0L): + return cls(nbits, initial_value=initial_value, overflow=overflow) + new = classmethod(new) @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2008 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2008 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -41,20 +41,20 @@ try: except ImportError: from distutils.core import setup kw = {} - + if sys.platform == 'darwin': import setup_helper setup_helper.install_custom_make_tarball() setup(name = "paramiko", - version = "1.7.4", + version = "1.7.6", description = "SSH2 protocol library", author = "Robey Pointer", - author_email = "robey@lag.net", + author_email = "robeypointer@gmail.com", url = "http://www.lag.net/paramiko/", packages = [ 'paramiko' ], - download_url = 'http://www.lag.net/paramiko/download/paramiko-1.7.4.zip', + download_url = 'http://www.lag.net/paramiko/download/paramiko-1.7.6.zip', license = 'LGPL', platforms = 'Posix; MacOS X; Windows', classifiers = [ 'Development Status :: 5 - Production/Stable', diff --git a/setup_helper.py b/setup_helper.py index 778d90a..e8f3f2f 100644 --- a/setup_helper.py +++ b/setup_helper.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/loop.py b/tests/loop.py index fb6ffae..bdc2f2d 100644 --- a/tests/loop.py +++ b/tests/loop.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/stub_sftp.py b/tests/stub_sftp.py index ac292ff..7f1ecc7 100644 --- a/tests/stub_sftp.py +++ b/tests/stub_sftp.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_auth.py b/tests/test_auth.py index fadd8ca..816e978 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -1,4 +1,4 @@ -# Copyright (C) 2008 Robey Pointer <robey@lag.net> +# Copyright (C) 2008 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_buffered_pipe.py b/tests/test_buffered_pipe.py index f96edb8..f285d05 100644 --- a/tests/test_buffered_pipe.py +++ b/tests/test_buffered_pipe.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_client.py b/tests/test_client.py index 59cd67c..2f9b9a7 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -31,7 +31,7 @@ import paramiko class NullServer (paramiko.ServerInterface): - + def get_allowed_auths(self, username): if username == 'slowdive': return 'publickey,password' @@ -46,7 +46,7 @@ class NullServer (paramiko.ServerInterface): if (key.get_name() == 'ssh-dss') and (hexlify(key.get_fingerprint()) == '4478f0b9a23cc5182009ff755bc1d26c'): return paramiko.AUTH_SUCCESSFUL return paramiko.AUTH_FAILED - + def check_channel_request(self, kind, chanid): return paramiko.OPEN_SUCCEEDED @@ -81,17 +81,17 @@ class SSHClientTest (unittest.TestCase): self.ts.add_server_key(host_key) server = NullServer() self.ts.start_server(self.event, server) - - + + def test_1_client(self): """ verify that the SSHClient stuff works too. """ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') public_host_key = paramiko.RSAKey(data=str(host_key)) - + self.tc = paramiko.SSHClient() - self.tc.get_host_keys().add(self.addr, 'ssh-rsa', public_host_key) + self.tc.get_host_keys().add('[%s]:%d' % (self.addr, self.port), 'ssh-rsa', public_host_key) self.tc.connect(self.addr, self.port, username='slowdive', password='pygmalion') self.event.wait(1.0) @@ -111,20 +111,20 @@ class SSHClientTest (unittest.TestCase): self.assertEquals('', stdout.readline()) self.assertEquals('This is on stderr.\n', stderr.readline()) self.assertEquals('', stderr.readline()) - + stdin.close() stdout.close() stderr.close() - + def test_2_client_dsa(self): """ verify that SSHClient works with a DSA key. """ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') public_host_key = paramiko.RSAKey(data=str(host_key)) - + self.tc = paramiko.SSHClient() - self.tc.get_host_keys().add(self.addr, 'ssh-rsa', public_host_key) + self.tc.get_host_keys().add('[%s]:%d' % (self.addr, self.port), 'ssh-rsa', public_host_key) self.tc.connect(self.addr, self.port, username='slowdive', key_filename='tests/test_dss.key') self.event.wait(1.0) @@ -144,20 +144,20 @@ class SSHClientTest (unittest.TestCase): self.assertEquals('', stdout.readline()) self.assertEquals('This is on stderr.\n', stderr.readline()) self.assertEquals('', stderr.readline()) - + stdin.close() stdout.close() stderr.close() - + def test_3_multiple_key_files(self): """ verify that SSHClient accepts and tries multiple key files. """ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') public_host_key = paramiko.RSAKey(data=str(host_key)) - + self.tc = paramiko.SSHClient() - self.tc.get_host_keys().add(self.addr, 'ssh-rsa', public_host_key) + self.tc.get_host_keys().add('[%s]:%d' % (self.addr, self.port), 'ssh-rsa', public_host_key) self.tc.connect(self.addr, self.port, username='slowdive', key_filename=[ 'tests/test_rsa.key', 'tests/test_dss.key' ]) self.event.wait(1.0) @@ -172,7 +172,7 @@ class SSHClientTest (unittest.TestCase): """ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') public_host_key = paramiko.RSAKey(data=str(host_key)) - + self.tc = paramiko.SSHClient() self.tc.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.assertEquals(0, len(self.tc.get_host_keys())) @@ -184,7 +184,7 @@ class SSHClientTest (unittest.TestCase): self.assertEquals('slowdive', self.ts.get_username()) self.assertEquals(True, self.ts.is_authenticated()) self.assertEquals(1, len(self.tc.get_host_keys())) - self.assertEquals(public_host_key, self.tc.get_host_keys()[self.addr]['ssh-rsa']) + self.assertEquals(public_host_key, self.tc.get_host_keys()['[%s]:%d' % (self.addr, self.port)]['ssh-rsa']) def test_5_cleanup(self): """ @@ -193,7 +193,7 @@ class SSHClientTest (unittest.TestCase): """ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') public_host_key = paramiko.RSAKey(data=str(host_key)) - + self.tc = paramiko.SSHClient() self.tc.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.assertEquals(0, len(self.tc.get_host_keys())) @@ -202,7 +202,7 @@ class SSHClientTest (unittest.TestCase): self.event.wait(1.0) self.assert_(self.event.isSet()) self.assert_(self.ts.is_active()) - + p = weakref.ref(self.tc._transport.packetizer) self.assert_(p() is not None) del self.tc @@ -211,4 +211,4 @@ class SSHClientTest (unittest.TestCase): while (time.time() - st < 5.0) and (p() is not None): time.sleep(0.1) self.assert_(p() is None) - + diff --git a/tests/test_file.py b/tests/test_file.py index d66babf..c539b22 100755 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_hostkeys.py b/tests/test_hostkeys.py index 28521ba..e28a41d 100644 --- a/tests/test_hostkeys.py +++ b/tests/test_hostkeys.py @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_kex.py b/tests/test_kex.py index f304275..2ecb757 100644 --- a/tests/test_kex.py +++ b/tests/test_kex.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_message.py b/tests/test_message.py index e930f71..7bfd44d 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_packetizer.py b/tests/test_packetizer.py index cb6248f..d1eb584 100644 --- a/tests/test_packetizer.py +++ b/tests/test_packetizer.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_pkey.py b/tests/test_pkey.py index e591ab1..e40bee1 100644 --- a/tests/test_pkey.py +++ b/tests/test_pkey.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_sftp.py b/tests/test_sftp.py index edc0599..f9d7270 100755 --- a/tests/test_sftp.py +++ b/tests/test_sftp.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -80,7 +80,7 @@ class SFTPTest (unittest.TestCase): def init(hostname, username, keyfile, passwd): global sftp, tc - + t = paramiko.Transport(hostname) tc = t try: @@ -136,7 +136,7 @@ class SFTPTest (unittest.TestCase): global g_big_file_test g_big_file_test = onoff set_big_file_test = staticmethod(set_big_file_test) - + def setUp(self): global FOLDER for i in xrange(1000): @@ -206,7 +206,7 @@ class SFTPTest (unittest.TestCase): f.close() finally: sftp.remove(FOLDER + '/append.txt') - + def test_5_rename(self): """ verify that renaming a file works. @@ -309,7 +309,7 @@ class SFTPTest (unittest.TestCase): self.assertEqual(stat.st_atime, atime) # can't really test chown, since we'd have to know a valid uid. - + sftp.truncate(FOLDER + '/special', 512) stat = sftp.stat(FOLDER + '/special') self.assertEqual(stat.st_size, 512) @@ -325,7 +325,7 @@ class SFTPTest (unittest.TestCase): try: f.write('x' * 1024) f.close() - + f = sftp.open(FOLDER + '/special', 'r+') stat = f.stat() f.chmod((stat.st_mode & ~0777) | 0600) @@ -348,16 +348,16 @@ class SFTPTest (unittest.TestCase): self.assertEqual(stat.st_mtime, mtime) if sys.platform not in ('win32', 'cygwin'): self.assertEqual(stat.st_atime, atime) - + # can't really test chown, since we'd have to know a valid uid. - + f.truncate(512) stat = f.stat() self.assertEqual(stat.st_size, 512) f.close() finally: sftp.remove(FOLDER + '/special') - + def test_A_readline_seek(self): """ create a text file and write a bunch of text into it. then count the lines @@ -510,7 +510,7 @@ class SFTPTest (unittest.TestCase): self.assert_(False, 'no exception removing nonexistent subfolder') except IOError: pass - + def test_G_chdir(self): """ verify that chdir/getcwd work. @@ -524,7 +524,7 @@ class SFTPTest (unittest.TestCase): sftp.mkdir('beta') self.assertEquals(root + FOLDER + '/alpha', sftp.getcwd()) self.assertEquals(['beta'], sftp.listdir('.')) - + sftp.chdir('beta') f = sftp.open('fish', 'w') f.write('hello\n') @@ -554,7 +554,7 @@ class SFTPTest (unittest.TestCase): """ import os, warnings warnings.filterwarnings('ignore', 'tempnam.*') - + localname = os.tempnam() text = 'All I wanted was a plastic bunny rabbit.\n' f = open(localname, 'wb') @@ -564,22 +564,22 @@ class SFTPTest (unittest.TestCase): def progress_callback(x, y): saved_progress.append((x, y)) sftp.put(localname, FOLDER + '/bunny.txt', progress_callback) - + f = sftp.open(FOLDER + '/bunny.txt', 'r') self.assertEquals(text, f.read(128)) f.close() self.assertEquals((41, 41), saved_progress[-1]) - + os.unlink(localname) localname = os.tempnam() saved_progress = [] sftp.get(FOLDER + '/bunny.txt', localname, progress_callback) - + f = open(localname, 'rb') self.assertEquals(text, f.read(128)) f.close() self.assertEquals((41, 41), saved_progress[-1]) - + os.unlink(localname) sftp.unlink(FOLDER + '/bunny.txt') @@ -592,7 +592,7 @@ class SFTPTest (unittest.TestCase): f = sftp.open(FOLDER + '/kitty.txt', 'w') f.write('here kitty kitty' * 64) f.close() - + try: f = sftp.open(FOLDER + '/kitty.txt', 'r') sum = f.check('sha1') @@ -612,7 +612,7 @@ class SFTPTest (unittest.TestCase): """ f = sftp.open(FOLDER + '/unusual.txt', 'wx') f.close() - + try: try: f = sftp.open(FOLDER + '/unusual.txt', 'wx') @@ -621,7 +621,7 @@ class SFTPTest (unittest.TestCase): pass finally: sftp.unlink(FOLDER + '/unusual.txt') - + def test_K_utf8(self): """ verify that unicode strings are encoded into utf8 correctly. @@ -629,7 +629,7 @@ class SFTPTest (unittest.TestCase): f = sftp.open(FOLDER + '/something', 'w') f.write('okay') f.close() - + try: sftp.rename(FOLDER + '/something', FOLDER + u'/\u00fcnic\u00f8de') sftp.open(FOLDER + '/\xc3\xbcnic\xc3\xb8\x64\x65', 'r') @@ -637,7 +637,19 @@ class SFTPTest (unittest.TestCase): self.fail('exception ' + e) sftp.unlink(FOLDER + '/\xc3\xbcnic\xc3\xb8\x64\x65') - def test_L_bad_readv(self): + def test_L_utf8_chdir(self): + sftp.mkdir(FOLDER + u'\u00fcnic\u00f8de') + try: + sftp.chdir(FOLDER + u'\u00fcnic\u00f8de') + f = sftp.open('something', 'w') + f.write('okay') + f.close() + sftp.unlink('something') + finally: + sftp.chdir(None) + sftp.rmdir(FOLDER + u'\u00fcnic\u00f8de') + + def test_M_bad_readv(self): """ verify that readv at the end of the file doesn't essplode. """ @@ -647,7 +659,7 @@ class SFTPTest (unittest.TestCase): f = sftp.open(FOLDER + '/zero', 'r') data = f.readv([(0, 12)]) f.close() - + f = sftp.open(FOLDER + '/zero', 'r') f.prefetch() data = f.read(100) @@ -658,7 +670,7 @@ class SFTPTest (unittest.TestCase): def XXX_test_M_seek_append(self): """ verify that seek does't affect writes during append. - + does not work except through paramiko. :( openssh fails. """ f = sftp.open(FOLDER + '/append.txt', 'a') diff --git a/tests/test_sftp_big.py b/tests/test_sftp_big.py index c182762..a32a700 100644 --- a/tests/test_sftp_big.py +++ b/tests/test_sftp_big.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # diff --git a/tests/test_transport.py b/tests/test_transport.py index 4b52c4f..cea4a1d 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # @@ -38,6 +38,19 @@ from paramiko.message import Message from loop import LoopSocket +LONG_BANNER = """\ +Welcome to the super-fun-land BBS, where our MOTD is the primary thing we +provide. All rights reserved. Offer void in Tennessee. Stunt drivers were +used. Do not attempt at home. Some restrictions apply. + +Happy birthday to Commie the cat! + +Note: An SSH banner may eventually appear. + +Maybe. +""" + + class NullServer (ServerInterface): paranoid_did_password = False paranoid_did_public_key = False @@ -182,6 +195,24 @@ class TransportTest (unittest.TestCase): self.assertEquals(True, self.tc.is_authenticated()) self.assertEquals(True, self.ts.is_authenticated()) + def test_3a_long_banner(self): + """ + verify that a long banner doesn't mess up the handshake. + """ + host_key = RSAKey.from_private_key_file('tests/test_rsa.key') + public_host_key = RSAKey(data=str(host_key)) + self.ts.add_server_key(host_key) + event = threading.Event() + server = NullServer() + self.assert_(not event.isSet()) + self.socks.send(LONG_BANNER) + self.ts.start_server(event, server) + self.tc.connect(hostkey=public_host_key, + username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + def test_4_special(self): """ verify that the client can demand odd handshake settings, and can diff --git a/tests/test_util.py b/tests/test_util.py index d385bab..3569abf 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2007 Robey Pointer <robey@lag.net> +# Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> # # This file is part of paramiko. # |