diff options
author | Jeremy T. Bouse <jbouse@debian.org> | 2009-11-27 16:20:09 -0500 |
---|---|---|
committer | Jeremy T. Bouse <jbouse@debian.org> | 2009-11-27 16:20:09 -0500 |
commit | 176c6caf4ea7918e1698438634b237fab8456471 (patch) | |
tree | 6e2a8e5be1af2a6ec324fdbf99589aa099f1ec2a | |
download | python-paramiko-176c6caf4ea7918e1698438634b237fab8456471.tar python-paramiko-176c6caf4ea7918e1698438634b237fab8456471.tar.gz |
Imported Upstream version 1.5.2upstream/1.5.2
237 files changed, 55748 insertions, 0 deletions
@@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/PKG-INFO b/PKG-INFO new file mode 100644 index 0000000..a0ec679 --- /dev/null +++ b/PKG-INFO @@ -0,0 +1,25 @@ +Metadata-Version: 1.0 +Name: paramiko +Version: 1.5.2 +Summary: SSH2 protocol library +Home-page: http://www.lag.net/paramiko/ +Author: Robey Pointer +Author-email: robey@lag.net +License: LGPL +Download-URL: http://www.lag.net/paramiko/download/paramiko-1.5.2.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 + connections between python scripts. All major ciphers and hash methods + are supported. SFTP client and server mode are both supported too. + + Required packages: + pyCrypt + +Platform: Posix; MacOS X; Windows +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) +Classifier: Operating System :: OS Independent +Classifier: Topic :: Internet +Classifier: Topic :: Security :: Cryptography @@ -0,0 +1,248 @@ +paramiko 1.5.2 +"rhydon" release, 04 dec 2005 + +Copyright (c) 2003-2005 Robey Pointer <robey@lag.net> + +http://www.lag.net/paramiko/ + + +*** WHAT + +"paramiko" is a combination of the esperanto words for "paranoid" and +"friend". it's a module for python 2.2+ that implements the SSH2 protocol +for secure (encrypted and authenticated) connections to remote machines. +unlike SSL (aka TLS), SSH2 protocol does not require heirarchical +certificates signed by a powerful central authority. you may know SSH2 as +the protocol that replaced telnet and rsh for secure access to remote +shells, but the protocol also includes the ability to open arbitrary +channels to remote services across the encrypted tunnel (this is how sftp +works, for example). + +it is written entirely in python (no C or platform-dependent code) and is +released under the GNU LGPL (lesser GPL). + +the package and its API is fairly well documented in the "doc/" folder +that should have come with this archive. + + +*** REQUIREMENTS + +python 2.3 <http://www.python.org/> + (python 2.2 is also supported, but not recommended) +pycrypto 1.9+ <http://www.amk.ca/python/code/crypto.html> + (2.0 works too) + +pycrypto compiled for Win32 can be downloaded from the HashTar homepage: + http://nitace.bsd.uchicago.edu:8080/hashtar +you can also build it yourself using the free MinGW tools and this command +line (thanks to Roger Binns for the info): + python setup.py build --compiler=mingw32 bdist_wininst + + +*** PORTABILITY + +i code and test this library on Linux and MacOS X. for that reason, i'm +pretty sure that it works for all posix platforms, including MacOS. i +also think it will work on Windows, though i've never tested it there. if +you run into Windows problems, send me a patch: portability is important +to me. + +python 2.2 may work, thanks to some patches from Roger Binns. things to +watch out for: +* sockets in 2.2 don't support timeouts, so the 'select' module is + imported to do polling. +* logging is mostly stubbed out. it works just enough to let paramiko + create log files for debugging, if you want them. to get real logging, + you can backport python 2.3's logging package. Roger has done that + already: + http://sourceforge.net/project/showfiles.php?group_id=75211&package_id=113804 + +you really should upgrade to python 2.3. laziness is no excuse! :) + +some python distributions don't include the utf-8 string encodings, for +reasons of space (misdirected as that is). if your distribution is +missing encodings, you'll see an error like this: + +LookupError: no codec search functions registered: can't find encoding + +this means you need to copy string encodings over from a working system. +(it probably only happens on embedded systems, not normal python +installls.) +Valeriy Pogrebitskiy says the best place to look is +'.../lib/python*/encodings/__init__.py'. + + +*** DEMO + +several demo scripts come with paramiko to demonstrate how to use it. +probably the simplest demo of all is this: + + import paramiko, base64 + key = paramiko.RSAKey(data=base64.decodestring('AAA...')) + t = paramiko.Transport('ssh.example.com') + t.connect(username='strongbad', password='thecheat', hostkey=key) + chan = t.open_session() + chan.exec_command('ls') + for line in chan.makefile('r+'): + print '... ' + line.strip('\n') + chan.close() + t.close() + +...which prints out the results of executing 'ls' on a remote server. +(the host key 'AAA...' should of course be replaced by the actual base64 +encoding of the host key. if you skip host key verification, the +connection is not secure!) + +the following example scripts get progressively more detailed: + +demo_simple.py + calls invoke_shell() and emulates a terminal/tty through which you can + execute commands interactively on a remote server. think of it as a + poor man's ssh command-line client. + +demo.py + same as demo_simple.py, but allows you to authenticiate using a + private key, attempts to use an SSH-agent if present, and uses the long + form of some of the API calls. + +forward.py + command-line script to set up port-forwarding across an ssh transport. + (requires python 2.3.) + +demo_server.py + an ssh server that listens on port 2200 and accepts a login for + 'robey' (password 'foo'), and pretends to be a BBS. meant to be a + very simple demo of writing an ssh server. + + +*** USE + +the demo scripts are probably the best example of how to use this package. +there is also a lot of documentation, generated with epydoc, in the doc/ +folder. point your browser there. seriously, do it. mad props to +epydoc, which actually motivated me to write more documentation than i +ever would have before. + +there are also unit tests here: + $ python ./test.py +which will verify that some of the core components are working correctly. +not much is tested yet, but it's a start. the tests for SFTP are probably +the best and easiest examples of how to use the SFTP class. + + +*** WHAT'S NEW + +highlights of what's new in each release: + +v1.5.2 RHYDON +* compression support (opt-in via Transport.use_compression) +* sftp files may be opened with mode flag 'x' for O_EXCL (exclusive-open) + behavior, which has no direct python equivalent +* added experimental util functions for parsing openssh config files +* fixed a few bugs (and potential deadlocks) with key renegotiation +* fixed a bug that caused SFTPFile.prefetch to occasionally lock up +* fixed an sftp bug which affected van dyke sftp servers +* fixed the behavior of select()ing on a closed channel, such that it will + always trigger as readable + +v1.5.1 QUILAVA +* SFTPFile.prefetch() added to dramatically speed up downloads (automatically + turned on in SFTPClient.get()) +* fixed bug where garbage-collected Channels could trigger the Transport to + close the session (reported by gordon good) +* fixed a deadlock in rekeying (reported by wendell wood) +* fixed some windows bugs and SFTPAttributes.__str__() (reported by grzegorz + makarewicz) +* better sftp error reporting by adding fake "errno" info to IOErrors + +v1.5 PARAS +* added support for "keyboard-interactive" authentication +* added mode (on by default) where password authentication will try to + fallback to "keyboard-interactive" if it's supported +* added pipelining to SFTPFile.write and SFTPClient.put +* fixed bug with SFTPFile.close() not guarding against being called more + than once (thanks to Nathaniel Smith) +* fixed broken 'a' flag in SFTPClient.file() (thanks to Nathaniel Smith) +* fixed up epydocs to look nicer +* reorganized auth_transport into auth_handler, which seems to be a cleaner + separation +* demo scripts fixed to have a better chance of loading the host keys + correctly on windows/cygwin + +v1.4 ODDISH +* added SSH-agent support (for posix) from john rochester +* added chdir() and getcwd() to SFTPClient, to emulate a "working directory" +* added get() and put() to SFTPClient, to emulate ftp whole-file transfers +* added check() to SFTPFile (a file hashing protocol extension) +* fixed Channels and SFTPFiles (among others) to auto-close when GC'd +* fixed Channel.fileno() for Windows, this time really +* don't log socket errors as "unknown exception" +* some misc. backward-compatible API improvements (like allowing + Transport.start_client() and start_server() to be called in a blocking way) + +v1.3.1 NIDORAN +* added SFTPClient.close() +* fixed up some outdated documentation +* made SFTPClient.file() an alias for open() +* added Transport.open_sftp_client() for convenience +* refactored packetizing out of Transport +* fixed bug (reported by alain s.) where connecting to a non-SSH host could + cause paramiko to freeze up +* fixed Channel.fileno() for Windows (again) +* some more unit tests + +v1.3 MAROWAK +* fixed a bug where packets larger than about 12KB would cause the session + to die on all platforms except osx +* added a potential workaround for windows to let Channel.fileno() (and + therefore the select module) work! +* changed API for subsystem handlers (sorry!) to pass more info and make it + easier to write a functional SFTP server + +v1.2 LAPRAS +* added SFTPClient.listdir_attr() for fetching a list of files and their + attributes in one call +* added Channel.recv_exit_status() and Channel.send_exit_status() for + manipulating the exit status of a command from either client or server + mode +* moved check_global_request into ServerInterface, where it should've been + all along (oops) +* SFTPHandle's default implementations are fleshed out more +* made logging a bit more consistent, and started logging thread ids +* fixed a few race conditions, one of which would sometimes cause a Transport + to fail to start on slow machines +* more unit tests + +v1.1 KABUTO +* server-side SFTP support +* added support for stderr streams on client & server channels +* added a new distinct exception for failed client authentication + when caused by the server rejecting that *type* of auth +* added support for multi-part authentication +* fixed bug where get_username() wasn't working in server mode + +v1.0 JIGGLYPUFF +* fixed bug that broke server-mode authentication by private key +* fixed bug where closing a Channel could end up killing the entire + Transport +* actually include demo_windows.py this time (oops!) +* fixed recently-introduced bug in group-exchange key negotiation that + would generate the wrong hash (and therefore fail the initial handshake) +* server-mode subsystem handler is a bit more flexible + + +*** MISSING LINKS + +* host-based auth (yuck!) +* SFTP implicit file locking? +* ChannelException like the java version has +* would be nice to have windows putty "pagent" support -- looks very hard + +* ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr) +* sftp protocol 6 support (ugh....) -- once it settles down more + +* make a simple example demonstrating use of SocketServer (besides forward.py?) + +* make a function to parse .ssh/config files: + User, Hostname, Port, ProxyCommand, IdentityFile, HostKeyAlias + ProxyCommand: %h = host, %p = port, "none" = disable @@ -0,0 +1,210 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + + +# ----- WINDOWS USERS PLEASE NOTE ----- +# This demo won't work on Windows because it uses pseudo-terminals, which +# are a posix-only feature. check out the README file for a simpler demo. + + +import sys, os, socket, threading, getpass, time, base64, select, termios, tty, traceback +import paramiko + + +##### utility functions + +def agent_auth(username, t, event): + agent = paramiko.Agent() + agent_keys = agent.get_keys() + if len(agent_keys) > 0: + for key in agent_keys: + print 'Trying ssh-agent key %s' % paramiko.util.hexify(key.get_fingerprint()), + t.auth_publickey(username, key, event) + event.wait(10) + if t.is_authenticated(): + print '... success!' + return + print '... nope.' + +def manual_auth(username, hostname, event): + default_auth = 'p' + auth = raw_input('Auth by (p)assword, (r)sa key, or (d)ss key? [%s] ' % default_auth) + if len(auth) == 0: + auth = default_auth + + if auth == 'r': + default_path = os.environ['HOME'] + '/.ssh/id_rsa' + path = raw_input('RSA key [%s]: ' % default_path) + if len(path) == 0: + path = default_path + try: + key = paramiko.RSAKey.from_private_key_file(path) + except paramiko.PasswordRequiredException: + password = getpass.getpass('RSA key password: ') + key = paramiko.RSAKey.from_private_key_file(path, password) + t.auth_publickey(username, key, event) + elif auth == 'd': + default_path = os.environ['HOME'] + '/.ssh/id_dsa' + path = raw_input('DSS key [%s]: ' % default_path) + if len(path) == 0: + path = default_path + try: + key = paramiko.DSSKey.from_private_key_file(path) + except paramiko.PasswordRequiredException: + password = getpass.getpass('DSS key password: ') + key = paramiko.DSSKey.from_private_key_file(path, password) + t.auth_publickey(username, key, event) + else: + pw = getpass.getpass('Password for %s@%s: ' % (username, hostname)) + t.auth_password(username, pw, event) + + +##### main demo + +# setup logging +paramiko.util.log_to_file('demo.log') + + +username = '' +if len(sys.argv) > 1: + hostname = sys.argv[1] + if hostname.find('@') >= 0: + username, hostname = hostname.split('@') +else: + hostname = raw_input('Hostname: ') +if len(hostname) == 0: + print '*** Hostname required.' + sys.exit(1) +port = 22 +if hostname.find(':') >= 0: + hostname, portstr = hostname.split(':') + port = int(portstr) + +# now connect +try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((hostname, port)) +except Exception, e: + print '*** Connect failed: ' + str(e) + traceback.print_exc() + sys.exit(1) + +try: + event = threading.Event() + t = paramiko.Transport(sock) + t.start_client(event) + # print repr(t) + event.wait(15) + if not t.is_active(): + print '*** SSH negotiation failed.' + sys.exit(1) + # print repr(t) + + try: + keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts')) + except IOError: + try: + keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts')) + except IOError: + print '*** Unable to open host keys file' + keys = {} + + key = t.get_remote_server_key() + if not keys.has_key(hostname): + print '*** WARNING: Unknown host key!' + elif not keys[hostname].has_key(key.get_name()): + print '*** WARNING: Unknown host key!' + elif keys[hostname][key.get_name()] != key: + print '*** WARNING: Host key has changed!!!' + sys.exit(1) + else: + print '*** Host key OK.' + + event.clear() + + # get username + if username == '': + default_username = getpass.getuser() + username = raw_input('Username [%s]: ' % default_username) + if len(username) == 0: + username = default_username + + agent_auth(username, t, event) + + # ask for what kind of authentication to try + if not t.is_authenticated(): + manual_auth(username, hostname, event) + + event.wait(10) + # print repr(t) + if not t.is_authenticated(): + print '*** Authentication failed. :(' + t.close() + sys.exit(1) + + chan = t.open_session() + chan.get_pty() + chan.invoke_shell() + print '*** Here we go!' + print + + try: + oldtty = termios.tcgetattr(sys.stdin) + tty.setraw(sys.stdin.fileno()) + tty.setcbreak(sys.stdin.fileno()) + chan.settimeout(0.0) + + while 1: + r, w, e = select.select([chan, sys.stdin], [], []) + if chan in r: + try: + x = chan.recv(1024) + if len(x) == 0: + print + print '*** EOF\r\n', + break + sys.stdout.write(x) + sys.stdout.flush() + except socket.timeout: + pass + if sys.stdin in r: + # FIXME: reading 1 byte at a time is incredibly dumb. + x = sys.stdin.read(1) + if len(x) == 0: + print + print '*** Bye.\r\n', + break + chan.send(x) + + finally: + termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) + + chan.close() + t.close() + +except Exception, e: + print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e) + traceback.print_exc() + try: + t.close() + except: + pass + sys.exit(1) + diff --git a/demo_server.py b/demo_server.py new file mode 100644 index 0000000..599eb46 --- /dev/null +++ b/demo_server.py @@ -0,0 +1,138 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +import sys, os, socket, threading, traceback, base64 +import paramiko + +# setup logging +paramiko.util.log_to_file('demo_server.log') + +#host_key = paramiko.RSAKey(filename='tests/test_rsa.key') +host_key = paramiko.DSSKey(filename='tests/test_dss.key') + +print 'Read key: ' + paramiko.util.hexify(host_key.get_fingerprint()) + + +class Server (paramiko.ServerInterface): + # 'data' is the output of base64.encodestring(str(key)) + data = 'AAAAB3NzaC1yc2EAAAABIwAAAIEAyO4it3fHlmGZWJaGrfeHOVY7RWO3P9M7hpfAu7jJ2d7eothvfeuoRFtJwhUmZDluRdFyhFY/hFAh76PJKGAusIqIQKlkJxMCKDqIexkgHAfID/6mqvmnSJf0b5W8v5h2pI/stOSwTQ+pxVhwJ9ctYDhRSlF0iTUWT10hcuO4Ks8=' + good_pub_key = paramiko.RSAKey(data=base64.decodestring(data)) + + def __init__(self): + self.event = threading.Event() + + def check_channel_request(self, kind, chanid): + if kind == 'session': + return paramiko.OPEN_SUCCEEDED + return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + + def check_auth_password(self, username, password): + if (username == 'robey') and (password == 'foo'): + return paramiko.AUTH_SUCCESSFUL + return paramiko.AUTH_FAILED + + def check_auth_publickey(self, username, key): + print 'Auth attempt with key: ' + paramiko.util.hexify(key.get_fingerprint()) + if (username == 'robey') and (key == self.good_pub_key): + return paramiko.AUTH_SUCCESSFUL + return paramiko.AUTH_FAILED + + def get_allowed_auths(self, username): + return 'password,publickey' + + def check_channel_shell_request(self, channel): + self.event.set() + return True + + def check_channel_pty_request(self, channel, term, width, height, pixelwidth, + pixelheight, modes): + return True + + +# now connect +try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(('', 2200)) +except Exception, e: + print '*** Bind failed: ' + str(e) + traceback.print_exc() + sys.exit(1) + +try: + sock.listen(100) + print 'Listening for connection ...' + client, addr = sock.accept() +except Exception, e: + print '*** Listen/accept failed: ' + str(e) + traceback.print_exc() + sys.exit(1) + +print 'Got a connection!' + +try: + event = threading.Event() + t = paramiko.Transport(client) + try: + t.load_server_moduli() + except: + print '(Failed to load moduli -- gex will be unsupported.)' + raise + t.add_server_key(host_key) + server = Server() + t.start_server(event, server) + while 1: + event.wait(0.1) + if not t.is_active(): + print '*** SSH negotiation failed.' + sys.exit(1) + if event.isSet(): + break + # print repr(t) + + # wait for auth + chan = t.accept(20) + if chan is None: + print '*** No channel.' + sys.exit(1) + print 'Authenticated!' + server.event.wait(10) + if not server.event.isSet(): + print '*** Client never asked for a shell.' + sys.exit(1) + + chan.send('\r\n\r\nWelcome to my dorky little BBS!\r\n\r\n') + chan.send('We are on fire all the time! Hooray! Candy corn for everyone!\r\n') + chan.send('Happy birthday to Robot Dave!\r\n\r\n') + chan.send('Username: ') + f = chan.makefile('rU') + username = f.readline().strip('\r\n') + chan.send('\r\nI don\'t like you, ' + username + '.\r\n') + chan.close() + +except Exception, e: + print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e) + traceback.print_exc() + try: + t.close() + except: + pass + sys.exit(1) + diff --git a/demo_simple.py b/demo_simple.py new file mode 100644 index 0000000..655a1a4 --- /dev/null +++ b/demo_simple.py @@ -0,0 +1,128 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + + +# ----- WINDOWS USERS PLEASE NOTE ----- +# This demo won't work on Windows because it uses pseudo-terminals, which +# are a posix-only feature. check out the README file for a simpler demo. + + +import sys, os, base64, getpass, socket, traceback, termios, tty, select +import paramiko + + +# setup logging +paramiko.util.log_to_file('demo_simple.log') + +# get hostname +username = '' +if len(sys.argv) > 1: + hostname = sys.argv[1] + if hostname.find('@') >= 0: + username, hostname = hostname.split('@') +else: + hostname = raw_input('Hostname: ') +if len(hostname) == 0: + print '*** Hostname required.' + sys.exit(1) +port = 22 +if hostname.find(':') >= 0: + hostname, portstr = hostname.split(':') + port = int(portstr) + + +# get username +if username == '': + default_username = getpass.getuser() + username = raw_input('Username [%s]: ' % default_username) + if len(username) == 0: + username = default_username +password = getpass.getpass('Password for %s@%s: ' % (username, hostname)) + + +# get host key, if we know one +hostkeytype = None +hostkey = None +try: + hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts')) +except IOError: + try: + hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts')) + except IOError: + print '*** Unable to open host keys file' + hkeys = {} + +if hkeys.has_key(hostname): + hostkeytype = hkeys[hostname].keys()[0] + hostkey = hkeys[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() + print '*** Here we go!' + print + + try: + oldtty = termios.tcgetattr(sys.stdin) + tty.setraw(sys.stdin.fileno()) + tty.setcbreak(sys.stdin.fileno()) + chan.settimeout(0.0) + + while True: + r, w, e = select.select([chan, sys.stdin], [], []) + if chan in r: + try: + x = chan.recv(1024) + if len(x) == 0: + print '\r\n*** EOF\r\n', + break + sys.stdout.write(x) + sys.stdout.flush() + except socket.timeout: + pass + if sys.stdin in r: + # FIXME: reading 1 byte at a time is incredibly dumb. + x = sys.stdin.read(1) + if len(x) == 0: + print + print '*** Bye.\r\n', + break + chan.send(x) + + finally: + termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) + + chan.close() + t.close() + +except Exception, e: + print '*** Caught exception: %s: %s' % (e.__class__, e) + traceback.print_exc() + try: + t.close() + except: + pass + sys.exit(1) diff --git a/docs/epydoc.css b/docs/epydoc.css new file mode 100644 index 0000000..46080bd --- /dev/null +++ b/docs/epydoc.css @@ -0,0 +1,100 @@ + +/* Body color */ +body { background: #ffffff; color: #000000; } + +/* Tables */ +table.summary, table.details, table.index + { background: #e8f0f8; color: #000000; } +tr.summary, tr.details, tr.index + { background: #70b0f0; color: #000000; + text-align: left; font-size: 120%; } +tr.group { background: #c0e0f8; color: #000000; + text-align: left; font-size: 120%; + font-style: italic; } + +/* Documentation page titles */ +h2.module { margin-top: 0.2em; } +h2.class { margin-top: 0.2em; } + +/* Headings */ +h1.heading { font-size: +140%; font-style: italic; + font-weight: bold; } +h2.heading { font-size: +125%; font-style: italic; + font-weight: bold; } +h3.heading { font-size: +110%; font-style: italic; + font-weight: normal; } + +/* Base tree */ +pre.base-tree { font-size: 80%; margin: 0; } + +/* Details Sections */ +table.func-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.func-detail { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +table.var-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.var-details { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +/* Function signatures */ +.sig { background: transparent; color: #000000; + font-weight: bold; } +.sig-name { background: transparent; color: #006080; } +.sig-arg, .sig-kwarg, .sig-vararg + { background: transparent; color: #008060; } +.sig-default { background: transparent; color: #602000; } +.summary-sig { background: transparent; color: #000000; } +.summary-sig-name { background: transparent; color: #204080; } +.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg + { background: transparent; color: #008060; } + +/* Doctest blocks */ +.py-src { background: transparent; color: #000000; } +.py-prompt { background: transparent; color: #005050; + font-weight: bold;} +.py-string { background: transparent; color: #006030; } +.py-comment { background: transparent; color: #003060; } +.py-keyword { background: transparent; color: #600000; } +.py-output { background: transparent; color: #404040; } +pre.doctestblock { background: #f4faff; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } +table pre.doctestblock + { background: #dce4ec; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } + +/* Variable values */ +pre.variable { background: #dce4ec; color: #000000; + padding: .5em; margin: 0; + border: 1px solid #708890; } +.variable-linewrap { background: transparent; color: #604000; } +.variable-ellipsis { background: transparent; color: #604000; } +.variable-quote { background: transparent; color: #604000; } +.re { background: transparent; color: #000000; } +.re-char { background: transparent; color: #006030; } +.re-op { background: transparent; color: #600000; } +.re-group { background: transparent; color: #003060; } +.re-ref { background: transparent; color: #404040; } + +/* Navigation bar */ +table.navbar { background: #a0c0ff; color: #0000ff; + border: 2px groove #c0d0d0; } +th.navbar { background: #a0c0ff; color: #0000ff; } +th.navselect { background: #70b0ff; color: #000000; } +.nomargin { margin: 0; } + +/* Links */ +a:link { background: transparent; color: #0000ff; } +a:visited { background: transparent; color: #204080; } +a.navbar:link { background: transparent; color: #0000ff; + text-decoration: none; } +a.navbar:visited { background: transparent; color: #204080; + text-decoration: none; } + +/* Lists */ +ul { margin-top: 0; } diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..d2fca35 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> +<html> +<head> + <title> API Documentation </title> +</head> +<frameset cols="20%,80%"> + <frameset rows="30%,70%"> + <frame src="public/toc.html" name="moduleListFrame"> + <frame src="public/toc-everything.html" name="moduleFrame"> + </frameset> + <frame src="public/paramiko-module.html" name="mainFrame"> +</frameset> +</html> diff --git a/docs/private/__builtin__.object-class.html b/docs/private/__builtin__.object-class.html new file mode 100644 index 0000000..1ac54de --- /dev/null +++ b/docs/private/__builtin__.object-class.html @@ -0,0 +1,286 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>__builtin__.object</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module __builtin__ :: + Class object + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/__builtin__.object-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.object-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type object</h2> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a>, + <a href="paramiko.Channel-class.html"><code>Channel</code></a>, + <a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a>, + <a href="paramiko.Message-class.html"><code>Message</code></a>, + <a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a>, + <a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a>, + <a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a>, + <a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a>, + <a href="__builtin__.type-class.html"><code>type</code></a>, + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a>, + <a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a>, + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a>, + <a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a>, + <a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a>, + <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a>, + <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a>, + <a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a>, + <a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a>, + <a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a>, + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a>, + <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a>, + <a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a>, + <a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a>, + <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a>, + <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a>, + <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a>, + <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></dd></dl> + +<hr/> + +The most base type +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td> + <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span> + <br /><i>(Constructor)</i> + </h3> + x.__init__(...) initializes x; see x.__class__.__doc__ for + signature + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__delattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__delattr__('name') <==> del x.name + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__getattribute__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__getattribute__('name') <==> x.name + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__hash__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Hashing function)</i> + </h3> + x.__hash__() <==> hash(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +hash(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__new__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>, + <span class=sig-arg>S</span>, + <span class="sig-vararg">...</span>)</span> + </h3> + T.__new__(S, ...) -> a new object with type S, a subtype of T + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +a new object with type S, a subtype of T +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__reduce__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + helper for pickle + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__reduce_ex__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + helper for pickle + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + x.__repr__() <==> repr(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +repr(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__setattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__setattr__('name', value) <==> x.name = value + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + x.__str__() <==> str(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +str(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/__builtin__.type-class.html b/docs/private/__builtin__.type-class.html new file mode 100644 index 0000000..0f1957a --- /dev/null +++ b/docs/private/__builtin__.type-class.html @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>__builtin__.type</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module __builtin__ :: + Class type + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/__builtin__.type-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.type-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type type</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>type</b> +</pre><br /> + +<hr/> + +type(object) -> the object's type type(name, bases, dict) -> a +new type +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__call__(...) <==> x(...)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>, + <span class=summary-sig-arg>y</span>)</span></code> +<br /> +x.__cmp__(y) <==> cmp(x,y)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code> +<br /> +__subclasses__() -> list of immediate subclasses</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code> +<br /> +return a type's method resolution order</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td> + <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(<type 'object'>,)"><code>(<type 'object'>,) </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="420">420 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="21995">21995 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(<type 'type'>, <type 'object'>)"><code>(<type 'type'>, <type 'object'>) </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__call__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>, + <span class="sig-vararg">...</span>)</span> + <br /><i>(Call operator)</i> + </h3> + x.__call__(...) <==> x(...) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +x(...) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__cmp__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>, + <span class=sig-arg>y</span>)</span> + <br /><i>(Comparison operator)</i> + </h3> + x.__cmp__(y) <==> cmp(x,y) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +cmp(x,y) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__delattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__delattr__('name') <==> del x.name + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__getattribute__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__getattribute__('name') <==> x.name + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__hash__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Hashing function)</i> + </h3> + x.__hash__() <==> hash(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +hash(x) +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__new__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>, + <span class=sig-arg>S</span>, + <span class="sig-vararg">...</span>)</span> + </h3> + T.__new__(S, ...) -> a new object with type S, a subtype of T + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +a new object with type S, a subtype of T +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + x.__repr__() <==> repr(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +repr(x) +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__setattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__setattr__('name', value) <==> x.name = value + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__subclasses__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span> + </h3> + __subclasses__() -> list of immediate subclasses + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +list of immediate subclasses </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="mro"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">mro</span>()</span> + </h3> + return a type's method resolution order + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +list </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__bases__"></a> +<h3>__bases__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="(<type 'object'>,)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +(<type 'object'>,) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__basicsize__"></a> +<h3>__basicsize__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="420"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +420 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__dictoffset__"></a> +<h3>__dictoffset__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="132"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +132 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__flags__"></a> +<h3>__flags__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="21995"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +21995 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__itemsize__"></a> +<h3>__itemsize__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__mro__"></a> +<h3>__mro__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="(<type 'type'>, <type 'object'>)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +(<type 'type'>, <type 'object'>) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__name__"></a> +<h3>__name__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'type'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__weakrefoffset__"></a> +<h3>__weakrefoffset__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="184"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +184 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/epydoc.css b/docs/private/epydoc.css new file mode 100644 index 0000000..46080bd --- /dev/null +++ b/docs/private/epydoc.css @@ -0,0 +1,100 @@ + +/* Body color */ +body { background: #ffffff; color: #000000; } + +/* Tables */ +table.summary, table.details, table.index + { background: #e8f0f8; color: #000000; } +tr.summary, tr.details, tr.index + { background: #70b0f0; color: #000000; + text-align: left; font-size: 120%; } +tr.group { background: #c0e0f8; color: #000000; + text-align: left; font-size: 120%; + font-style: italic; } + +/* Documentation page titles */ +h2.module { margin-top: 0.2em; } +h2.class { margin-top: 0.2em; } + +/* Headings */ +h1.heading { font-size: +140%; font-style: italic; + font-weight: bold; } +h2.heading { font-size: +125%; font-style: italic; + font-weight: bold; } +h3.heading { font-size: +110%; font-style: italic; + font-weight: normal; } + +/* Base tree */ +pre.base-tree { font-size: 80%; margin: 0; } + +/* Details Sections */ +table.func-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.func-detail { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +table.var-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.var-details { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +/* Function signatures */ +.sig { background: transparent; color: #000000; + font-weight: bold; } +.sig-name { background: transparent; color: #006080; } +.sig-arg, .sig-kwarg, .sig-vararg + { background: transparent; color: #008060; } +.sig-default { background: transparent; color: #602000; } +.summary-sig { background: transparent; color: #000000; } +.summary-sig-name { background: transparent; color: #204080; } +.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg + { background: transparent; color: #008060; } + +/* Doctest blocks */ +.py-src { background: transparent; color: #000000; } +.py-prompt { background: transparent; color: #005050; + font-weight: bold;} +.py-string { background: transparent; color: #006030; } +.py-comment { background: transparent; color: #003060; } +.py-keyword { background: transparent; color: #600000; } +.py-output { background: transparent; color: #404040; } +pre.doctestblock { background: #f4faff; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } +table pre.doctestblock + { background: #dce4ec; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } + +/* Variable values */ +pre.variable { background: #dce4ec; color: #000000; + padding: .5em; margin: 0; + border: 1px solid #708890; } +.variable-linewrap { background: transparent; color: #604000; } +.variable-ellipsis { background: transparent; color: #604000; } +.variable-quote { background: transparent; color: #604000; } +.re { background: transparent; color: #000000; } +.re-char { background: transparent; color: #006030; } +.re-op { background: transparent; color: #600000; } +.re-group { background: transparent; color: #003060; } +.re-ref { background: transparent; color: #404040; } + +/* Navigation bar */ +table.navbar { background: #a0c0ff; color: #0000ff; + border: 2px groove #c0d0d0; } +th.navbar { background: #a0c0ff; color: #0000ff; } +th.navselect { background: #70b0ff; color: #000000; } +.nomargin { margin: 0; } + +/* Links */ +a:link { background: transparent; color: #0000ff; } +a:visited { background: transparent; color: #204080; } +a.navbar:link { background: transparent; color: #0000ff; + text-decoration: none; } +a.navbar:visited { background: transparent; color: #204080; + text-decoration: none; } + +/* Lists */ +ul { margin-top: 0; } diff --git a/docs/private/exceptions.Exception-class.html b/docs/private/exceptions.Exception-class.html new file mode 100644 index 0000000..4b99d99 --- /dev/null +++ b/docs/private/exceptions.Exception-class.html @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>exceptions.Exception</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module exceptions :: + Class Exception + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/exceptions.Exception-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="exceptions.Exception-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class Exception</h2> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a>, + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a>, + <a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a>, + <a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></dd></dl> + +<hr/> + +Common base class for all exceptions. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__getitem__"></a><span class="summary-sig"><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/frames.html b/docs/private/frames.html new file mode 100644 index 0000000..77678a0 --- /dev/null +++ b/docs/private/frames.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> +<html> +<head> + <title> API Documentation </title> +</head> +<frameset cols="20%,80%"> + <frameset rows="30%,70%"> + <frame src="toc.html" name="moduleListFrame"> + <frame src="toc-everything.html" name="moduleFrame"> + </frameset> + <frame src="paramiko-module.html" name="mainFrame"> +</frameset> +</html> diff --git a/docs/private/help.html b/docs/private/help.html new file mode 100644 index 0000000..5aab6d0 --- /dev/null +++ b/docs/private/help.html @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Help</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Help </th> + <th class="navbar" width="100%"></th> + </tr> +</table> +<table width="100%" cellpadding="0" cellspacing="0"> + <tr valign="top"> + <td width="100%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/help.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="help.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<center><h2> API Documentation </h2></center> + +<p> This document contains the API (Application Programming Interface) +documentation for this project. Documentation for the Python +objects defined by the project is divided into separate pages for each +package, module, and class. The API documentation also includes two +pages containing information about the project as a whole: a trees +page, and an index page. </p> + +<h2> Object Documentation </h2> + + <p>Each <b>Package Documentation</b> page contains: + <ul> + <li> A description of the package. </li> + <li> A list of the modules and sub-packages contained by the + package. </li> + <li> A summary of the classes defined by the package. </li> + <li> A summary of the functions defined by the package. </li> + <li> A summary of the variables defined by the package. </li> + <li> A detailed description of each function defined by the + package. </li> + <li> A detailed description of each variable defined by the + package. </li> + </ul></p> + + <p>Each <b>Module Documentation</b> page contains: + <ul> + <li> A description of the module. </li> + <li> A summary of the classes defined by the module. </li> + <li> A summary of the functions defined by the module. </li> + <li> A summary of the variables defined by the module. </li> + <li> A detailed description of each function defined by the + module. </li> + <li> A detailed description of each variable defined by the + module. </li> + </ul></p> + + <p>Each <b>Class Documentation</b> page contains: + <ul> + <li> A class inheritance diagram. </li> + <li> A list of known subclasses. </li> + <li> A description of the class. </li> + <li> A summary of the methods defined by the class. </li> + <li> A summary of the instance variables defined by the class. </li> + <li> A summary of the class (static) variables defined by the + class. </li> + <li> A detailed description of each method defined by the + class. </li> + <li> A detailed description of each instance variable defined by the + class. </li> + <li> A detailed description of each class (static) variable defined + by the class. </li> + </ul></p> + +<h2> Project Documentation </h2> + + <p> The <b>Trees</b> page contains the module and class hierarchies: + <ul> + <li> The <i>module hierarchy</i> lists every package and module, with + modules grouped into packages. At the top level, and within each + package, modules and sub-packages are listed alphabetically. </li> + <li> The <i>class hierarchy</i> lists every class, grouped by base + class. If a class has more than one base class, then it will be + listed under each base class. At the top level, and under each base + class, classes are listed alphabetically. </li> + </ul></p> + + <p> The <b>Index</b> page contains indices of terms and + identifiers: + <ul> + <li> The <i>term index</i> lists every term indexed by any object's + documentation. For each term, the index provides links to each + place where the term is indexed. </li> + <li> The <i>identifier index</i> lists the (short) name of every package, + module, class, method, function, variable, and parameter. For each + identifier, the index provides a short description, and a link to + its documentation. </li> + </ul></p> + +<h2> The Table of Contents </h2> + +<p> The table of contents occupies the two frames on the left side of +the window. The upper-left frame displays the <i>project +contents</i>, and the lower-left frame displays the <i>module +contents</i>: </p> + +<center> +<table class="summary" border="1" cellspacing="0" cellpadding="3"> + <tr heigh="30%"> + <td align="center"> + <font size="-1">Project<br>Contents<hr>...</font></td> + <td align="center" rowspan="2" width="70%"> + API<br>Documentation<br>Frame<br><br><br> + </td> + </tr> + <tr> + <td align="center"> + <font size="-1">Module<br>Contents<hr> <br>...<br> </font> + </td> + </tr> +</table><br> +</center> + +<p> The <b>project contents frame</b> contains a list of all packages +and modules that are defined by the project. Clicking on an entry +will display its contents in the module contents frame. Clicking on a +special entry, labeled "Everything," will display the contents of +the entire project. </p> + +<p> The <b>module contents frame</b> contains a list of every +submodule, class, type, exception, function, and variable defined by a +module or package. Clicking on an entry will display its +documentation in the API documentation frame. Clicking on the name of +the module, at the top of the frame, will display the documentation +for the module itself. </p> + +<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top +navigation bar can be used to control whether the table of contents is +displayed or not. </p> + +<h2> The Navigation Bar </h2> + +<p> A navigation bar is located at the top and bottom of every page. +It indicates what type of page you are currently viewing, and allows +you to go to related pages. The following table describes the labels +on the navigation bar. Note that not some labels (such as +[Parent]) are not displayed on all pages. </p> + +<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%"> +<tr class="summary"> + <th>Label</th> + <th>Highlighted when...</th> + <th>Links to...</th> +</tr> + <tr><td valign="top"><b>[Parent]</b></td> + <td valign="top"><i>(never highlighted)</i></td> + <td valign="top"> the parent of the current package </td></tr> + <tr><td valign="top"><b>[Package]</b></td> + <td valign="top">viewing a package</td> + <td valign="top">the package containing the current object + </td></tr> + <tr><td valign="top"><b>[Module]</b></td> + <td valign="top">viewing a module</td> + <td valign="top">the module containing the current object + </td></tr> + <tr><td valign="top"><b>[Class]</b></td> + <td valign="top">viewing a class </td> + <td valign="top">the class containing the current object</td></tr> + <tr><td valign="top"><b>[Trees]</b></td> + <td valign="top">viewing the trees page</td> + <td valign="top"> the trees page </td></tr> + <tr><td valign="top"><b>[Index]</b></td> + <td valign="top">viewing the index page</td> + <td valign="top"> the index page </td></tr> + <tr><td valign="top"><b>[Help]</b></td> + <td valign="top">viewing the help page</td> + <td valign="top"> the help page </td></tr> +</table> + +<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below +the top navigation bar can be used to control whether documentation +for private objects is displayed. Private objects are usually defined +as objects whose (short) names begin with a single underscore, but do +not end with an underscore. For example, "<code>_x</code>", +"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>" +are private objects; but "<code>re.sub</code>", +"<code>__init__</code>", and "<code>type_</code>" are not. However, +if a module defines the "<code>__all__</code>" variable, then its +contents are used to decide which objects are private. </p> + +<p> A timestamp below the bottom navigation bar indicates when each +page was last updated. </p> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Help </th> + <th class="navbar" width="100%"></th> + </tr> +</table> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr> + <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/index.html b/docs/private/index.html new file mode 100644 index 0000000..77678a0 --- /dev/null +++ b/docs/private/index.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> +<html> +<head> + <title> API Documentation </title> +</head> +<frameset cols="20%,80%"> + <frameset rows="30%,70%"> + <frame src="toc.html" name="moduleListFrame"> + <frame src="toc-everything.html" name="moduleFrame"> + </frameset> + <frame src="paramiko-module.html" name="mainFrame"> +</frameset> +</html> diff --git a/docs/private/indices.html b/docs/private/indices.html new file mode 100644 index 0000000..752a39a --- /dev/null +++ b/docs/private/indices.html @@ -0,0 +1,1635 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Index</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Index </th> + <th class="navbar"> <a class="navbar" 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%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/indices.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="indices.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> +<br /> + +<!-- =========== START OF IDENTIFIER INDEX =========== --> +<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="index"> + <th colspan="2">Identifier Index</th></tr> + <tr><td width="15%"><a href="../private/paramiko-module.html#__author__"><code>__author__</code></a></td> + <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__bootstrap"><code>__bootstrap</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html#__call__"><code>__call__</code></a></td> + <td>Method in class <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html#__call__"><code>__call__</code></a></td> + <td>Method in class <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__cmp__"><code>__cmp__</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko-module.html#__date__"><code>__date__</code></a></td> + <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__delete"><code>__delete</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__getitem__"><code>__getitem__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.Formatter-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.Formatter-class.html"><code>paramiko.logging22.Formatter</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading._Verbose-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__iter__"><code>__iter__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko-module.html#__license__"><code>__license__</code></a></td> + <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></td> + <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__stop"><code>__stop</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko-module.html#__version__"><code>__version__</code></a></td> + <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko-module.html#__version_info__"><code>__version_info__</code></a></td> + <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_activate_inbound"><code>_activate_inbound</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_activate_outbound"><code>_activate_outbound</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.transport-module.html#_active_threads"><code>_active_threads</code></a></td> + <td>Variable in module <a href="paramiko.transport-module.html"><code>paramiko.transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Message-class.html#_add"><code>_add</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd"><code>_adjust_cwd</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_async_request"><code>_async_request</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_async_response"><code>_async_response</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_auth_trigger"><code>_auth_trigger</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_build_packet"><code>_build_packet</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_channel_handler_table"><code>_channel_handler_table</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_check_add_window"><code>_check_add_window</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_check_banner"><code>_check_banner</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_check_exception"><code>_check_exception</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_check_file"><code>_check_file</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_check_keepalive"><code>_check_keepalive</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_cipher_info"><code>_cipher_info</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td> + <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td> + <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td> + <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td> + <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_CLIENT_ID"><code>_CLIENT_ID</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_close_internal"><code>_close_internal</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_compression_info"><code>_compression_info</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_compute_key"><code>_compute_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_convert_pflags"><code>_convert_pflags</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_convert_status"><code>_convert_status</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_debug_str"><code>_debug_str</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_disconnect_no_more_auth"><code>_disconnect_no_more_auth</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_disconnect_service_not_available"><code>_disconnect_service_not_available</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_expect_packet"><code>_expect_packet</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_feed"><code>_feed</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_feed_extended"><code>_feed_extended</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_finish_responses"><code>_finish_responses</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_APPEND"><code>_FLAG_APPEND</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_BINARY"><code>_FLAG_BINARY</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_BUFFERED"><code>_FLAG_BUFFERED</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED"><code>_FLAG_LINE_BUFFERED</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_READ"><code>_FLAG_READ</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE"><code>_FLAG_UNIVERSAL_NEWLINE</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_WRITE"><code>_FLAG_WRITE</code></a></td> + <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_from_msg"><code>_from_msg</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.DSSKey-class.html#_from_private_key_file"><code>_from_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.RSAKey-class.html#_from_private_key_file"><code>_from_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_counter"><code>_g_thread_counter</code></a></td> + <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_ids"><code>_g_thread_ids</code></a></td> + <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_lock"><code>_g_thread_lock</code></a></td> + <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes-module.html#_generate_prime"><code>_generate_prime</code></a></td> + <td>Function in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_generate_x"><code>_generate_x</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_generate_x"><code>_generate_x</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_cipher"><code>_get_cipher</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_ciphers"><code>_get_ciphers</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_compression"><code>_get_compression</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_digests"><code>_get_digests</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_kex"><code>_get_kex</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_key_types"><code>_get_key_types</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_modulus_pack"><code>_get_modulus_pack</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_get_name"><code>_get_name</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_get_next_files"><code>_get_next_files</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_get_session_blob"><code>_get_session_blob</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_get_size"><code>_get_size</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_get_size"><code>_get_size</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_subsystem_handler"><code>_get_subsystem_handler</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_close"><code>_handle_close</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_eof"><code>_handle_eof</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_request"><code>_handle_request</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_handler_table"><code>_handler_table</code></a></td> + <td>Variable in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_handler_table"><code>_handler_table</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.sftp_server-module.html#_hash_class"><code>_hash_class</code></a></td> + <td>Variable in module <a href="paramiko.sftp_server-module.html"><code>paramiko.sftp_server</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_interactive_query"><code>_interactive_query</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.transport-module.html#_join_lingering_threads"><code>_join_lingering_threads</code></a></td> + <td>Function in module <a href="paramiko.transport-module.html"><code>paramiko.transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_kex_info"><code>_kex_info</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_key_info"><code>_key_info</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_log"><code>_log</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_log"><code>_log</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_log"><code>_log</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_log"><code>_log</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#_logger"><code>_logger</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_mac_info"><code>_mac_info</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_modulus_pack"><code>_modulus_pack</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP"><code>_MSG_KEXDH_GEX_GROUP</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT"><code>_MSG_KEXDH_GEX_INIT</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY"><code>_MSG_KEXDH_GEX_REPLY</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST"><code>_MSG_KEXDH_GEX_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT"><code>_MSG_KEXDH_INIT</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY"><code>_MSG_KEXDH_REPLY</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_negotiate_keys"><code>_negotiate_keys</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading._Verbose-class.html#_note"><code>_note</code></a></td> + <td>Method in class <a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_open_folder"><code>_open_folder</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_pack"><code>_pack</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open"><code>_parse_channel_open</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open_failure"><code>_parse_channel_open_failure</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open_success"><code>_parse_channel_open_success</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_debug"><code>_parse_debug</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_disconnect"><code>_parse_disconnect</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_global_request"><code>_parse_global_request</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_kex_init"><code>_parse_kex_init</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_group"><code>_parse_kexdh_gex_group</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_init"><code>_parse_kexdh_gex_init</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_reply"><code>_parse_kexdh_gex_reply</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_request"><code>_parse_kexdh_gex_request</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_init"><code>_parse_kexdh_init</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_reply"><code>_parse_kexdh_reply</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#_parse_modulus"><code>_parse_modulus</code></a></td> + <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_newkeys"><code>_parse_newkeys</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_request_failure"><code>_parse_request_failure</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_request_success"><code>_parse_request_success</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_service_accept"><code>_parse_service_accept</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_service_request"><code>_parse_service_request</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_banner"><code>_parse_userauth_banner</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_failure"><code>_parse_userauth_failure</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_info_request"><code>_parse_userauth_info_request</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_info_response"><code>_parse_userauth_info_response</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_request"><code>_parse_userauth_request</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_success"><code>_parse_userauth_success</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.util-module.html#_pfilter"><code>_pfilter</code></a></td> + <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.RSAKey-class.html#_pkcs1imify"><code>_pkcs1imify</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_ciphers"><code>_preferred_ciphers</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_compression"><code>_preferred_compression</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_kex"><code>_preferred_kex</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_keys"><code>_preferred_keys</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_macs"><code>_preferred_macs</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_prefetch"><code>_prefetch</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_process"><code>_process</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_PROTO_ID"><code>_PROTO_ID</code></a></td> + <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_py22_read_all"><code>_py22_read_all</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_py22_read_timeout"><code>_py22_read_timeout</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_read"><code>_read</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#_read"><code>_read</code></a></td> + <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_read"><code>_read</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_read"><code>_read</code></a></td> + <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Agent-class.html#_read_all"><code>_read_all</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_read_all"><code>_read_all</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_read_folder"><code>_read_folder</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet"><code>_read_packet</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_read_prefetch"><code>_read_prefetch</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_read_private_key_file"><code>_read_private_key_file</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_read_response"><code>_read_response</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_read_timeout"><code>_read_timeout</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_record_newline"><code>_record_newline</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_request"><code>_request</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_request_auth"><code>_request_auth</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_request_failed"><code>_request_failed</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_request_success"><code>_request_success</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_response"><code>_response</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes-module.html#_roll_random"><code>_roll_random</code></a></td> + <td>Function in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SubsystemHandler-class.html#_run"><code>_run</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_rwx"><code>_rwx</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_send_auth_result"><code>_send_auth_result</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_send_eof"><code>_send_eof</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_send_handle_response"><code>_send_handle_response</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_kex_init"><code>_send_kex_init</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Agent-class.html#_send_message"><code>_send_message</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_message"><code>_send_message</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet"><code>_send_packet</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version"><code>_send_server_version</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_send_status"><code>_send_status</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_user_message"><code>_send_user_message</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_version"><code>_send_version</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set"><code>_set</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_ciphers"><code>_set_ciphers</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_closed"><code>_set_closed</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_compression"><code>_set_compression</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#_set_daemon"><code>_set_daemon</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_digests"><code>_set_digests</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_set_files"><code>_set_files</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_set_K_H"><code>_set_K_H</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_kex"><code>_set_kex</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_key_types"><code>_set_key_types</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_set_mode"><code>_set_mode</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_set_name"><code>_set_name</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_remote_channel"><code>_set_remote_channel</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_transport"><code>_set_transport</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_window"><code>_set_window</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td> + <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td> + <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td> + <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td> + <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.sftp_client-module.html#_to_unicode"><code>_to_unicode</code></a></td> + <td>Function in module <a href="paramiko.sftp_client-module.html"><code>paramiko.sftp_client</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_transport"><code>_transport</code></a></td> + <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_trigger_rekey"><code>_trigger_rekey</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_unlink"><code>_unlink</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_unlink_channel"><code>_unlink_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_unpack"><code>_unpack</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a></td> + <td>Class in module <code>threading</code></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_verify_key"><code>_verify_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.sftp-module.html#_VERSION"><code>_VERSION</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_wait_for_send_window"><code>_wait_for_send_window</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_window_adjust"><code>_window_adjust</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_write"><code>_write</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#_write"><code>_write</code></a></td> + <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_write"><code>_write</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_write"><code>_write</code></a></td> + <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_write_all"><code>_write_all</code></a></td> + <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_write_all"><code>_write_all</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_write_private_key_file"><code>_write_private_key_file</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#abort"><code>abort</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#accept"><code>accept</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add"><code>add</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_boolean"><code>add_boolean</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_byte"><code>add_byte</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_bytes"><code>add_bytes</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_int"><code>add_int</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_int64"><code>add_int64</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_list"><code>add_list</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_mpint"><code>add_mpint</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt"><code>add_prompt</code></a></td> + <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#add_server_key"><code>add_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_string"><code>add_string</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#addFilter"><code>addFilter</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#addHandler"><code>addHandler</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html"><code>Agent</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html"><code>agent</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></td> + <td>Variable in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><code>allowed_types</code></a></td> + <td>Variable in class <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_FAILED"><code>AUTH_FAILED</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_interactive"><code>auth_interactive</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_interactive"><code>auth_interactive</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_none"><code>auth_none</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_none"><code>auth_none</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_password"><code>auth_password</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_password"><code>auth_password</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_publickey"><code>auth_publickey</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_publickey"><code>auth_publickey</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL"><code>AUTH_SUCCESSFUL</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber-module.html"><code>ber</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a></td> + <td>Class in module <a href="../private/paramiko.ber-module.html"><code>paramiko.ber</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a></td> + <td>Class in module <a href="../private/paramiko.ber-module.html"><code>paramiko.ber</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#bit_length"><code>bit_length</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#can_sign"><code>can_sign</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#can_sign"><code>can_sign</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#can_sign"><code>can_sign</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#canonicalize"><code>canonicalize</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html"><code>Channel</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.channel-module.html"><code>channel</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></td> + <td>Class in module <a href="../private/paramiko.channel-module.html"><code>paramiko.channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#chattr"><code>chattr</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#chattr"><code>chattr</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chdir"><code>chdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#check"><code>check</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive"><code>check_auth_interactive</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response"><code>check_auth_interactive_response</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_none"><code>check_auth_none</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_password"><code>check_auth_password</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_publickey"><code>check_auth_publickey</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_exec_request"><code>check_channel_exec_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request"><code>check_channel_pty_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_request"><code>check_channel_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request"><code>check_channel_shell_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request"><code>check_channel_subsystem_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request"><code>check_channel_window_change_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_global_request"><code>check_global_request</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chmod"><code>chmod</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chown"><code>chown</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#clear"><code>clear</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#clear"><code>clear</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html"><code>common</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress-module.html"><code>compress</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#connect"><code>connect</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE"><code>CONNECTION_FAILED_CODE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#convert_errno"><code>convert_errno</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#CRITICAL"><code>CRITICAL</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#CRITICAL"><code>CRITICAL</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#DEBUG"><code>DEBUG</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#DEBUG"><code>DEBUG</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode"><code>decode</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode_next"><code>decode_next</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode_sequence"><code>decode_sequence</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#deflate_long"><code>deflate_long</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER"><code>DISCONNECT_AUTH_CANCELLED_BY_USER</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"><code>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE"><code>DISCONNECT_SERVICE_NOT_AVAILABLE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode"><code>encode</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode_sequence"><code>encode_sequence</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode_tlv"><code>encode_tlv</code></a></td> + <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#ERROR"><code>ERROR</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#ERROR"><code>ERROR</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><code>exc_info</code></td> + <td>Function in module <code>sys</code></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html"><code>Exception</code></a></td> + <td>Class in module <code>exceptions</code></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#exec_command"><code>exec_command</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#file"><code>file</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.file-module.html"><code>file</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#fileno"><code>fileno</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#fileno"><code>fileno</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#fileno"><code>fileno</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util.PFilter-class.html#filter"><code>filter</code></a></td> + <td>Method in class <a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#finish_subsystem"><code>finish_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>finish_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#flush"><code>flush</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary"><code>format_binary</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_line"><code>format_binary_line</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_weird"><code>format_binary_weird</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a></td> + <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#from_private_key_file"><code>from_private_key_file</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#from_stat"><code>from_stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#from_transport"><code>from_transport</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#G"><code>G</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#generate"><code>generate</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#generate"><code>generate</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#generate_key_bytes"><code>generate_key_bytes</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#get"><code>get</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"><code>get_allowed_auths</code></a></td> + <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_base64"><code>get_base64</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_bits"><code>get_bits</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_bits"><code>get_bits</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_bits"><code>get_bits</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_boolean"><code>get_boolean</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_byte"><code>get_byte</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_bytes"><code>get_bytes</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_exception"><code>get_exception</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_fingerprint"><code>get_fingerprint</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_hexdump"><code>get_hexdump</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_hexdump"><code>get_hexdump</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_id"><code>get_id</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_int"><code>get_int</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_int64"><code>get_int64</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#get_keys"><code>get_keys</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_list"><code>get_list</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_log_channel"><code>get_log_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#get_logger"><code>get_logger</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_mac_size_in"><code>get_mac_size_in</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_mac_size_out"><code>get_mac_size_out</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#get_modulus"><code>get_modulus</code></a></td> + <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_mpint"><code>get_mpint</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_pty"><code>get_pty</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_remainder"><code>get_remainder</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_remote_server_key"><code>get_remote_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_security_options"><code>get_security_options</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#get_server"><code>get_server</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_server_key"><code>get_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_so_far"><code>get_so_far</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_string"><code>get_string</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#get_thread_id"><code>get_thread_id</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_transport"><code>get_transport</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#get_username"><code>get_username</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_username"><code>get_username</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#getcwd"><code>getcwd</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#getLogger"><code>getLogger</code></a></td> + <td>Function in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#getName"><code>getName</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#gettimeout"><code>gettimeout</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#gettimeout"><code>gettimeout</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#global_request"><code>global_request</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#hexify"><code>hexify</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#inflate_long"><code>inflate_long</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#INFO"><code>INFO</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#INFO"><code>INFO</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></td> + <td>Class in module <a href="paramiko.server-module.html"><code>paramiko.server</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_shell"><code>invoke_shell</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_subsystem"><code>invoke_subsystem</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#is_active"><code>is_active</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#is_authenticated"><code>is_authenticated</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#is_authenticated"><code>is_authenticated</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#isAlive"><code>isAlive</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#isDaemon"><code>isDaemon</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#join"><code>join</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a></td> + <td>Class in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a></td> + <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></td> + <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#list_folder"><code>list_folder</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir"><code>listdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir_attr"><code>listdir_attr</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#load_host_keys"><code>load_host_keys</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#load_server_moduli"><code>load_server_moduli</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#log"><code>log</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#log_to_file"><code>log_to_file</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a></td> + <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#lookup_ssh_host_config"><code>lookup_ssh_host_config</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#lstat"><code>lstat</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#lstat"><code>lstat</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe-module.html#make_pipe"><code>make_pipe</code></a></td> + <td>Function in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile"><code>makefile</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile_stderr"><code>makefile_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#max_bits"><code>max_bits</code></a></td> + <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html"><code>Message</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.message-module.html"><code>message</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#min_bits"><code>min_bits</code></a></td> + <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#mkdir"><code>mkdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#mkdir"><code>mkdir</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#mod_inverse"><code>mod_inverse</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a></td> + <td>Class in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE"><code>MSG_CHANNEL_CLOSE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA"><code>MSG_CHANNEL_DATA</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF"><code>MSG_CHANNEL_EOF</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA"><code>MSG_CHANNEL_EXTENDED_DATA</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE"><code>MSG_CHANNEL_FAILURE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN"><code>MSG_CHANNEL_OPEN</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE"><code>MSG_CHANNEL_OPEN_FAILURE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS"><code>MSG_CHANNEL_OPEN_SUCCESS</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST"><code>MSG_CHANNEL_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS"><code>MSG_CHANNEL_SUCCESS</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST"><code>MSG_CHANNEL_WINDOW_ADJUST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_DEBUG"><code>MSG_DEBUG</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_DISCONNECT"><code>MSG_DISCONNECT</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST"><code>MSG_GLOBAL_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_IGNORE"><code>MSG_IGNORE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_KEXINIT"><code>MSG_KEXINIT</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_NAMES"><code>MSG_NAMES</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_NEWKEYS"><code>MSG_NEWKEYS</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE"><code>MSG_REQUEST_FAILURE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS"><code>MSG_REQUEST_SUCCESS</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT"><code>MSG_SERVICE_ACCEPT</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST"><code>MSG_SERVICE_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED"><code>MSG_UNIMPLEMENTED</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER"><code>MSG_USERAUTH_BANNER</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE"><code>MSG_USERAUTH_FAILURE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST"><code>MSG_USERAUTH_INFO_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE"><code>MSG_USERAUTH_INFO_RESPONSE</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK"><code>MSG_USERAUTH_PK_OK</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST"><code>MSG_USERAUTH_REQUEST</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS"><code>MSG_USERAUTH_SUCCESS</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#name"><code>name</code></a></td> + <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#name"><code>name</code></a></td> + <td>Variable in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#need_rekey"><code>need_rekey</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></td> + <td>Class in module <a href="../private/paramiko.packet-module.html"><code>paramiko.packet</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#next"><code>next</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#normalize"><code>normalize</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#open"><code>open</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_channel"><code>open_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_session"><code>open_session</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_sftp_client"><code>open_sftp_client</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#P"><code>P</code></a></td> + <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.packet-module.html"><code>packet</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko-module.html"><code>paramiko</code></a></td> + <td>Package</td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#parse_next"><code>parse_next</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#parse_next"><code>parse_next</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#parse_ssh_config"><code>parse_ssh_config</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></td> + <td>Class in module <a href="../private/paramiko.ssh_exception-module.html"><code>paramiko.ssh_exception</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></td> + <td>Class in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html"><code>PKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.pkey-module.html"><code>pkey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a></td> + <td>Class in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#preferred_bits"><code>preferred_bits</code></a></td> + <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#prefetch"><code>prefetch</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes-module.html"><code>primes</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#put"><code>put</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#read"><code>read</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#read"><code>read</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#read_all"><code>read_all</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#read_file"><code>read_file</code></a></td> + <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#read_message"><code>read_message</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readline"><code>readline</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#readline"><code>readline</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readlines"><code>readlines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#readlink"><code>readlink</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#readlink"><code>readlink</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv"><code>recv</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_exit_status"><code>recv_exit_status</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_ready"><code>recv_ready</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr"><code>recv_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr_ready"><code>recv_stderr_ready</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#REKEY_BYTES"><code>REKEY_BYTES</code></a></td> + <td>Variable in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#REKEY_PACKETS"><code>REKEY_PACKETS</code></a></td> + <td>Variable in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#remove"><code>remove</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#remove"><code>remove</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rename"><code>rename</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#rename"><code>rename</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#renegotiate_keys"><code>renegotiate_keys</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#resize_pty"><code>resize_pty</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#rewind"><code>rewind</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rmdir"><code>rmdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#rmdir"><code>rmdir</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#run"><code>run</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#run"><code>run</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#safe_string"><code>safe_string</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#seek"><code>seek</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#seek"><code>seek</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send"><code>send</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send_exit_status"><code>send_exit_status</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#send_ignore"><code>send_ignore</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#send_message"><code>send_message</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send_stderr"><code>send_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall"><code>sendall</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall_stderr"><code>sendall_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server-module.html"><code>server</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#session_ended"><code>session_ended</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#session_started"><code>session_started</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#set"><code>set</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#set"><code>set</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#set_combine_stderr"><code>set_combine_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#set_file_attr"><code>set_file_attr</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#set_forever"><code>set_forever</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#set_forever"><code>set_forever</code></a></td> + <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_hexdump"><code>set_hexdump</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_hexdump"><code>set_hexdump</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_inbound_cipher"><code>set_inbound_cipher</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_inbound_compressor"><code>set_inbound_compressor</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_keepalive"><code>set_keepalive</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_keepalive"><code>set_keepalive</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_log"><code>set_log</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_log_channel"><code>set_log_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#set_name"><code>set_name</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_outbound_cipher"><code>set_outbound_cipher</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_outbound_compressor"><code>set_outbound_compressor</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#set_pipelined"><code>set_pipelined</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_subsystem_handler"><code>set_subsystem_handler</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#setblocking"><code>setblocking</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#setblocking"><code>setblocking</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#setDaemon"><code>setDaemon</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html#setFormatter"><code>setFormatter</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#setLevel"><code>setLevel</code></a></td> + <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#setName"><code>setName</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#settimeout"><code>settimeout</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#settimeout"><code>settimeout</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html"><code>sftp</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown"><code>shutdown</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_read"><code>shutdown_read</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_write"><code>shutdown_write</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#start"><code>start</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#start_client"><code>start_client</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#start_kex"><code>start_kex</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#start_kex"><code>start_kex</code></a></td> + <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#start_server"><code>start_server</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#start_subsystem"><code>start_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>start_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#stop_thread"><code>stop_thread</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a></td> + <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#symlink"><code>symlink</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#symlink"><code>symlink</code></a></td> + <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#tb_strings"><code>tb_strings</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#tell"><code>tell</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html"><code>Thread</code></a></td> + <td>Class in module <code>threading</code></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html"><code>Transport</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.transport-module.html"><code>transport</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#unhexify"><code>unhexify</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#use_compression"><code>use_compression</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html"><code>util</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#utime"><code>utime</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#wait_for_response"><code>wait_for_response</code></a></td> + <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.common-module.html#WARNING"><code>WARNING</code></a></td> + <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#WARNING"><code>WARNING</code></a></td> + <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a></td> + <td>Class in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#write"><code>write</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#write"><code>write</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#write_all"><code>write_all</code></a></td> + <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td> + <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#writelines"><code>writelines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#xreadlines"><code>xreadlines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a></td> + <td>Class in module <a href="../private/paramiko.compress-module.html"><code>paramiko.compress</code></a></td></tr> + <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></td> + <td>Class in module <a href="../private/paramiko.compress-module.html"><code>paramiko.compress</code></a></td></tr> +</table> +<br /> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Index </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko-module.html b/docs/private/paramiko-module.html new file mode 100644 index 0000000..4e9f899 --- /dev/null +++ b/docs/private/paramiko-module.html @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th bgcolor="#70b0f0" class="navselect"> Home </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Package paramiko + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF PACKAGE DESCRIPTION =========== --> +<h2 class="package">Package paramiko</h2> + +<p><i>Paramiko</i> (a combination of the esperanto words for +"paranoid" and "friend") is a module for python 2.3 +or greater that implements the SSH2 protocol for secure (encrypted and +authenticated) connections to remote machines. Unlike SSL (aka TLS), the +SSH2 protocol does not require heirarchical certificates signed by a +powerful central authority. You may know SSH2 as the protocol that +replaced <code>telnet</code> and <code>rsh</code> for secure access to +remote shells, but the protocol also includes the ability to open +arbitrary channels to remote services across an encrypted tunnel. (This +is how <code>sftp</code> works, for example.)</p> +<p>To use this package, pass a socket (or socket-like object) to a <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>, and use <a +href="paramiko.Transport-class.html#start_server" +class="link"><code>start_server</code></a> or <a +href="paramiko.Transport-class.html#start_client" +class="link"><code>start_client</code></a> to negoatite with the remote +host as either a server or client. As a client, you are responsible for +authenticating using a password or private key, and checking the server's +host key. <i>(Key signature and verification is done by paramiko, but you +will need to provide private keys and check that the content of a public +key matches what you expected to see.)</i> As a server, you are +responsible for deciding which users, passwords, and keys to allow, and +what kind of channels to allow.</p> +<p>Once you have finished, either side may request flow-controlled <a +href="paramiko.Channel-class.html" class="link"><code>Channel</code></a>s +to the other side, which are python objects that act like sockets, but +send and receive data over the encrypted session.</p> +<p>Paramiko is written entirely in python (no C or platform-dependent +code) and is released under the GNU Lesser General Public License +(LGPL).</p> +Website: <a +href="http://www.lag.net/paramiko/">http://www.lag.net/paramiko/</a> +<hr/> +<p><b>Version:</b> 1.5.2 (rhydon) +</p> + +<p><b>Author:</b> Robey Pointer +</p> + +<p><b>Contact:</b> robey@lag.net +</p> + +<p><b>License:</b> GNU Lesser General Public License (LGPL) +</p> + + +<!-- =========== START OF SUBMODULES =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Submodules</th></tr> + <tr><td><ul> +<li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i> +<li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a></i> +<li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i> +<li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 "message".</i> +<li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i> +<li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a></i> +<li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support.</i> +<li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b> +<li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b> +<li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i> +<li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a></i> +<li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i> +<li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i> +<li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support.</i> +<li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol.</i> +<li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i> +<li> <b><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></b>: <i><a href="../private/paramiko.AuthHandler-class.html" +class="link"><code>AuthHandler</code></a></i> +<li> <b><a href="../private/paramiko.ber-module.html"><code>ber</code></a></b> +<li> <b><a href="../private/paramiko.channel-module.html"><code>channel</code></a></b>: <i>Abstraction for an SSH2 channel.</i> +<li> <b><a href="../private/paramiko.common-module.html"><code>common</code></a></b>: <i>Common constants and global variables.</i> +<li> <b><a href="../private/paramiko.compress-module.html"><code>compress</code></a></b>: <i>Compression implementations for a Transport.</i> +<li> <b><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></b>: <i>Variant on <a +href="../private/paramiko.kex_group1.KexGroup1-class.html" +class="link"><code>KexGroup1</code></a> where the prime "p" and +generator "g" are provided by the server.</i> +<li> <b><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></b>: <i>Standard SSH key exchange ("kex" if you wanna sound +cool).</i> +<li> <b><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></b>: <i>Stub out logging on python < 2.3.</i> +<li> <b><a href="../private/paramiko.packet-module.html"><code>packet</code></a></b>: <i>Packetizer.</i> +<li> <b><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></b>: <i>Abstraction of a one-way pipe where the read end can be used in +select().</i> +<li> <b><a href="../private/paramiko.primes-module.html"><code>primes</code></a></b>: <i>Utility functions for dealing with primes.</i> +<li> <b><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></b>: <i>Exceptions defined by paramiko.</i> + </ul></td></tr> +</table><br /> + + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.Agent-class.html"><code>Agent</code></a></b></td> + <td>Client interface for using private keys from an SSH agent running on +the local machine.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></b></td> + <td>Private key held in a local SSH agent.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></b></td> + <td>Reusable base class to implement python-style file buffering around a +simpler stream.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Channel-class.html"><code>Channel</code></a></b></td> + <td>A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></b></td> + <td>Representation of a DSS key which can be used to sign an verify SSH2 +data.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Message-class.html"><code>Message</code></a></b></td> + <td>An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s).</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></b></td> + <td>Representation of an RSA key which can be used to sign and verify SSH2 +data.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></b></td> + <td>Simple object containing the security preferences of an ssh +transport.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></b></td> + <td>an alias for <a href="paramiko.SFTPClient-class.html" +class="link"><code>SFTPClient</code></a> for backwards compatability</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></b></td> + <td>Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></b></td> + <td>SFTP client object.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></b></td> + <td>Proxy object for a file on the remote server, in client mode SFTP.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></b></td> + <td>Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></b></td> + <td>Server-side SFTP subsystem support.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></b></td> + <td>Handler for a subsytem in server mode.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Transport-class.html"><code>Transport</code></a></b></td> + <td>An SSH Transport attaches to a stream (usually a socket), negotiates +an encrypted session, authenticates, and then creates stream tunnels, +called <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>s, across the session.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a></b></td> + <td>Internal class to handle the mechanics of authentication.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></b></td> + <td>A file-like wrapper around <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a></b></td> + <td>Implementation of the base SSH packet protocol.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.PKey-class.html"><code>PKey</code></a></b></td> + <td>Base class for public keys.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a></b></td> + <td>This class defines an interface for controlling the behavior of +paramiko in server mode.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a></b></td> + <td>This class defines an interface for controlling the behavior of +paramiko when using the <a href="paramiko.SFTPServer-class.html" +class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP +server.</td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ServerInterface-class.html"><code>x</code></a></b></td> + <td>This class defines an interface for controlling the behavior of +paramiko in server mode.</td></tr> +</table><br /> + + +<!-- =========== START OF EXCEPTIONS =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Exceptions</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></b></td> + <td>Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></b></td> + <td>Exception raised when a password is needed to unlock a private key +file.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></b></td> + <td>Exception raised by failures in SSH2 protocol negotiation or logic +errors.</td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko-module.html#__author__"><code>__author__</code></a></b> = <span title="'Robey Pointer <robey@lag.net>'"><code><span class="variable-quote">'</span>Robey Pointer <robey@lag.net><span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko-module.html#__date__"><code>__date__</code></a></b> = <span title="'04 Dec 2005'"><code><span class="variable-quote">'</span>04 Dec 2005<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko-module.html#__license__"><code>__license__</code></a></b> = <span title="'GNU Lesser General Public License (LGPL)'"><code><span class="variable-quote">'</span>GNU Lesser General Public License (LGPL)<span class="variable-quote">'<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko-module.html#__version__"><code>__version__</code></a></b> = <span title="'1.5.2 (rhydon)'"><code><span class="variable-quote">'</span>1.5.2 (rhydon)<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko-module.html#__version_info__"><code>__version_info__</code></a></b> = <span title="(1, 5, 2)"><code>(1, 5, 2) </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__author__"></a> +<h3>__author__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'Robey Pointer <robey@lag.net>'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>Robey Pointer <robey@lag.net><span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__date__"></a> +<h3>__date__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'04 Dec 2005'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>04 Dec 2005<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__license__"></a> +<h3>__license__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'GNU Lesser General Public License (LGPL)'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>GNU Lesser General Public License (LGPL)<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__version__"></a> +<h3>__version__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'1.5.2 (rhydon)'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>1.5.2 (rhydon)<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__version_info__"></a> +<h3>__version_info__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="(1, 5, 2)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +(1, 5, 2) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th bgcolor="#70b0f0" class="navselect"> Home </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.Agent-class.html b/docs/private/paramiko.Agent-class.html new file mode 100644 index 0000000..1f4e20b --- /dev/null +++ b/docs/private/paramiko.Agent-class.html @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Agent + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.Agent-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Agent-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class Agent</h2> + +<hr/> + +<p>Client interface for using private keys from an SSH agent running on +the local machine. If an SSH agent is running, this class can be used to +connect to it and retreive <a href="../private/paramiko.PKey-class.html" +class="link"><code>PKey</code></a> objects which can be used when +attempting to authenticate to remote SSH servers.</p> +Because the SSH agent protocol uses environment variables and +unix-domain sockets, this probably doesn't work on Windows. It does work +on most posix platforms though (Linux and MacOS X, for example). +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Open a session with the local machine's SSH agent, if one is +running.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SSH agent connection.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> tuple of <a href="paramiko.AgentKey-class.html" + class="link"><code>AgentKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#get_keys" class="summary-sig-name"><code>get_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the list of keys available through the SSH agent, if any.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_read_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>wanted</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_message"></a><span class="summary-sig"><span class="summary-sig-name">_send_message</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Open a session with the local machine's SSH agent, if one is + running. If no agent is running, initialization will succeed, but <a + href="paramiko.Agent-class.html#get_keys" + class="link"><code>get_keys</code></a> will return an empty tuple. + <dl><dt></dt><dd> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if an SSH agent is found, but speaks an incompatible + protocol + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the SSH agent connection. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="get_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_keys</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the list of keys available through the SSH agent, if any. If + no SSH agent was running (or it couldn't be contacted), an empty list + will be returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a list of keys available on the SSH agent + <br /><i> + (type=tuple of <a href="paramiko.AgentKey-class.html" + class="link"><code>AgentKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.AgentKey-class.html b/docs/private/paramiko.AgentKey-class.html new file mode 100644 index 0000000..28b1659 --- /dev/null +++ b/docs/private/paramiko.AgentKey-class.html @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.AgentKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class AgentKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.AgentKey-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.AgentKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type AgentKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>AgentKey</b> +</pre><br /> + +<hr/> + +Private key held in a local SSH agent. This type of key can be used +for authenticating to a remote server (signing). Most other key +operations work as expected. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>agent</span>, + <span class=summary-sig-arg>blob</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>randpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Sign a blob of data with this private key, and return a <a +href="paramiko.Message-class.html" class="link"><code>Message</code></a> +representing an SSH signature message.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>other</span>)</span></code> +<br /> +Compare this key to another.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Read an SSH2-format private key file, looking for a string of the type +<code>"BEGIN xxx PRIVATE KEY"</code> for some <code>xxx</code>, +base64-decode the text we find, and return it as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write an SSH2-format private key file in a form that can be read by +paramiko or openssh.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Create a key object by reading a private key file. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a base64 string containing the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an MD5 fingerprint of the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC': {'blocksize': 8, 'ciphe<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="sign_ssh_data"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>randpool</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Sign a blob of data with this private key, and return a <a + href="paramiko.Message-class.html" + class="link"><code>Message</code></a> representing an SSH signature + message. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>randpool</b></code> - + a secure random number generator. + <br /><i> + (type=<code>Crypto.Util.randpool.RandomPool</code>)</i> + <dd><code><b>data</b></code> - + the data to sign. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SSH signature message. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>paramiko.PKey.sign_ssh_data</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.AuthHandler-class.html b/docs/private/paramiko.AuthHandler-class.html new file mode 100644 index 0000000..7c2b235 --- /dev/null +++ b/docs/private/paramiko.AuthHandler-class.html @@ -0,0 +1,282 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.AuthHandler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class AuthHandler + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.AuthHandler-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type AuthHandler</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>AuthHandler</b> +</pre><br /> + +<hr/> + +Internal class to handle the mechanics of authentication. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_disconnect_no_more_auth"></a><span class="summary-sig"><span class="summary-sig-name">_disconnect_no_more_auth</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_disconnect_service_not_available"></a><span class="summary-sig"><span class="summary-sig-name">_disconnect_service_not_available</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_session_blob"></a><span class="summary-sig"><span class="summary-sig-name">_get_session_blob</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>service</span>, + <span class=summary-sig-arg>username</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_interactive_query"></a><span class="summary-sig"><span class="summary-sig-name">_interactive_query</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>q</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_service_accept"></a><span class="summary-sig"><span class="summary-sig-name">_parse_service_accept</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_service_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_service_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_banner"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_banner</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_failure</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_info_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_info_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_info_response"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_info_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_userauth_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_success</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_request_auth"></a><span class="summary-sig"><span class="summary-sig-name">_request_auth</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_auth_result"></a><span class="summary-sig"><span class="summary-sig-name">_send_auth_result</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>method</span>, + <span class=summary-sig-arg>result</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="abort"></a><span class="summary-sig"><span class="summary-sig-name">abort</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.AuthHandler-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>handler</span>, + <span class=summary-sig-arg>event</span>, + <span class=summary-sig-arg>submethods</span>)</span></code> +<br /> +response_list = handler(title, instructions, prompt_list)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="auth_none"></a><span class="summary-sig"><span class="summary-sig-name">auth_none</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>event</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="auth_password"></a><span class="summary-sig"><span class="summary-sig-name">auth_password</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>, + <span class=summary-sig-arg>event</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="auth_publickey"></a><span class="summary-sig"><span class="summary-sig-name">auth_publickey</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>event</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_username"></a><span class="summary-sig"><span class="summary-sig-name">get_username</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="is_authenticated"></a><span class="summary-sig"><span class="summary-sig-name">is_authenticated</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="wait_for_response"></a><span class="summary-sig"><span class="summary-sig-name">wait_for_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>event</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.AuthHandler-class.html#_handler_table"><code>_handler_table</code></a></b> = <span title="{5: <function _parse_service_request at 0xb7b0ae2c>, 6: <function _parse_service_accept at 0xb7b0ae64>, 50: <function _parse_userauth_request at 0xb7b0af0c>, 51: <function _parse_userauth_failure at 0xb7b0af7c>, 52: <function _parse_userauth_success at 0xb7b0af44>, 53: <function _parse_userauth_banner at 0xb7b0afb4>, 60: <function _parse_userauth_info_request at 0xb7b1302c>, 61: <function _parse_userauth_info_response at 0xb7b13064>}"><code>{5: <function _parse_service_request at<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="auth_interactive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>handler</span>, + <span class=sig-arg>event</span>, + <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span> + </h3> + response_list = handler(title, instructions, prompt_list) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_handler_table"></a> +<h3>_handler_table</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{5: <function _parse_service_request at 0xb7b0ae2c>, 6: <function _parse_service_accept at 0xb7b0ae64>, 50: <function _parse_userauth_request at 0xb7b0af0c>, 51: <function _parse_userauth_failure at 0xb7b0af7c>, 52: <function _parse_userauth_success at 0xb7b0af44>, 53: <function _parse_userauth_banner at 0xb7b0afb4>, 60: <function _parse_userauth_info_request at 0xb7b1302c>, 61: <function _parse_userauth_info_response at 0xb7b13064>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{5: <function _parse_service_request at 0xb7b0ae2c>, + 6: <function _parse_service_accept at 0xb7b0ae64>, + 50: <function _parse_userauth_request at 0xb7b0af0c>, + 51: <function _parse_userauth_failure at 0xb7b0af7c>, + 52: <function _parse_userauth_success at 0xb7b0af44>, + 53: <function _parse_userauth_banner at 0xb7b0afb4>, + 60: <function _parse_userauth_info_request at 0xb7b1302c>, + 61: <function _parse_userauth_info_response at 0xb7b13064>} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.BadAuthenticationType-class.html b/docs/private/paramiko.BadAuthenticationType-class.html new file mode 100644 index 0000000..023879a --- /dev/null +++ b/docs/private/paramiko.BadAuthenticationType-class.html @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.BadAuthenticationType</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class BadAuthenticationType + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.BadAuthenticationType-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.BadAuthenticationType-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class BadAuthenticationType</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+ + | + <b>BadAuthenticationType</b> +</pre><br /> + +<hr/> + +Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type. (It may only allow public-key, +for example.) +<hr/> + +<p><b>Since:</b> 1.1 +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>explanation</span>, + <span class=summary-sig-arg>types</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Instance Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td> +<td><b><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></b>: list of allowed authentication types provided by the server (possible +values are: <code>"none"</code>, +<code>"password"</code>, and +<code>"publickey"</code>).</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="allowed_types"></a> +<h3>allowed_types</h3> +list of allowed authentication types provided by the server (possible +values are: <code>"none"</code>, +<code>"password"</code>, and +<code>"publickey"</code>). +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + list + + </dd> +<span title="[]"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +[] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.BaseSFTP-class.html b/docs/private/paramiko.BaseSFTP-class.html new file mode 100644 index 0000000..18917f0 --- /dev/null +++ b/docs/private/paramiko.BaseSFTP-class.html @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.BaseSFTP</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class BaseSFTP + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.BaseSFTP-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type BaseSFTP</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>BaseSFTP</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a>, + <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_read_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_packet"></a><span class="summary-sig"><span class="summary-sig-name">_read_packet</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_packet"></a><span class="summary-sig"><span class="summary-sig-name">_send_packet</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>packet</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_server_version"></a><span class="summary-sig"><span class="summary-sig-name">_send_server_version</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_version"></a><span class="summary-sig"><span class="summary-sig-name">_send_version</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_write_all"></a><span class="summary-sig"><span class="summary-sig-name">_write_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>out</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.BufferedFile-class.html b/docs/private/paramiko.BufferedFile-class.html new file mode 100644 index 0000000..2ab7785 --- /dev/null +++ b/docs/private/paramiko.BufferedFile-class.html @@ -0,0 +1,656 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.BufferedFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class BufferedFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.BufferedFile-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.BufferedFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type BufferedFile</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>BufferedFile</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a>, + <a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></dd></dl> + +<hr/> + +Reusable base class to implement python-style file buffering around a +simpler stream. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +<i>(subclass override)</i> Return the size of the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +<i>(subclass override)</i> Read data from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_record_newline"></a><span class="summary-sig"><span class="summary-sig-name">_record_newline</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>newline</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Subclasses call this method to initialize the BufferedFile.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +<i>(subclass override)</i> Write data into the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_write_all"></a><span class="summary-sig"><span class="summary-sig-name">_write_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__iter__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__iter__</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns an iterator that can be used to iterate over the lines in + this file. This iterator happens to return the file itself, since a + file is its own iterator. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an interator. + <br /><i> + (type=iterator)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>ValueError</b></code> - + if the file is closed. + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the file. Future read and write operations will fail. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="flush"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">flush</span>(<span class=sig-arg>self</span>)</span> + </h3> + Write out any data in the write buffer. This may do nothing if write + buffering is not turned on. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="next"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">next</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the next line from the input, or raises + <code>StopIteration</code> when EOF is hit. Unlike python file objects, + it's okay to mix calls to <code>next</code> and <a + href="paramiko.BufferedFile-class.html#readline" + class="link"><code>readline</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a line read from the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>StopIteration</b></code> - + when the end of the file is reached. + </dl> + </dd></dl> +</td></tr></table> + +<a name="read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span> + </h3> + Read at most <code>size</code> bytes from the file (less if we hit + the end of the file first). If the <code>size</code> argument is + negative or omitted, read all the remaining data in the file. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>size</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data read from the file, or an empty string if EOF was + encountered immediately. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="readline"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span> + </h3> + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). If the size argument is present and non-negative, it + is a maximum byte count (including the trailing newline) and an + incomplete line may be returned. An empty string is returned only when + EOF is encountered immediately. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>size</b></code> - + maximum length of returned string. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + next line of the file, or an empty string if the end of the + file has been reached. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Note:</b> Unlike stdio's <code>fgets()</code>, the returned string contains null +characters (<code>'\0'</code>) if they occurred in the input. +</p> + + </dd></dl> +</td></tr></table> + +<a name="readlines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readlines</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sizehint</span>=<span class=sig-default>None</span>)</span> + </h3> + Read all remaining lines using <a + href="paramiko.BufferedFile-class.html#readline" + class="link"><code>readline</code></a> and return them as a list. If + the optional <code>sizehint</code> argument is present, instead of + reading up to EOF, whole lines totalling approximately sizehint bytes + (possibly after rounding up to an internal buffer size) are read. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sizehint</b></code> - + desired maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of lines read from the file. + <br /><i> + (type=list)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="seek"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span> + </h3> + Set the file's current position, like stdio's <code>fseek</code>. + Not all file objects support seeking. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position to move to within the file, relative to + <code>whence</code>. + <br /><i> + (type=int)</i> + <dd><code><b>whence</b></code> - + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file doesn't support random access. + </dl> +<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or +<code>'a+'</code>), any seek operations will be undone at the next write +(as the file position will move back to the end of the file). +</p> + + </dd></dl> +</td></tr></table> + +<a name="tell"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">tell</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the file's current position. This may not be accurate or + useful if the underlying file doesn't support random access, or was + opened in append mode. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + file position (in bytes). + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Write data to the file. If write buffering is on + (<code>bufsize</code> was specified and non-zero), some or all of the + data may not actually be written yet. (Use <a + href="paramiko.BufferedFile-class.html#flush" + class="link"><code>flush</code></a> or <a + href="paramiko.BufferedFile-class.html#close" + class="link"><code>close</code></a> to force buffered data to be + written out.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + data to write. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="writelines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">writelines</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sequence</span>)</span> + </h3> + Write a sequence of strings to the file. The sequence can be any + iterable object producing strings, typically a list of strings. (The + name is intended to match <a + href="paramiko.BufferedFile-class.html#readlines" + class="link"><code>readlines</code></a>; <code>writelines</code> does + not add line separators.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sequence</b></code> - + an iterable sequence of strings. + <br /><i> + (type=sequence)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="xreadlines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">xreadlines</span>(<span class=sig-arg>self</span>)</span> + </h3> + Identical to <code>iter(f)</code>. This is a deprecated file + interface that predates python iterator support. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an iterator. + <br /><i> + (type=iterator)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_get_size"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_get_size</span>(<span class=sig-arg>self</span>)</span> + </h3> + <i>(subclass override)</i> Return the size of the file. This is + called from within <a + href="../private/paramiko.BufferedFile-class.html#_set_mode" + class="link"><code>_set_mode</code></a> if the file is opened in append + mode, so the file position can be tracked and <a + href="paramiko.BufferedFile-class.html#seek" + class="link"><code>seek</code></a> and <a + href="paramiko.BufferedFile-class.html#tell" + class="link"><code>tell</code></a> will work correctly. If the file is + a stream that can't be randomly accessed, you don't need to override + this method, + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>)</span> + </h3> + <i>(subclass override)</i> Read data from the stream. Return + <code>None</code> or raise <code>EOFError</code> to indicate EOF. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_set_mode"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_set_mode</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>, + <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span> + </h3> + Subclasses call this method to initialize the BufferedFile. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <i>(subclass override)</i> Write data into the stream. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_CUR"></a> +<h3>SEEK_CUR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_END"></a> +<h3>SEEK_END</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_SET"></a> +<h3>SEEK_SET</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_DEFAULT_BUFSIZE"></a> +<h3>_DEFAULT_BUFSIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8192"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8192 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.Channel-class.html b/docs/private/paramiko.Channel-class.html new file mode 100644 index 0000000..83ac46e --- /dev/null +++ b/docs/private/paramiko.Channel-class.html @@ -0,0 +1,1329 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Channel</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Channel + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.Channel-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Channel-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Channel</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Channel</b> +</pre><br /> + +<hr/> + +<p>A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. A Channel is meant to behave +like a socket, and has an API that should be indistinguishable from the +python socket API.</p> +Because SSH2 has a windowing kind of flow control, if you stop reading +data from a Channel and its buffer fills up, the server will be unable to +send you any more data until you read some of it. (This won't affect +other channels on the same transport -- all channels on a single +transport are flow-controlled independently.) Similarly, if the server +isn't reading data you send, calls to <a +href="paramiko.Channel-class.html#send" +class="link"><code>send</code></a> may block, unless you set a timeout. +This is exactly like a normal network socket, so it shouldn't be too +surprising. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>chanid</span>)</span></code> +<br /> +Create a new channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#exec_command" class="summary-sig-name"><code>exec_command</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>command</span>)</span></code> +<br /> +Execute a command on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#fileno" class="summary-sig-name"><code>fileno</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an OS-level file descriptor which can be used for polling, but +but <i>not</i> for reading or writing).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_id" class="summary-sig-name"><code>get_id</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the ID # for this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Get the name of this channel that was previously set by <a +href="paramiko.Channel-class.html#set_name" +class="link"><code>set_name</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_pty" class="summary-sig-name"><code>get_pty</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>term</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>)</span></code> +<br /> +Request a pseudo-terminal from the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_transport" class="summary-sig-name"><code>get_transport</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> associated with this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> float +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the timeout in seconds (as a float) associated with socket +operations, or <code>None</code> if no timeout is set.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_shell" class="summary-sig-name"><code>invoke_shell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Request an interactive shell session on this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_subsystem" class="summary-sig-name"><code>invoke_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>subsystem</span>)</span></code> +<br /> +Request a subsystem on the server (for example, +<code>sftp</code>).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile" class="summary-sig-name"><code>makefile</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*params</span>)</span></code> +<br /> +Return a file-like object associated with this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile_stderr" class="summary-sig-name"><code>makefile_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*params</span>)</span></code> +<br /> +Return a file-like object associated with this channel's stderr +stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv" class="summary-sig-name"><code>recv</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Receive data from the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_exit_status" class="summary-sig-name"><code>recv_exit_status</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the exit status from the process on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_ready" class="summary-sig-name"><code>recv_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns true if data is buffered and ready to be read from this +channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr" class="summary-sig-name"><code>recv_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Receive data from the channel's stderr stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr_ready" class="summary-sig-name"><code>recv_stderr_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns true if data is buffered and ready to be read from this +channel's stderr stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#resize_pty" class="summary-sig-name"><code>resize_pty</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>)</span></code> +<br /> +Resize the pseudo-terminal.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send" class="summary-sig-name"><code>send</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_exit_status" class="summary-sig-name"><code>send_exit_status</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>status</span>)</span></code> +<br /> +Send the exit status of an executed command to the client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_stderr" class="summary-sig-name"><code>send_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel on the "stderr" stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall" class="summary-sig-name"><code>sendall</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel, without allowing partial results.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall_stderr" class="summary-sig-name"><code>sendall_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel's "stderr" stream, without allowing +partial results.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_combine_stderr" class="summary-sig-name"><code>set_combine_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>combine</span>)</span></code> +<br /> +Set whether stderr should be combined into stdout on this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_name" class="summary-sig-name"><code>set_name</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +<br /> +Set a name for this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>blocking</span>)</span></code> +<br /> +Set blocking or non-blocking mode of the channel: if +<code>blocking</code> is 0, the channel is set to non-blocking mode; +otherwise it's set to blocking mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Set a timeout on blocking read/write operations.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown" class="summary-sig-name"><code>shutdown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>how</span>)</span></code> +<br /> +Shut down one or both halves of the connection.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_read" class="summary-sig-name"><code>shutdown_read</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Shutdown the receiving side of this socket, closing the stream in the +incoming direction.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_write" class="summary-sig-name"><code>shutdown_write</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Shutdown the sending side of this socket, closing the stream in the +outgoing direction.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_check_add_window"></a><span class="summary-sig"><span class="summary-sig-name">_check_add_window</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_close_internal"></a><span class="summary-sig"><span class="summary-sig-name">_close_internal</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_feed"></a><span class="summary-sig"><span class="summary-sig-name">_feed</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_feed_extended"></a><span class="summary-sig"><span class="summary-sig-name">_feed_extended</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_handle_close"></a><span class="summary-sig"><span class="summary-sig-name">_handle_close</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_handle_eof"></a><span class="summary-sig"><span class="summary-sig-name">_handle_eof</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_handle_request"></a><span class="summary-sig"><span class="summary-sig-name">_handle_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_request_failed"></a><span class="summary-sig"><span class="summary-sig-name">_request_failed</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_request_success"></a><span class="summary-sig"><span class="summary-sig-name">_request_success</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_eof"></a><span class="summary-sig"><span class="summary-sig-name">_send_eof</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_closed"></a><span class="summary-sig"><span class="summary-sig-name">_set_closed</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_remote_channel"></a><span class="summary-sig"><span class="summary-sig-name">_set_remote_channel</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>chanid</span>, + <span class=summary-sig-arg>window_size</span>, + <span class=summary-sig-arg>max_packet_size</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_transport"></a><span class="summary-sig"><span class="summary-sig-name">_set_transport</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_window"></a><span class="summary-sig"><span class="summary-sig-name">_set_window</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>window_size</span>, + <span class=summary-sig-arg>max_packet_size</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_unlink"></a><span class="summary-sig"><span class="summary-sig-name">_unlink</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Channel-class.html#_wait_for_send_window" class="summary-sig-name"><code>_wait_for_send_window</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +(You are already holding the lock.) Wait for the send window to open +up, and allocate up to <code>size</code> bytes for transmission.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_window_adjust"></a><span class="summary-sig"><span class="summary-sig-name">_window_adjust</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></b> = <span title="1024">1024 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>chanid</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new channel. The channel is not associated with any + particular session or <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> until the Transport attaches + it. Normally you would only call this method from the constructor of a + subclass of <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>chanid</b></code> - + the ID of this channel, as passed by an existing <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Return a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the channel. All future read/write operations on the channel + will fail. The remote end will receive no more data (after queued data + is flushed). Channels are automatically closed when their <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> is closed or when they are + garbage collected. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="exec_command"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">exec_command</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>command</span>)</span> + </h3> + <p>Execute a command on the server. If the server allows it, the + channel will then be directly connected to the stdin, stdout, and + stderr of the command being executed.</p> + When the command finishes executing, the channel will be closed and + can't be reused. You must open a new channel if you wish to execute + another command. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>command</b></code> - + a shell command to execute. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="fileno"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">fileno</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>Returns an OS-level file descriptor which can be used for polling, + but but <i>not</i> for reading or writing). This is primaily to allow + python's <code>select</code> module to work.</p> + The first time <code>fileno</code> is called on a channel, a pipe is + created to simulate real OS-level file descriptor (FD) behavior. + Because of this, two OS-level FDs are created, which will use up FDs + faster than normal. You won't notice this effect unless you open + hundreds or thousands of channels simultaneously, but it's still + notable. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an OS-level file descriptor + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Warning:</b> This method causes channel reads to be slightly less efficient. +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_id"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_id</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the ID # for this channel. The channel ID is unique across a + <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> and usually a small number. + It's also the number passed to <a + href="../private/paramiko.ServerInterface-class.html#check_channel_request" + class="link"><code>ServerInterface.check_channel_request</code></a> + when determining whether to accept a channel request in server + mode. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the ID of this channel. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> ivysaur +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Get the name of this channel that was previously set by <a + href="paramiko.Channel-class.html#set_name" + class="link"><code>set_name</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the name of this channel. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_pty"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_pty</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>term</span>=<span class=sig-default>'vt100'</span>, + <span class=sig-arg>width</span>=<span class=sig-default>80</span>, + <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span> + </h3> + Request a pseudo-terminal from the server. This is usually used + right after creating a client channel, to ask the server to provide + some basic terminal semantics for a shell invoked with <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a>. It isn't necessary (or + desirable) to call this method if you're going to exectue a single + command with <a href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>term</b></code> - + the terminal type to emulate (for example, + <code>'vt100'</code>). + <br /><i> + (type=str)</i> + <dd><code><b>width</b></code> - + width (in characters) of the terminal screen + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + height (in characters) of the terminal screen + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_transport"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_transport</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> associated with this + channel. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> that was used to create + this channel. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="gettimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the timeout in seconds (as a float) associated with socket + operations, or <code>None</code> if no timeout is set. This reflects + the last call to <a href="paramiko.Channel-class.html#setblocking" + class="link"><code>setblocking</code></a> or <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + timeout in seconds, or <code>None</code>. + <br /><i> + (type=float)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="invoke_shell"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">invoke_shell</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>Request an interactive shell session on this channel. If the server + allows it, the channel will then be directly connected to the stdin, + stdout, and stderr of the shell.</p> + <p>Normally you would call <a + href="paramiko.Channel-class.html#get_pty" + class="link"><code>get_pty</code></a> before this, in which case the + shell will operate through the pty, and the channel will be connected + to the stdin and stdout of the pty.</p> + When the shell exits, the channel will be closed and can't be + reused. You must open a new channel if you wish to open another + shell. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="invoke_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">invoke_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>subsystem</span>)</span> + </h3> + <p>Request a subsystem on the server (for example, <code>sftp</code>). + If the server allows it, the channel will then be directly connected to + the requested subsystem.</p> + When the subsystem finishes, the channel will be closed and can't be + reused. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>subsystem</b></code> - + name of the subsystem being requested. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="makefile"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">makefile</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*params</span>)</span> + </h3> + Return a file-like object associated with this channel. The optional + <code>mode</code> and <code>bufsize</code> arguments are interpreted + the same way as by the built-in <code>file()</code> function in + python. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + object which can be used for python file I/O. + <br /><i> + (type=<a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="makefile_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">makefile_stderr</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*params</span>)</span> + </h3> + <p>Return a file-like object associated with this channel's stderr + stream. Only channels using <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream.</p> + The optional <code>mode</code> and <code>bufsize</code> arguments + are interpreted the same way as by the built-in <code>file()</code> + function in python. For a client, it only makes sense to open this file + for reading. For a server, it only makes sense to open this file for + writing. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + object which can be used for python file I/O. + <br /><i> + (type=<a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Receive data from the channel. The return value is a string + representing the data received. The maximum amount of data to be + received at once is specified by <code>nbytes</code>. If a string of + length zero is returned, the channel stream has closed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>nbytes</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data is ready before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> + </dd></dl> +</td></tr></table> + +<a name="recv_exit_status"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_exit_status</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the exit status from the process on the server. This is + mostly useful for retrieving the reults of an <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a>. If the command hasn't + finished yet, this method will wait until it does, or until the channel + is closed. If no exit status is provided by the server, -1 is + returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the exit code of the process on the server. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv_ready"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_ready</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns true if data is buffered and ready to be read from this + channel. A <code>False</code> result does not mean that the channel has + closed; it means you may need to wait before more data arrives. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if a <a + href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> call on this channel would + immediately return at least one byte; <code>False</code> + otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="recv_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Receive data from the channel's stderr stream. Only channels using + <a href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream. The return value is a string representing + the data received. The maximum amount of data to be received at once is + specified by <code>nbytes</code>. If a string of length zero is + returned, the channel stream has closed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>nbytes</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data is ready before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv_stderr_ready"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_stderr_ready</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns true if data is buffered and ready to be read from this + channel's stderr stream. Only channels using <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if a <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> call on this channel + would immediately return at least one byte; <code>False</code> + otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="resize_pty"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">resize_pty</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>width</span>=<span class=sig-default>80</span>, + <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span> + </h3> + Resize the pseudo-terminal. This can be used to change the width and + height of the terminal emulation created in a previous <a + href="paramiko.Channel-class.html#get_pty" + class="link"><code>get_pty</code></a> call. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>width</b></code> - + new width (in characters) of the terminal screen + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + new height (in characters) of the terminal screen + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="send"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel. Returns the number of bytes sent, or 0 if + the channel stream is closed. Applications are responsible for checking + that all data has been sent: if only some of the data was transmitted, + the application needs to attempt delivery of the remaining data. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + number of bytes actually sent. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data could be sent before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> + </dd></dl> +</td></tr></table> + +<a name="send_exit_status"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_exit_status</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>status</span>)</span> + </h3> + Send the exit status of an executed command to the client. (This + really only makes sense in server mode.) Many clients expect to get + some sort of status code back from an executed command after it + completes. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>status</b></code> - + the exit code of the process + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="send_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel on the "stderr" stream. This is + normally only used by servers to send output from shell commands -- + clients won't use this. Returns the number of bytes sent, or 0 if the + channel stream is closed. Applications are responsible for checking + that all data has been sent: if only some of the data was transmitted, + the application needs to attempt delivery of the remaining data. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + number of bytes actually sent. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data could be sent before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="sendall"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sendall</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel, without allowing partial results. Unlike + <a href="paramiko.Channel-class.html#send" + class="link"><code>send</code></a>, this method continues to send data + from the given string until either all data has been sent or an error + occurs. Nothing is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if sending stalled for longer than the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dd><code><b>socket.error</b></code> - + if an error occured before the entire string was sent. + </dl> +<p><b>Note:</b> If the channel is closed while only part of the data hase been sent, +there is no way to determine how much data (if any) was sent. This is +irritating, but identically follows python's API. +</p> + + </dd></dl> +</td></tr></table> + +<a name="sendall_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sendall_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel's "stderr" stream, without + allowing partial results. Unlike <a + href="paramiko.Channel-class.html#send_stderr" + class="link"><code>send_stderr</code></a>, this method continues to + send data from the given string until all data has been sent or an + error occurs. Nothing is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send to the client as "stderr" output. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if sending stalled for longer than the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dd><code><b>socket.error</b></code> - + if an error occured before the entire string was sent. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_combine_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_combine_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>combine</span>)</span> + </h3> + <p>Set whether stderr should be combined into stdout on this channel. + The default is <code>False</code>, but in some cases it may be + convenient to have both streams combined.</p> + <p>If this is <code>False</code>, and <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> is called (or + <code>invoke_shell</code> with no pty), output to stderr will not show + up through the <a href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> and <a + href="paramiko.Channel-class.html#recv_ready" + class="link"><code>recv_ready</code></a> calls. You will have to use <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> and <a + href="paramiko.Channel-class.html#recv_stderr_ready" + class="link"><code>recv_stderr_ready</code></a> to get stderr + output.</p> + If this is <code>True</code>, data will never show up via <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> or <a + href="paramiko.Channel-class.html#recv_stderr_ready" + class="link"><code>recv_stderr_ready</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>combine</b></code> - + <code>True</code> if stderr output should be combined into + stdout on this channel. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + previous setting. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_name</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>)</span> + </h3> + Set a name for this channel. Currently it's only used to set the + name of the log level used for debugging. The name can be fetched with + the <a href="paramiko.Channel-class.html#get_name" + class="link"><code>get_name</code></a> method. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + new channel name. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="setblocking"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>blocking</span>)</span> + </h3> + <p>Set blocking or non-blocking mode of the channel: if + <code>blocking</code> is 0, the channel is set to non-blocking mode; + otherwise it's set to blocking mode. Initially all channels are in + blocking mode.</p> + <p>In non-blocking mode, if a <a + href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> call doesn't find any data, or if a + <a href="paramiko.Channel-class.html#send" + class="link"><code>send</code></a> call can't immediately dispose of + the data, an error exception is raised. In blocking mode, the calls + block until they can proceed.</p> + <code>chan.setblocking(0)</code> is equivalent to + <code>chan.settimeout(0)</code>; <code>chan.setblocking(1)</code> is + equivalent to <code>chan.settimeout(None)</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>blocking</b></code> - + 0 to set non-blocking mode; non-0 to set blocking mode. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="settimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>)</span> + </h3> + <p>Set a timeout on blocking read/write operations. The + <code>timeout</code> argument can be a nonnegative float expressing + seconds, or <code>None</code>. If a float is given, subsequent channel + read/write operations will raise a timeout exception if the timeout + period value has elapsed before the operation has completed. Setting a + timeout of <code>None</code> disables timeouts on socket + operations.</p> + <code>chan.settimeout(0.0)</code> is equivalent to + <code>chan.setblocking(0)</code>; <code>chan.settimeout(None)</code> is + equivalent to <code>chan.setblocking(1)</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a pending read/write operation before + raising <code>socket.timeout</code>, or <code>None</code> for no + timeout. + <br /><i> + (type=float)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="shutdown"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>how</span>)</span> + </h3> + Shut down one or both halves of the connection. If <code>how</code> + is 0, further receives are disallowed. If <code>how</code> is 1, + further sends are disallowed. If <code>how</code> is 2, further sends + and receives are disallowed. This closes the stream in one or both + directions. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>how</b></code> - + 0 (stop receiving), 1 (stop sending), or 2 (stop receiving and + sending). + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="shutdown_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown_read</span>(<span class=sig-arg>self</span>)</span> + </h3> + Shutdown the receiving side of this socket, closing the stream in + the incoming direction. After this call, future reads on this channel + will fail instantly. This is a convenience method, equivalent to + <code>shutdown(0)</code>, for people who don't make it a habit to + memorize unix constants from the 1970s. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="shutdown_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown_write</span>(<span class=sig-arg>self</span>)</span> + </h3> + Shutdown the sending side of this socket, closing the stream in the + outgoing direction. After this call, future writes on this channel will + fail instantly. This is a convenience method, equivalent to + <code>shutdown(1)</code>, for people who don't make it a habit to + memorize unix constants from the 1970s. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="_wait_for_send_window"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_wait_for_send_window</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>)</span> + </h3> + (You are already holding the lock.) Wait for the send window to open + up, and allocate up to <code>size</code> bytes for transmission. If no + space opens up before the timeout, a timeout exception is raised. + Returns the number of bytes available to send (may be less than + requested). + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MIN_PACKET_SIZE"></a> +<h3>MIN_PACKET_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1024"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1024 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ChannelFile-class.html b/docs/private/paramiko.ChannelFile-class.html new file mode 100644 index 0000000..c3c4fea --- /dev/null +++ b/docs/private/paramiko.ChannelFile-class.html @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ChannelFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class ChannelFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ChannelFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ChannelFile</h2> + +<pre class="base-tree"> + <a href="__builtin__.object-class.html"><code>object</code></a> --+ + | +<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+ + | + <b>ChannelFile</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></dd></dl> + +<hr/> + +A file-like wrapper around <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>. A ChannelFile is created by +calling <a href="paramiko.Channel-class.html#makefile" +class="link"><code>Channel.makefile</code></a>. +<hr/> + +<p><b>Bug:</b> To correctly emulate the file object created from a socket's +<code>makefile</code> method, a <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a> and its <code>ChannelFile</code> +should be able to be closed or garbage-collected independently. +Currently, closing the <code>ChannelFile</code> does nothing but flush +the buffer. +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +<i>(subclass override)</i> Read data from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +<i>(subclass override)</i> Write data into the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +<i>(subclass override)</i> Return the size of the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>newline</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Subclasses call this method to initialize the BufferedFile.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>)</span> + </h3> + <i>(subclass override)</i> Read data from the stream. Return + <code>None</code> or raise <code>EOFError</code> to indicate EOF. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BufferedFile-class.html#_read"><code>paramiko.BufferedFile._read</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <i>(subclass override)</i> Write data into the stream. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BufferedFile-class.html#_write"><code>paramiko.BufferedFile._write</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="seek"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span> + </h3> + Set the file's current position, like stdio's <code>fseek</code>. + Not all file objects support seeking. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position to move to within the file, relative to + <code>whence</code>. + <br /><i> + (type=int)</i> + <dd><code><b>whence</b></code> - + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file doesn't support random access. + </dl> +<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or +<code>'a+'</code>), any seek operations will be undone at the next write +(as the file position will move back to the end of the file). +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.DSSKey-class.html b/docs/private/paramiko.DSSKey-class.html new file mode 100644 index 0000000..9d87ee1 --- /dev/null +++ b/docs/private/paramiko.DSSKey-class.html @@ -0,0 +1,486 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.DSSKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class DSSKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.DSSKey-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.DSSKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type DSSKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>DSSKey</b> +</pre><br /> + +<hr/> + +Representation of a DSS key which can be used to sign an verify SSH2 +data. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Create a new instance of this public key type.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>, + <span class=summary-sig-arg>progress_func</span>)</span></code> +<br /> +Generate a new private DSS key. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>rpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_from_private_key_file"></a><span class="summary-sig"><span class="summary-sig-name">_from_private_key_file</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>other</span>)</span></code> +<br /> +Compare this key to another.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Read an SSH2-format private key file, looking for a string of the type +<code>"BEGIN xxx PRIVATE KEY"</code> for some <code>xxx</code>, +base64-decode the text we find, and return it as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write an SSH2-format private key file in a form that can be read by +paramiko or openssh.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Create a key object by reading a private key file. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a base64 string containing the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an MD5 fingerprint of the public part of this key.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC': {'blocksize': 8, 'ciphe<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>=<span class=sig-default>None</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new instance of this public key type. If <code>msg</code> + is given, the key's public part(s) will be filled in from the message. + If <code>data</code> is given, the key's public part(s) will be filled + in from the string. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>msg</b></code> - + an optional SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing a public key of + this type. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + <dd><code><b>data</b></code> - + an optional string containing a public key of this type + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if a key cannot be created from the <code>data</code> or + <code>msg</code> given, or no key was passed in. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="can_sign"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if this key has the private part necessary + for signing data. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this is a private key. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bits"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + bits in the key. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="verify_ssh_sig"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + the data that was signed. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + an SSH signature message + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the signature verifies correctly; + <code>False</code> otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write private key contents into a file. If the password is not + <code>None</code>, the key is encrypted before writing. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the key file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + <dd><code><b>SSHException</b></code> - + if the key is invalid. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="generate"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>=<span class=sig-default>1024</span>, + <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span> + </h3> + Generate a new private DSS key. This factory function can be used to + generate a new host key or authentication key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bits</b></code> - + number of bits the generated key should be. + <br /><i> + (type=int)</i> + <dd><code><b>progress_func</b></code> - + an optional function to call at key points in key generation + (used by <code>pyCrypto.PublicKey</code>). + <br /><i> + (type=function)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new private key + <br /><i> + (type=<a href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.Message-class.html b/docs/private/paramiko.Message-class.html new file mode 100644 index 0000000..d6934e3 --- /dev/null +++ b/docs/private/paramiko.Message-class.html @@ -0,0 +1,654 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Message + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.Message-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Message-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Message</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Message</b> +</pre><br /> + +<hr/> + +<p>An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s). This class builds or breaks down such +a byte stream.</p> +Normally you don't need to deal with anything this low-level, but it's +exposed for people implementing custom extensions, or features that +paramiko doesn't support yet. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>content</span>)</span></code> +<br /> +Create a new SSH2 Message.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the byte stream content of this Message, as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add" class="summary-sig-name"><code>add</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*seq</span>)</span></code> +<br /> +Add a sequence of items to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_boolean" class="summary-sig-name"><code>add_boolean</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Add a boolean value to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_byte" class="summary-sig-name"><code>add_byte</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Write a single byte to the stream, without any formatting.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_bytes" class="summary-sig-name"><code>add_bytes</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Write bytes to the stream, without any formatting.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int" class="summary-sig-name"><code>add_int</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Add an integer to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int64" class="summary-sig-name"><code>add_int64</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Add a 64-bit int to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_list" class="summary-sig-name"><code>add_list</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>l</span>)</span></code> +<br /> +Add a list of strings to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_mpint" class="summary-sig-name"><code>add_mpint</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>z</span>)</span></code> +<br /> +Add a long int to the stream, encoded as an infinite-precision +integer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_string" class="summary-sig-name"><code>add_string</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Add a string to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_boolean" class="summary-sig-name"><code>get_boolean</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a boolean from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_byte" class="summary-sig-name"><code>get_byte</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the next byte of the Message, without decomposing it.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_bytes" class="summary-sig-name"><code>get_bytes</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Return the next <code>n</code> bytes of the Message, without +decomposing into an int, string, etc.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int" class="summary-sig-name"><code>get_int</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch an int from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> long +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int64" class="summary-sig-name"><code>get_int64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a 64-bit int from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of strings +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_list" class="summary-sig-name"><code>get_list</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a list of strings from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> long +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_mpint" class="summary-sig-name"><code>get_mpint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a long int (mpint) from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_remainder" class="summary-sig-name"><code>get_remainder</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the bytes of this Message that haven't already been parsed and +returned.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_so_far" class="summary-sig-name"><code>get_so_far</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the bytes of this Message that have been parsed and +returned.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_string" class="summary-sig-name"><code>get_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a string from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#rewind" class="summary-sig-name"><code>rewind</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Rewind the message to the beginning as if no items had been parsed out +of it yet.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_add"></a><span class="summary-sig"><span class="summary-sig-name">_add</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>i</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>content</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new SSH2 Message. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>content</b></code> - + the byte stream to use as the Message content (passed in only + when decomposing a Message). + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return the byte stream content of this Message, as a string. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the contents of this Message. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*seq</span>)</span> + </h3> + Add a sequence of items to the stream. The values are encoded based + on their type: str, int, bool, list, or long. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>seq</b></code> - + the sequence of items + <br /><i> + (type=sequence)</i> + </dd> + </dl> +<p><b>Bug:</b> longs are encoded non-deterministically. Don't use this method. +</p> + + </dd></dl> +</td></tr></table> + +<a name="add_boolean"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_boolean</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Add a boolean value to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + boolean value to add + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_byte"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_byte</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Write a single byte to the stream, without any formatting. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + byte to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_bytes</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Write bytes to the stream, without any formatting. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + bytes to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_int"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_int</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Add an integer to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>n</b></code> - + integer to add + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_int64"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_int64</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Add a 64-bit int to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>n</b></code> - + long int to add + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_list"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_list</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>l</span>)</span> + </h3> + Add a list of strings to the stream. They are encoded identically to + a single string of values separated by commas. (Yes, really, that's how + SSH2 does it.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>l</b></code> - + list of strings to add + <br /><i> + (type=list(str))</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_mpint"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_mpint</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>z</span>)</span> + </h3> + Add a long int to the stream, encoded as an infinite-precision + integer. This method only works on positive numbers. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>z</b></code> - + long int to add + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_string"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_string</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Add a string to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + string to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_boolean"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_boolean</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a boolean from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> or <code>False</code> (from the + Message). + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_byte"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_byte</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the next byte of the Message, without decomposing it. This is + equivalent to <a href="paramiko.Message-class.html#get_bytes" + class="link"><code>get_bytes(1)</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the next byte of the Message, or <code>' + aren't any bytes remaining. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bytes</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Return the next <code>n</code> bytes of the Message, without + decomposing into an int, string, etc. Just the raw bytes are + returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the next <code>n</code> bytes of the Message, or a + string of <code>n</code> zero bytes, if there aren't + <code>n</code> bytes remaining. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_int"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_int</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch an int from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a 32-bit unsigned integer. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_int64"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_int64</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a 64-bit int from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a 64-bit unsigned integer. + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_list"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_list</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a list of strings from the stream. These are trivially encoded + as comma-separated values in a string. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a list of strings. + <br /><i> + (type=list of strings)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_mpint"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_mpint</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a long int (mpint) from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an arbitrary-length integer. + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_remainder"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_remainder</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the bytes of this Message that haven't already been parsed + and returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the bytes not parsed yet. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_so_far"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_so_far</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the bytes of this Message that have been parsed and + returned. The string passed into a Message's constructor can be + regenerated by concatenating <code>get_so_far</code> and <a + href="paramiko.Message-class.html#get_remainder" + class="link"><code>get_remainder</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the bytes parsed so far. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_string"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_string</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a string from the stream. This could be a byte string and may + contain unprintable characters. (It's not unheard of for a string to + contain another byte-stream Message.) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="rewind"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rewind</span>(<span class=sig-arg>self</span>)</span> + </h3> + Rewind the message to the beginning as if no items had been parsed + out of it yet. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.PKey-class.html b/docs/private/paramiko.PKey-class.html new file mode 100644 index 0000000..3ed3e5f --- /dev/null +++ b/docs/private/paramiko.PKey-class.html @@ -0,0 +1,696 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.PKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class PKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.PKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type PKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>PKey</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a>, + <a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a>, + <a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></dd></dl> + +<hr/> + +Base class for public keys. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Create a new instance of this public key type.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>other</span>)</span></code> +<br /> +Compare this key to another.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Read an SSH2-format private key file, looking for a string of the type +<code>"BEGIN xxx PRIVATE KEY"</code> for some <code>xxx</code>, +base64-decode the text we find, and return it as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write an SSH2-format private key file in a form that can be read by +paramiko or openssh.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Create a key object by reading a private key file. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a base64 string containing the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an MD5 fingerprint of the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>randpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Sign a blob of data with this private key, and return a <a +href="paramiko.Message-class.html" class="link"><code>Message</code></a> +representing an SSH signature message.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC': {'blocksize': 8, 'ciphe<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>=<span class=sig-default>None</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new instance of this public key type. If <code>msg</code> + is given, the key's public part(s) will be filled in from the message. + If <code>data</code> is given, the key's public part(s) will be filled + in from the string. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>msg</b></code> - + an optional SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing a public key of + this type. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + <dd><code><b>data</b></code> - + an optional string containing a public key of this type + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if a key cannot be created from the <code>data</code> or + <code>msg</code> given, or no key was passed in. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__cmp__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>other</span>)</span> + <br /><i>(Comparison operator)</i> + </h3> + Compare this key to another. Returns 0 if this key is equivalent to + the given key, or non-0 if they are different. Only the public parts of + the key are compared, so a public key will compare equal to its + corresponding private key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>other</b></code> - + key to compare to. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + 0 if the two keys are equivalent, non-0 otherwise. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_read_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_read_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>tag</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Read an SSH2-format private key file, looking for a string of the + type <code>"BEGIN xxx PRIVATE KEY"</code> for some + <code>xxx</code>, base64-decode the text we find, and return it as a + string. If the private key is encrypted and <code>password</code> is + not <code>None</code>, the given password will be used to decrypt the + key (otherwise <a href="paramiko.PasswordRequiredException-class.html" + class="link"><code>PasswordRequiredException</code></a> is thrown). + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>tag</b></code> - + <code>"RSA"</code> or <code>"DSA"</code>, + the tag used to mark the data block. + <br /><i> + (type=str)</i> + <dd><code><b>filename</b></code> - + name of the file to read. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to decrypt the key file, if it's + encrypted. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data blob that makes up the private key. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error reading the file. + <dd><code><b>PasswordRequiredException</b></code> - + if the private key file is encrypted, and + <code>password</code> is <code>None</code>. + <dd><code><b>SSHException</b></code> - + if the key file is invalid. + </dl> + </dd></dl> +</td></tr></table> + +<a name="_write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>tag</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write an SSH2-format private key file in a form that can be read by + paramiko or openssh. If no password is given, the key is written in a + trivially-encoded format (base64) which is completely insecure. If a + password is given, DES-EDE3-CBC is used. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>tag</b></code> - + <code>"RSA"</code> or <code>"DSA"</code>, + the tag used to mark the data block. + <br /><i> + (type=str)</i> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>data</b></code> - + data blob that makes up the private key. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + </dl> + </dd></dl> +</td></tr></table> + +<a name="can_sign"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if this key has the private part necessary + for signing data. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this is a private key. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_base64"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_base64</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return a base64 string containing the public part of this key. + Nothing secret is revealed. This format is compatible with that used to + store public key files or recognized host keys. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a base64 string containing the public part of the key. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_bits"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + bits in the key. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_fingerprint"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_fingerprint</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return an MD5 fingerprint of the public part of this key. Nothing + secret is revealed. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a 16-byte string (binary) of the MD5 fingerprint, in SSH + format. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="sign_ssh_data"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>randpool</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Sign a blob of data with this private key, and return a <a + href="paramiko.Message-class.html" + class="link"><code>Message</code></a> representing an SSH signature + message. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>randpool</b></code> - + a secure random number generator. + <br /><i> + (type=<code>Crypto.Util.randpool.RandomPool</code>)</i> + <dd><code><b>data</b></code> - + the data to sign. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SSH signature message. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="verify_ssh_sig"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + the data that was signed. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + an SSH signature message + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the signature verifies correctly; + <code>False</code> otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write private key contents into a file. If the password is not + <code>None</code>, the key is encrypted before writing. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the key file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + <dd><code><b>SSHException</b></code> - + if the key is invalid. + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Method Details</th></tr> +</table> + +<a name="from_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">from_private_key_file</span>(<span class=sig-arg>cl</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Create a key object by reading a private key file. If the private + key is encrypted and <code>password</code> is not <code>None</code>, + the given password will be used to decrypt the key (otherwise <a + href="paramiko.PasswordRequiredException-class.html" + class="link"><code>PasswordRequiredException</code></a> is thrown). + Through the magic of python, this factory method will exist in all + subclasses of PKey (such as <a href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a> or <a + href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a>), but is useless on the abstract + PKey class. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to read. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to decrypt the key file, if it's + encrypted + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new key object based on the given private key. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error reading the file. + <dd><code><b>PasswordRequiredException</b></code> - + if the private key file is encrypted, and + <code>password</code> is <code>None</code>. + <dd><code><b>SSHException</b></code> - + if the key file is invalid. + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_CIPHER_TABLE"></a> +<h3>_CIPHER_TABLE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'keysize': 24, 'mode': 2}}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'DES-EDE3-CBC': {'blocksize': 8, + 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/li<span class="variable-linewrap">\</span> +b/python2.4/site-packages/Crypto/Cipher/DES3.so'>, + 'keysize': 24, + 'mode': 2}} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.Packetizer-class.html b/docs/private/paramiko.Packetizer-class.html new file mode 100644 index 0000000..f3be97b --- /dev/null +++ b/docs/private/paramiko.Packetizer-class.html @@ -0,0 +1,441 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Packetizer</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Packetizer + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.Packetizer-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Packetizer</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Packetizer</b> +</pre><br /> + +<hr/> + +Implementation of the base SSH packet protocol. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>socket</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_build_packet"></a><span class="summary-sig"><span class="summary-sig-name">_build_packet</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>payload</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_check_keepalive"></a><span class="summary-sig"><span class="summary-sig-name">_check_keepalive</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_py22_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_py22_read_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_py22_read_timeout"></a><span class="summary-sig"><span class="summary-sig-name">_py22_read_timeout</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_timeout"></a><span class="summary-sig"><span class="summary-sig-name">_read_timeout</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_trigger_rekey"></a><span class="summary-sig"><span class="summary-sig-name">_trigger_rekey</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_hexdump"></a><span class="summary-sig"><span class="summary-sig-name">get_hexdump</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_mac_size_in"></a><span class="summary-sig"><span class="summary-sig-name">get_mac_size_in</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_mac_size_out"></a><span class="summary-sig"><span class="summary-sig-name">get_mac_size_out</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#need_rekey" class="summary-sig-name"><code>need_rekey</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns <code>True</code> if a new set of keys needs to be +negotiated.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#read_all" class="summary-sig-name"><code>read_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>, + <span class=summary-sig-arg>check_rekey</span>)</span></code> +<br /> +Read as close to N bytes as possible, blocking as long as +necessary.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#read_message" class="summary-sig-name"><code>read_message</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Only one thread should ever be in this function (no other locking is +done).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Read a line from the socket.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#send_message" class="summary-sig-name"><code>send_message</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write a block of data using the current cipher, as an SSH block.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set_hexdump"></a><span class="summary-sig"><span class="summary-sig-name">set_hexdump</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hexdump</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_inbound_cipher" class="summary-sig-name"><code>set_inbound_cipher</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>block_engine</span>, + <span class=summary-sig-arg>block_size</span>, + <span class=summary-sig-arg>mac_engine</span>, + <span class=summary-sig-arg>mac_size</span>, + <span class=summary-sig-arg>mac_key</span>)</span></code> +<br /> +Switch inbound data cipher.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set_inbound_compressor"></a><span class="summary-sig"><span class="summary-sig-name">set_inbound_compressor</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>compressor</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>interval</span>, + <span class=summary-sig-arg>callback</span>)</span></code> +<br /> +Turn on/off the callback keepalive.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_log" class="summary-sig-name"><code>set_log</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>log</span>)</span></code> +<br /> +Set the python log object to use for logging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_outbound_cipher" class="summary-sig-name"><code>set_outbound_cipher</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>block_engine</span>, + <span class=summary-sig-arg>block_size</span>, + <span class=summary-sig-arg>mac_engine</span>, + <span class=summary-sig-arg>mac_size</span>, + <span class=summary-sig-arg>mac_key</span>)</span></code> +<br /> +Switch outbound data cipher.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set_outbound_compressor"></a><span class="summary-sig"><span class="summary-sig-name">set_outbound_compressor</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>compressor</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="write_all"></a><span class="summary-sig"><span class="summary-sig-name">write_all</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>out</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.Packetizer-class.html#REKEY_BYTES"><code>REKEY_BYTES</code></a></b> = <span title="1073741824">1073741824 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.Packetizer-class.html#REKEY_PACKETS"><code>REKEY_PACKETS</code></a></b> = <span title="1073741824">1073741824 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="need_rekey"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">need_rekey</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns <code>True</code> if a new set of keys needs to be + negotiated. This will be triggered during a packet read or write, so it + should be checked after every read or write, or at least after every + few. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if a new set of keys needs to be + negotiated + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="read_all"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read_all</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>, + <span class=sig-arg>check_rekey</span>=<span class=sig-default>False</span>)</span> + </h3> + Read as close to N bytes as possible, blocking as long as + necessary. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>n</b></code> - + number of bytes to read + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + the data read + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>EOFError</b></code> - + if the socket was closed before all the bytes could be + read + </dl> + </dd></dl> +</td></tr></table> + +<a name="read_message"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read_message</span>(<span class=sig-arg>self</span>)</span> + </h3> + Only one thread should ever be in this function (no other locking is + done). + <dl><dt></dt><dd> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if the packet is mangled + <dd><code><b>NeedRekeyException</b></code> - + if the transport should rekey + </dl> + </dd></dl> +</td></tr></table> + +<a name="readline"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>)</span> + </h3> + Read a line from the socket. This is done in a fairly inefficient + way, but is only used for initial banner negotiation so it's not worth + optimising. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="send_message"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_message</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Write a block of data using the current cipher, as an SSH block. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="set_inbound_cipher"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_inbound_cipher</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>block_engine</span>, + <span class=sig-arg>block_size</span>, + <span class=sig-arg>mac_engine</span>, + <span class=sig-arg>mac_size</span>, + <span class=sig-arg>mac_key</span>)</span> + </h3> + Switch inbound data cipher. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="set_keepalive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>interval</span>, + <span class=sig-arg>callback</span>)</span> + </h3> + Turn on/off the callback keepalive. If <code>interval</code> seconds + pass with no data read from or written to the socket, the callback will + be executed and the timer will be reset. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="set_log"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_log</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>log</span>)</span> + </h3> + Set the python log object to use for logging. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="set_outbound_cipher"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_outbound_cipher</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>block_engine</span>, + <span class=sig-arg>block_size</span>, + <span class=sig-arg>mac_engine</span>, + <span class=sig-arg>mac_size</span>, + <span class=sig-arg>mac_key</span>)</span> + </h3> + Switch outbound data cipher. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="REKEY_BYTES"></a> +<h3>REKEY_BYTES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1073741824"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1073741824 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="REKEY_PACKETS"></a> +<h3>REKEY_PACKETS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1073741824"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1073741824 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.PasswordRequiredException-class.html b/docs/private/paramiko.PasswordRequiredException-class.html new file mode 100644 index 0000000..2b7fb88 --- /dev/null +++ b/docs/private/paramiko.PasswordRequiredException-class.html @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.PasswordRequiredException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class PasswordRequiredException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.PasswordRequiredException-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.PasswordRequiredException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class PasswordRequiredException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+ + | + <b>PasswordRequiredException</b> +</pre><br /> + +<hr/> + +Exception raised when a password is needed to unlock a private key +file. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.RSAKey-class.html b/docs/private/paramiko.RSAKey-class.html new file mode 100644 index 0000000..0550d72 --- /dev/null +++ b/docs/private/paramiko.RSAKey-class.html @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.RSAKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class RSAKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.RSAKey-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.RSAKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type RSAKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>RSAKey</b> +</pre><br /> + +<hr/> + +Representation of an RSA key which can be used to sign and verify SSH2 +data. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Create a new instance of this public key type.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>, + <span class=summary-sig-arg>progress_func</span>)</span></code> +<br /> +Generate a new private RSA key. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>rpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_from_private_key_file"></a><span class="summary-sig"><span class="summary-sig-name">_from_private_key_file</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.RSAKey-class.html#_pkcs1imify" class="summary-sig-name"><code>_pkcs1imify</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +turn a 20-byte SHA1 hash into a blob of data as large as the key's N, +using PKCS1's "emsa-pkcs1-v1_5" encoding.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>other</span>)</span></code> +<br /> +Compare this key to another.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Read an SSH2-format private key file, looking for a string of the type +<code>"BEGIN xxx PRIVATE KEY"</code> for some <code>xxx</code>, +base64-decode the text we find, and return it as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>tag</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write an SSH2-format private key file in a form that can be read by +paramiko or openssh.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Create a key object by reading a private key file. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a base64 string containing the public part of this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an MD5 fingerprint of the public part of this key.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from PKey</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC': {'blocksize': 8, 'ciphe<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>=<span class=sig-default>None</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new instance of this public key type. If <code>msg</code> + is given, the key's public part(s) will be filled in from the message. + If <code>data</code> is given, the key's public part(s) will be filled + in from the string. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>msg</b></code> - + an optional SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing a public key of + this type. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + <dd><code><b>data</b></code> - + an optional string containing a public key of this type + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if a key cannot be created from the <code>data</code> or + <code>msg</code> given, or no key was passed in. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="can_sign"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if this key has the private part necessary + for signing data. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this is a private key. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bits"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + bits in the key. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="verify_ssh_sig"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + the data that was signed. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + an SSH signature message + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the signature verifies correctly; + <code>False</code> otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write private key contents into a file. If the password is not + <code>None</code>, the key is encrypted before writing. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the key file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + <dd><code><b>SSHException</b></code> - + if the key is invalid. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="_pkcs1imify"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_pkcs1imify</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + turn a 20-byte SHA1 hash into a blob of data as large as the key's + N, using PKCS1's "emsa-pkcs1-v1_5" encoding. totally + bizarre. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="generate"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>, + <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span> + </h3> + Generate a new private RSA key. This factory function can be used to + generate a new host key or authentication key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bits</b></code> - + number of bits the generated key should be. + <br /><i> + (type=int)</i> + <dd><code><b>progress_func</b></code> - + an optional function to call at key points in key generation + (used by <code>pyCrypto.PublicKey</code>). + <br /><i> + (type=function)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new private key + <br /><i> + (type=<a href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTP-class.html b/docs/private/paramiko.SFTP-class.html new file mode 100644 index 0000000..7ba1c7f --- /dev/null +++ b/docs/private/paramiko.SFTP-class.html @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTP</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTP + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTP-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTP-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTP</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a> --+ + | + <b>SFTP</b> +</pre><br /> + +<hr/> + +an alias for <a href="paramiko.SFTPClient-class.html" +class="link"><code>SFTPClient</code></a> for backwards compatability +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from SFTPClient</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create an SFTP client from an existing <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Change the "current directory" of this SFTP session.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Change the mode (permissions) of a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>uid</span>, + <span class=summary-sig-arg>gid</span>)</span></code> +<br /> +Change the owner (<code>uid</code>) and group (<code>gid</code>) of a +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SFTP session and its underlying channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>, + <span class=summary-sig-arg>t</span>)</span></code> +<br /> +Create an SFTP client channel from an open <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>remotepath</span>, + <span class=summary-sig-arg>localpath</span>)</span></code> +<br /> +Copy a remote file (<code>remotepath</code>) from the SFTP server to +the local host as <code>localpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the "current working directory" for this SFTP +session, as emulated by paramiko.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing the names of the entries in the given +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> objects corresponding to +files in the given <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system, without +following symbolic links (shortcuts).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Create a folder (directory) named <code>path</code> with numeric mode +<code>mode</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the normalized path (on the server) of a given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>localpath</span>, + <span class=summary-sig-arg>remotepath</span>)</span></code> +<br /> +Copy a local file (<code>localpath</code>) to the SFTP server as +<code>remotepath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the target of a symbolic link (shortcut).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>oldpath</span>, + <span class=summary-sig-arg>newpath</span>)</span></code> +<br /> +Rename a file or folder from <code>oldpath</code> to +<code>newpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the folder named <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>source</span>, + <span class=summary-sig-arg>dest</span>)</span></code> +<br /> +Create a symbolic link (shortcut) of the <code>source</code> path at +<code>destination</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>times</span>)</span></code> +<br /> +Set the access and modified times of the file specified by +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd" class="summary-sig-name"><code>_adjust_cwd</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return an adjusted path if we're emulating a "current working +directory" for the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_async_request" class="summary-sig-name"><code>_async_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>fileobj</span>, + <span class=summary-sig-arg>t</span>, + <span class="summary-sig-vararg">*arg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_convert_status" class="summary-sig-name"><code>_convert_status</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Raises EOFError or IOError on error status; otherwise does +nothing.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_finish_responses" class="summary-sig-name"><code>_finish_responses</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>fileobj</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_read_response" class="summary-sig-name"><code>_read_response</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>waitfor</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_request" class="summary-sig-name"><code>_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class="summary-sig-vararg">*arg</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BaseSFTP</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>packet</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>out</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPAttributes-class.html b/docs/private/paramiko.SFTPAttributes-class.html new file mode 100644 index 0000000..a98d008 --- /dev/null +++ b/docs/private/paramiko.SFTPAttributes-class.html @@ -0,0 +1,385 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPAttributes</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPAttributes + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPAttributes-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPAttributes-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPAttributes</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SFTPAttributes</b> +</pre><br /> + +<hr/> + +Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode. It attemps to mirror the object returned by +<code>os.stat</code> as closely as possible, so it may have the following +fields, with the same meanings as those returned by an +<code>os.stat</code> object: +<ul> + <li> + st_size + </li> + <li> + st_uid + </li> + <li> + st_gid + </li> + <li> + st_mode + </li> + <li> + st_atime + </li> + <li> + st_mtime + </li> +</ul> +Because SFTP allows flags to have other arbitrary named attributes, +these are stored in a dict named <code>attr</code>. Occasionally, the +filename is also stored, in <code>filename</code>. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Create a new (empty) SFTPAttributes object.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +create a unix-style long description of the file (like ls -l)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#from_stat" class="summary-sig-name"><code>from_stat</code></a>(<span class=summary-sig-arg>cls</span>, + <span class=summary-sig-arg>obj</span>, + <span class=summary-sig-arg>filename</span>)</span></code> +<br /> +Create an SFTPAttributes object from an existing <code>stat</code> +object (an object returned by <code>os.stat</code>). <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_debug_str"></a><span class="summary-sig"><span class="summary-sig-name">_debug_str</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_from_msg"></a><span class="summary-sig"><span class="summary-sig-name">_from_msg</span>(<span class=summary-sig-arg>cls</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>filename</span>)</span></code> +<br /> + <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_pack"></a><span class="summary-sig"><span class="summary-sig-name">_pack</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_rwx"></a><span class="summary-sig"><span class="summary-sig-name">_rwx</span>(<span class=summary-sig-arg>n</span>, + <span class=summary-sig-arg>suid</span>, + <span class=summary-sig-arg>sticky</span>)</span></code> +<br /> + <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_unpack"></a><span class="summary-sig"><span class="summary-sig-name">_unpack</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></b> = <span title="2147483648L"><code>2147483648L </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></b> = <span title="2">2 </span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new (empty) SFTPAttributes object. All fields will be + empty. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + create a unix-style long description of the file (like ls -l) + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Method Details</th></tr> +</table> + +<a name="from_stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">from_stat</span>(<span class=sig-arg>cls</span>, + <span class=sig-arg>obj</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span> + </h3> + Create an SFTPAttributes object from an existing <code>stat</code> + object (an object returned by <code>os.stat</code>). + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>obj</b></code> - + an object returned by <code>os.stat</code> (or + equivalent). + <br /><i> + (type=object)</i> + <dd><code><b>filename</b></code> - + the filename associated with this file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object with the same + attribute fields. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_AMTIME"></a> +<h3>FLAG_AMTIME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_EXTENDED"></a> +<h3>FLAG_EXTENDED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>long</code> + + </dd> +<span title="2147483648L"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2147483648L </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_PERMISSIONS"></a> +<h3>FLAG_PERMISSIONS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_SIZE"></a> +<h3>FLAG_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_UIDGID"></a> +<h3>FLAG_UIDGID</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPClient-class.html b/docs/private/paramiko.SFTPClient-class.html new file mode 100644 index 0000000..a6ed5c0 --- /dev/null +++ b/docs/private/paramiko.SFTPClient-class.html @@ -0,0 +1,1091 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPClient</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPClient + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPClient-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPClient-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPClient</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <b>SFTPClient</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTP-class.html"><code>SFTP</code></a></dd></dl> + +<hr/> + +SFTP client object. <code>SFTPClient</code> is used to open an sftp +session across an open ssh <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> and do remote file +operations. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create an SFTP client from an existing <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Change the "current directory" of this SFTP session.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Change the mode (permissions) of a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>uid</span>, + <span class=summary-sig-arg>gid</span>)</span></code> +<br /> +Change the owner (<code>uid</code>) and group (<code>gid</code>) of a +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SFTP session and its underlying channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>, + <span class=summary-sig-arg>t</span>)</span></code> +<br /> +Create an SFTP client channel from an open <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>remotepath</span>, + <span class=summary-sig-arg>localpath</span>)</span></code> +<br /> +Copy a remote file (<code>remotepath</code>) from the SFTP server to +the local host as <code>localpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the "current working directory" for this SFTP +session, as emulated by paramiko.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing the names of the entries in the given +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> objects corresponding to +files in the given <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system, without +following symbolic links (shortcuts).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Create a folder (directory) named <code>path</code> with numeric mode +<code>mode</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the normalized path (on the server) of a given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>localpath</span>, + <span class=summary-sig-arg>remotepath</span>)</span></code> +<br /> +Copy a local file (<code>localpath</code>) to the SFTP server as +<code>remotepath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the target of a symbolic link (shortcut).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>oldpath</span>, + <span class=summary-sig-arg>newpath</span>)</span></code> +<br /> +Rename a file or folder from <code>oldpath</code> to +<code>newpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the folder named <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>source</span>, + <span class=summary-sig-arg>dest</span>)</span></code> +<br /> +Create a symbolic link (shortcut) of the <code>source</code> path at +<code>destination</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>times</span>)</span></code> +<br /> +Set the access and modified times of the file specified by +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd" class="summary-sig-name"><code>_adjust_cwd</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return an adjusted path if we're emulating a "current working +directory" for the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_async_request"></a><span class="summary-sig"><span class="summary-sig-name">_async_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>fileobj</span>, + <span class=summary-sig-arg>t</span>, + <span class="summary-sig-vararg">*arg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_convert_status" class="summary-sig-name"><code>_convert_status</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Raises EOFError or IOError on error status; otherwise does +nothing.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_finish_responses"></a><span class="summary-sig"><span class="summary-sig-name">_finish_responses</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>fileobj</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_response"></a><span class="summary-sig"><span class="summary-sig-name">_read_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>waitfor</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_request"></a><span class="summary-sig"><span class="summary-sig-name">_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class="summary-sig-vararg">*arg</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BaseSFTP</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>packet</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>out</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sock</span>)</span> + <br /><i>(Constructor)</i> + </h3> + <p>Create an SFTP client from an existing <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. The channel should already have + requested the <code>"sftp"</code> subsystem.</p> + An alternate way to create an SFTP client context is by using <a + href="paramiko.SFTPClient-class.html#from_transport" + class="link"><code>from_transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sock</b></code> - + an open <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> using the + <code>"sftp"</code> subsystem. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="chdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + new current working directory + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the requested path doesn't exist on the server + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="chmod"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chmod</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>mode</span>)</span> + </h3> + Change the mode (permissions) of a file. The permissions are + unix-style and identical to those used by python's + <code>os.chmod</code> function. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to change the permissions of. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + new permissions. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="chown"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chown</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>uid</span>, + <span class=sig-arg>gid</span>)</span> + </h3> + Change the owner (<code>uid</code>) and group (<code>gid</code>) of + a file. As with python's <code>os.chown</code> function, you must pass + both arguments, so if you only want to change one, use <a + href="paramiko.SFTPClient-class.html#stat" + class="link"><code>stat</code></a> first to retrieve the current owner + and group. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to change the owner and group of. + <br /><i> + (type=string)</i> + <dd><code><b>uid</b></code> - + new owner's uid + <br /><i> + (type=int)</i> + <dd><code><b>gid</b></code> - + new group id + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the SFTP session and its underlying channel. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>, + <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span> + </h3> + <p>Open a file on the remote server. The arguments are the same as for + python's built-in <code>file</code> (aka <code>open</code>). A + file-like object is returned, which closely mimics the behavior of a + normal python file object.</p> + <p>The mode indicates how the file is to be opened: <code>'r'</code> + for reading, <code>'w'</code> for writing (truncating an existing + file), <code>'a'</code> for appending, <code>'r+'</code> for + reading/writing, <code>'w+'</code> for reading/writing (truncating an + existing file), <code>'a+'</code> for reading/appending. The python + <code>'b'</code> flag is ignored, since SSH treats all files as binary. + The <code>'U'</code> flag is supported in a compatible way.</p> + <p>Since 1.5.2, an <code>'x'</code> 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 <code>O_EXCL</code> flag in posix.</p> + The file will be buffered in standard python style by default, but + can be altered with the <code>bufsize</code> parameter. <code>0</code> + turns off buffering, <code>1</code> uses line buffering, and any number + greater than 1 (<code>>1</code>) uses that specific buffer size. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to open. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + mode (python-style) to open in. + <br /><i> + (type=string)</i> + <dd><code><b>bufsize</b></code> - + desired buffering (-1 = default buffer size) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a file object representing the open file. + <br /><i> + (type=SFTPFile)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file could not be opened. + </dl> + </dd></dl> +</td></tr></table> + +<a name="get"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>remotepath</span>, + <span class=sig-arg>localpath</span>)</span> + </h3> + Copy a remote file (<code>remotepath</code>) from the SFTP server to + the local host as <code>localpath</code>. Any exception raised by + operations will be passed through. This method is primarily provided as + a convenience. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>remotepath</b></code> - + the remote file to copy + <br /><i> + (type=str)</i> + <dd><code><b>localpath</b></code> - + the destination path on the local host + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="getcwd"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">getcwd</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the "current working directory" for this SFTP + session, as emulated by paramiko. If no directory has been set with <a + href="paramiko.SFTPClient-class.html#chdir" + class="link"><code>chdir</code></a>, this method will return + <code>None</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the current working directory on the server, or + <code>None</code> + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="listdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">listdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span> + </h3> + Return a list containing the names of the entries in the given + <code>path</code>. The list is in arbitrary order. It does not include + the special entries <code>'.'</code> and <code>'..'</code> even if they + are present in the folder. This method is meant to mirror + <code>os.listdir</code> as closely as possible. For a list of full <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects, see <a + href="paramiko.SFTPClient-class.html#listdir_attr" + class="link"><code>listdir_attr</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to list (defaults to <code>'.'</code>) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of filenames + <br /><i> + (type=list of str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="listdir_attr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">listdir_attr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span> + </h3> + Return a list containing <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects corresponding to + files in the given <code>path</code>. The list is in arbitrary order. + It does not include the special entries <code>'.'</code> and + <code>'..'</code> even if they are present in the folder. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to list (defaults to <code>'.'</code>) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of attributes + <br /><i> + (type=list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="lstat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Retrieve information about a file on the remote system, without + following symbolic links (shortcuts). This otherwise behaves exactly + the same as <a href="paramiko.SFTPClient-class.html#stat" + class="link"><code>stat</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the filename to stat. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about the given file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="mkdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>511</span>)</span> + </h3> + Create a folder (directory) named <code>path</code> with numeric + mode <code>mode</code>. The default mode is 0777 (octal). On some + systems, mode is ignored. Where it is used, the current umask value is + first masked out. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + name of the folder to create. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + permissions (posix-style) for the newly-created folder. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="normalize"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">normalize</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return the normalized path (on the server) of a given path. This can + be used to quickly resolve symbolic links or determine what the server + is considering to be the "current folder" (by passing + <code>'.'</code> as <code>path</code>). + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to be normalized. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + normalized form of the given path. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path can't be resolved on the server + </dl> + </dd></dl> +</td></tr></table> + +<a name="file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>, + <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span> + </h3> + <p>Open a file on the remote server. The arguments are the same as for + python's built-in <code>file</code> (aka <code>open</code>). A + file-like object is returned, which closely mimics the behavior of a + normal python file object.</p> + <p>The mode indicates how the file is to be opened: <code>'r'</code> + for reading, <code>'w'</code> for writing (truncating an existing + file), <code>'a'</code> for appending, <code>'r+'</code> for + reading/writing, <code>'w+'</code> for reading/writing (truncating an + existing file), <code>'a+'</code> for reading/appending. The python + <code>'b'</code> flag is ignored, since SSH treats all files as binary. + The <code>'U'</code> flag is supported in a compatible way.</p> + <p>Since 1.5.2, an <code>'x'</code> 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 <code>O_EXCL</code> flag in posix.</p> + The file will be buffered in standard python style by default, but + can be altered with the <code>bufsize</code> parameter. <code>0</code> + turns off buffering, <code>1</code> uses line buffering, and any number + greater than 1 (<code>>1</code>) uses that specific buffer size. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to open. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + mode (python-style) to open in. + <br /><i> + (type=string)</i> + <dd><code><b>bufsize</b></code> - + desired buffering (-1 = default buffer size) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a file object representing the open file. + <br /><i> + (type=SFTPFile)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file could not be opened. + </dl> + </dd></dl> +</td></tr></table> + +<a name="put"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">put</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>localpath</span>, + <span class=sig-arg>remotepath</span>)</span> + </h3> + <p>Copy a local file (<code>localpath</code>) to the SFTP server as + <code>remotepath</code>. Any exception raised by operations will be + passed through. This method is primarily provided as a convenience.</p> + The SFTP operations use pipelining for speed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>localpath</b></code> - + the local file to copy + <br /><i> + (type=str)</i> + <dd><code><b>remotepath</b></code> - + the destination path on the SFTP server + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="readlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return the target of a symbolic link (shortcut). You can use <a + href="paramiko.SFTPClient-class.html#symlink" + class="link"><code>symlink</code></a> to create these. The result may + be either an absolute or relative pathname. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the symbolic link file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + target path. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="remove"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the file at the given path. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path (absolute or relative) of the file to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path refers to a folder (directory). Use <a + href="paramiko.SFTPClient-class.html#rmdir" + class="link"><code>rmdir</code></a> to remove a folder. + </dl> + </dd></dl> +</td></tr></table> + +<a name="rename"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>oldpath</span>, + <span class=sig-arg>newpath</span>)</span> + </h3> + Rename a file or folder from <code>oldpath</code> to + <code>newpath</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>oldpath</b></code> - + existing name of the file or folder. + <br /><i> + (type=string)</i> + <dd><code><b>newpath</b></code> - + new name for the file or folder. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if <code>newpath</code> is a folder, or something else goes + wrong. + </dl> + </dd></dl> +</td></tr></table> + +<a name="rmdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the folder named <code>path</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + name of the folder to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + <p>Retrieve information about a file on the remote system. The return + value is an object whose attributes correspond to the attributes of + python's <code>stat</code> structure as returned by + <code>os.stat</code>, except that it contains fewer fields. An SFTP + server may return as much or as little info as it wants, so the results + may vary from server to server.</p> + <p>Unlike a python <code>stat</code> object, the result may not be + accessed as a tuple. This is mostly due to the author's slack + factor.</p> + The fields supported are: <code>st_mode</code>, + <code>st_size</code>, <code>st_uid</code>, <code>st_gid</code>, + <code>st_atime</code>, and <code>st_mtime</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the filename to stat. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about the given file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="symlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>source</span>, + <span class=sig-arg>dest</span>)</span> + </h3> + Create a symbolic link (shortcut) of the <code>source</code> path at + <code>destination</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>source</b></code> - + path of the original file. + <br /><i> + (type=string)</i> + <dd><code><b>dest</b></code> - + path of the newly created symlink. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="remove"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">unlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the file at the given path. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path (absolute or relative) of the file to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path refers to a folder (directory). Use <a + href="paramiko.SFTPClient-class.html#rmdir" + class="link"><code>rmdir</code></a> to remove a folder. + </dl> + </dd></dl> +</td></tr></table> + +<a name="utime"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">utime</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>times</span>)</span> + </h3> + Set the access and modified times of the file specified by + <code>path</code>. If <code>times</code> is <code>None</code>, then the + file's access and modified times are set to the current time. + Otherwise, <code>times</code> must be a 2-tuple of numbers, of the form + <code>(atime, mtime)</code>, which is used to set the access and + modified times, respectively. This bizarre API is mimicked from python + for the sake of consistency -- I apologize. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to modify. + <br /><i> + (type=string)</i> + <dd><code><b>times</b></code> - + <code>None</code> or a tuple of (access time, modified time) + in standard internet epoch time (seconds since 01 January 1970 + GMT). + <br /><i> + (type=tuple of int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_adjust_cwd"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_adjust_cwd</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return an adjusted path if we're emulating a "current working + directory" for the server. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_convert_status"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_convert_status</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Raises EOFError or IOError on error status; otherwise does + nothing. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Method Details</th></tr> +</table> + +<a name="from_transport"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">from_transport</span>(<span class=sig-arg>selfclass</span>, + <span class=sig-arg>t</span>)</span> + </h3> + Create an SFTP client channel from an open <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>t</b></code> - + an open <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> which is already + authenticated. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> object, referring to an + sftp session (channel) across the transport. + <br /><i> + (type=<a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPError-class.html b/docs/private/paramiko.SFTPError-class.html new file mode 100644 index 0000000..2b7aa97 --- /dev/null +++ b/docs/private/paramiko.SFTPError-class.html @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPError</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPError + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPError-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPError-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class SFTPError</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>SFTPError</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPFile-class.html b/docs/private/paramiko.SFTPFile-class.html new file mode 100644 index 0000000..0c59d5f --- /dev/null +++ b/docs/private/paramiko.SFTPFile-class.html @@ -0,0 +1,667 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPFile-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPFile</h2> + +<pre class="base-tree"> + <a href="__builtin__.object-class.html"><code>object</code></a> --+ + | +<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+ + | + <b>SFTPFile</b> +</pre><br /> + +<hr/> + +Proxy object for a file on the remote server, in client mode SFTP. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sftp</span>, + <span class=summary-sig-arg>handle</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hash_algorithm</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>length</span>, + <span class=summary-sig-arg>block_size</span>)</span></code> +<br /> +Ask the server for a hash of a section of this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> float +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the timeout in seconds (as a float) associated with the socket +or ssh <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a> used for this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#prefetch" class="summary-sig-name"><code>prefetch</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Pre-fetch the remaining contents of this file in anticipation of +future <a href="paramiko.BufferedFile-class.html#read" +class="link"><code>read</code></a> calls.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#set_pipelined" class="summary-sig-name"><code>set_pipelined</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>pipelined</span>)</span></code> +<br /> +Turn on/off the pipelining of write operations to this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>blocking</span>)</span></code> +<br /> +Set blocking or non-blocking mode on the underiying socket or ssh <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Set a timeout on read/write operations on the underlying socket or ssh +<a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Retrieve information about this file from the remote system.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_async_response"></a><span class="summary-sig"><span class="summary-sig-name">_async_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_check_exception" class="summary-sig-name"><code>_check_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +if there's a saved exception, raise & clear it</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +<i>(subclass override)</i> Return the size of the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_prefetch"></a><span class="summary-sig"><span class="summary-sig-name">_prefetch</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +<i>(subclass override)</i> Read data from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_prefetch"></a><span class="summary-sig"><span class="summary-sig-name">_read_prefetch</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +<i>(subclass override)</i> Write data into the stream.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>newline</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Subclasses call this method to initialize the BufferedFile.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></b> = <span title="32768">32768 </span></td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="check"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hash_algorithm</span>, + <span class=sig-arg>offset</span>=<span class=sig-default>0</span>, + <span class=sig-arg>length</span>=<span class=sig-default>0</span>, + <span class=sig-arg>block_size</span>=<span class=sig-default>0</span>)</span> + </h3> + <p>Ask the server for a hash of a section of this file. This can be + used to verify a successful upload or download, or for various + rsync-like operations.</p> + <p>The file is hashed from <code>offset</code>, for <code>length</code> + bytes. If <code>length</code> is 0, the remainder of the file is + hashed. Thus, if both <code>offset</code> and <code>length</code> are + zero, the entire file is hashed.</p> + <p>Normally, <code>block_size</code> will be 0 (the default), and this + method will return a byte string representing the requested hash (for + example, a string of length 16 for MD5, or 20 for SHA-1). If a non-zero + <code>block_size</code> is given, each chunk of the file (from + <code>offset</code> to <code>offset + length</code>) of + <code>block_size</code> bytes is computed as a separate hash. The hash + results are all concatenated and returned as a single string.</p> + For example, <code>check('sha1', 0, 1024, 512)</code> will return a + string of length 40. The first 20 bytes will be the SHA-1 of the first + 512 bytes of the file, and the last 20 bytes will be the SHA-1 of the + next 512 bytes. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hash_algorithm</b></code> - + the name of the hash algorithm to use (normally + <code>"sha1"</code> or + <code>"md5"</code>) + <br /><i> + (type=str)</i> + <dd><code><b>offset</b></code> - + offset into the file to begin hashing (0 means to start from + the beginning) + <br /><i> + (type=int or long)</i> + <dd><code><b>length</b></code> - + number of bytes to hash (0 means continue to the end of the + file) + <br /><i> + (type=int or long)</i> + <dd><code><b>block_size</b></code> - + number of bytes to hash per result (must not be less than 256; + 0 means to compute only one hash of the entire segment) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + string of bytes representing the hash of each block, + concatenated together + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the server doesn't support the "check-file" + extension, or possibly doesn't support the hash algorithm + requested + </dl> +<p><b>Note:</b> Many (most?) servers don't support this extension yet. +</p> + +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>_async</span>=<span class=sig-default>False</span>)</span> + </h3> + Close the file. Future read and write operations will fail. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.BufferedFile-class.html#close"><code>paramiko.BufferedFile.close</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="gettimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the timeout in seconds (as a float) associated with the + socket or ssh <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> used for this file. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + float + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#gettimeout" +class="link"><code>Channel.gettimeout</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="prefetch"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">prefetch</span>(<span class=sig-arg>self</span>)</span> + </h3> + Pre-fetch the remaining contents of this file in anticipation of + future <a href="paramiko.BufferedFile-class.html#read" + class="link"><code>read</code></a> calls. If reading the entire file, + pre-fetching can dramatically improve the download speed by avoiding + roundtrip latency. The file's contents are incrementally buffered in a + background thread. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.5.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="seek"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span> + </h3> + Set the file's current position, like stdio's <code>fseek</code>. + Not all file objects support seeking. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position to move to within the file, relative to + <code>whence</code>. + <br /><i> + (type=int)</i> + <dd><code><b>whence</b></code> - + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file doesn't support random access. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.BufferedFile-class.html#seek"><code>paramiko.BufferedFile.seek</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or +<code>'a+'</code>), any seek operations will be undone at the next write +(as the file position will move back to the end of the file). +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_pipelined"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_pipelined</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>pipelined</span>=<span class=sig-default>True</span>)</span> + </h3> + <p>Turn on/off the pipelining of write operations to this file. When + pipelining is on, paramiko won't wait for the server response after + each write operation. Instead, they're collected as they come in. At + the first non-write operation (including <a + href="paramiko.SFTPFile-class.html#close" + class="link"><code>close</code></a>), all remaining server responses + are collected. This means that if there was an error with one of your + later writes, an exception might be thrown from within <a + href="paramiko.SFTPFile-class.html#close" + class="link"><code>close</code></a> instead of <a + href="paramiko.BufferedFile-class.html#write" + class="link"><code>write</code></a>.</p> + By default, files are <i>not</i> pipelined. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>pipelined</b></code> - + <code>True</code> if pipelining should be turned on for this + file; <code>False</code> otherwise + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="setblocking"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>blocking</span>)</span> + </h3> + Set blocking or non-blocking mode on the underiying socket or ssh <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>blocking</b></code> - + 0 to set non-blocking mode; non-0 to set blocking mode. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#setblocking" +class="link"><code>Channel.setblocking</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="settimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>)</span> + </h3> + Set a timeout on read/write operations on the underlying socket or + ssh <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a pending read/write operation before + raising <code>socket.timeout</code>, or <code>None</code> for no + timeout + <br /><i> + (type=float)</i> + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#settimeout" +class="link"><code>Channel.settimeout</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span> + </h3> + Retrieve information about this file from the remote system. This is + exactly like <a href="paramiko.SFTP-class.html#stat" + class="link"><code>SFTP.stat</code></a>, except that it operates on an + already-open file. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about this file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_check_exception"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_check_exception</span>(<span class=sig-arg>self</span>)</span> + </h3> + if there's a saved exception, raise & clear it + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_get_size"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_get_size</span>(<span class=sig-arg>self</span>)</span> + </h3> + <i>(subclass override)</i> Return the size of the file. This is + called from within <a + href="../private/paramiko.BufferedFile-class.html#_set_mode" + class="link"><code>_set_mode</code></a> if the file is opened in append + mode, so the file position can be tracked and <a + href="paramiko.BufferedFile-class.html#seek" + class="link"><code>seek</code></a> and <a + href="paramiko.BufferedFile-class.html#tell" + class="link"><code>tell</code></a> will work correctly. If the file is + a stream that can't be randomly accessed, you don't need to override + this method, + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BufferedFile-class.html#_get_size"><code>paramiko.BufferedFile._get_size</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>)</span> + </h3> + <i>(subclass override)</i> Read data from the stream. Return + <code>None</code> or raise <code>EOFError</code> to indicate EOF. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BufferedFile-class.html#_read"><code>paramiko.BufferedFile._read</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <i>(subclass override)</i> Write data into the stream. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BufferedFile-class.html#_write"><code>paramiko.BufferedFile._write</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MAX_REQUEST_SIZE"></a> +<h3>MAX_REQUEST_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32768"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32768 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPHandle-class.html b/docs/private/paramiko.SFTPHandle-class.html new file mode 100644 index 0000000..958dbba --- /dev/null +++ b/docs/private/paramiko.SFTPHandle-class.html @@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPHandle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPHandle + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPHandle-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPHandle-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPHandle</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SFTPHandle</b> +</pre><br /> + +<hr/> + +<p>Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation. Each handle has a string representation +used by the client to refer to the underlying file.</p> +Server implementations can (and should) subclass SFTPHandle to +implement features of a file handle, like <a +href="paramiko.SFTPHandle-class.html#stat" +class="link"><code>stat</code></a> or <a +href="paramiko.SFTPHandle-class.html#chattr" +class="link"><code>chattr</code></a>. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Change the attributes of this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +When a client closes a file, this method is called on the handle.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>length</span>)</span></code> +<br /> +Read up to <code>length</code> bytes from this file, starting at +position <code>offset</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> object referring to this +open file, or an error code.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write <code>data</code> into this file at position +<code>offset</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_name"></a><span class="summary-sig"><span class="summary-sig-name">_get_name</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPHandle-class.html#_get_next_files" class="summary-sig-name"><code>_get_next_files</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Used by the SFTP server code to retreive a cached directory +listing.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPHandle-class.html#_set_files" class="summary-sig-name"><code>_set_files</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>files</span>)</span></code> +<br /> +Used by the SFTP server code to cache a directory listing.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_name"></a><span class="summary-sig"><span class="summary-sig-name">_set_name</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="chattr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + Change the attributes of this file. The <code>attr</code> object + will contain only those fields provided by the client in its request, + so you should check for the presence of fields before using them. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>attr</b></code> - + the attributes to change on this file. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>When a client closes a file, this method is called on the handle. + Normally you would use this method to close the underlying OS level + file object(s).</p> + The default implementation checks for attributes on + <code>self</code> named <code>readfile</code> and/or + <code>writefile</code>, and if either or both are present, their + <code>close()</code> methods are called. This means that if you are + using the default implementations of <a + href="paramiko.SFTPHandle-class.html#read" + class="link"><code>read</code></a> and <a + href="paramiko.SFTPHandle-class.html#write" + class="link"><code>write</code></a>, this method's default + implementation should be fine also. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>length</span>)</span> + </h3> + <p>Read up to <code>length</code> bytes from this file, starting at + position <code>offset</code>. The offset may be a python long, since + SFTP allows it to be 64 bits.</p> + <p>If the end of the file has been reached, this method may return an + empty string to signify EOF, or it may also return <a + href="../private/paramiko-module.html#SFTP_EOF" + class="link"><code>SFTP_EOF</code></a>.</p> + The default implementation checks for an attribute on + <code>self</code> named <code>readfile</code>, and if present, performs + the read operation on the python file-like object found there. (This is + meant as a time saver for the common case where you are wrapping a + python file object.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position in the file to start reading from. + <br /><i> + (type=int or long)</i> + <dd><code><b>length</b></code> - + number of bytes to attempt to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data read from the file, or an SFTP error code. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return an <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object referring to this + open file, or an error code. This is equivalent to <a + href="../private/paramiko.SFTPServerInterface-class.html#stat" + class="link"><code>SFTPServerInterface.stat</code></a>, except it's + called on an open file instead of a path. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an attributes object for the given file, or an SFTP error code + (like <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a>). + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <p>Write <code>data</code> into this file at position + <code>offset</code>. Extending the file past its original end is + expected. Unlike python's normal <code>write()</code> methods, this + method cannot do a partial write: it must write all of + <code>data</code> or else return an error.</p> + The default implementation checks for an attribute on + <code>self</code> named <code>writefile</code>, and if present, + performs the write operation on the python file-like object found + there. The attribute is named differently from <code>readfile</code> to + make it easy to implement read-only (or write-only) files, but if both + attributes are present, they should refer to the same file. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position in the file to start reading from. + <br /><i> + (type=int or long)</i> + <dd><code><b>data</b></code> - + data to write into the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_get_next_files"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_get_next_files</span>(<span class=sig-arg>self</span>)</span> + </h3> + Used by the SFTP server code to retreive a cached directory + listing. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_set_files"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_set_files</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>files</span>)</span> + </h3> + Used by the SFTP server code to cache a directory listing. (In the + SFTP protocol, listing a directory is a multi-stage process requiring a + temporary handle.) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPServer-class.html b/docs/private/paramiko.SFTPServer-class.html new file mode 100644 index 0000000..07a16b0 --- /dev/null +++ b/docs/private/paramiko.SFTPServer-class.html @@ -0,0 +1,511 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPServer</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPServer + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SFTPServer-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPServer-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPServer</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a> --+ + | + <a href="__builtin__.object-class.html"><code>object</code></a> --+ | + | | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <b>SFTPServer</b> +</pre><br /> + +<hr/> + +Server-side SFTP subsystem support. Since this is a <a +href="paramiko.SubsystemHandler-class.html" +class="link"><code>SubsystemHandler</code></a>, it can be (and is meant +to be) set as the handler for <code>"sftp"</code> requests. Use +<a href="paramiko.Transport-class.html#set_subsystem_handler" +class="link"><code>Transport.set_subsystem_handler</code></a> to activate +this class. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>server</span>, + <span class=summary-sig-arg>sftp_si</span>, + <span class="summary-sig-vararg">*largs</span>, + <span class="summary-sig-kwarg">**kwargs</span>)</span></code> +<br /> +The constructor for SFTPServer is meant to be called from within the +<a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> as a subsystem handler.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#convert_errno" class="summary-sig-name"><code>convert_errno</code></a>(<span class=summary-sig-arg>e</span>)</span></code> +<br /> +Convert an errno value (as from an <code>OSError</code> or +<code>IOError</code>) into a standard SFTP result code. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Perform any cleanup at the end of a subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#set_file_attr" class="summary-sig-name"><code>set_file_attr</code></a>(<span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Change a file's attributes on the local filesystem. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>transport</span>, + <span class=summary-sig-arg>channel</span>)</span></code> +<br /> +Process an ssh subsystem in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_check_file"></a><span class="summary-sig"><span class="summary-sig-name">_check_file</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServer-class.html#_convert_pflags" class="summary-sig-name"><code>_convert_pflags</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>pflags</span>)</span></code> +<br /> +convert SFTP-style open() flags to python's os.open() flags</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_open_folder"></a><span class="summary-sig"><span class="summary-sig-name">_open_folder</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>path</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_process"></a><span class="summary-sig"><span class="summary-sig-name">_process</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_read_folder"></a><span class="summary-sig"><span class="summary-sig-name">_read_folder</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>folder</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_response"></a><span class="summary-sig"><span class="summary-sig-name">_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>t</span>, + <span class="summary-sig-vararg">*arg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_handle_response"></a><span class="summary-sig"><span class="summary-sig-name">_send_handle_response</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>handle</span>, + <span class=summary-sig-arg>folder</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_status"></a><span class="summary-sig"><span class="summary-sig-name">_send_status</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>request_number</span>, + <span class=summary-sig-arg>code</span>, + <span class=summary-sig-arg>desc</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BaseSFTP</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>t</span>, + <span class=summary-sig-arg>packet</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>out</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from SubsystemHandler</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> object associated with this +channel and subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SubsystemHandler-class.html#_run" class="summary-sig-name"><code>_run</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from _Verbose</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>format</span>, + <span class="summary-sig-vararg">*args</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td> +<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>server</span>, + <span class=sig-arg>sftp_si</span>=<span class=sig-default><class 'paramiko.SFTPServerInterface'></span>, + <span class="sig-vararg">*largs</span>, + <span class="sig-kwarg">**kwargs</span>)</span> + <br /><i>(Constructor)</i> + </h3> + The constructor for SFTPServer is meant to be called from within the + <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> as a subsystem handler. + <code>server</code> and any additional parameters or keyword parameters + are passed from the original call to <a + href="paramiko.Transport-class.html#set_subsystem_handler" + class="link"><code>Transport.set_subsystem_handler</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + channel passed from the <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>server</b></code> - + the server object associated with this channel and + subsystem + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a>)</i> + <dd><code><b>sftp_si</b></code> - + a subclass of <a + href="../private/paramiko.SFTPServerInterface-class.html" + class="link"><code>SFTPServerInterface</code></a> to use for + handling individual requests. + <br /><i> + (type=class)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="finish_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span> + </h3> + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>paramiko.SubsystemHandler.finish_subsystem</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="start_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>transport</span>, + <span class=sig-arg>channel</span>)</span> + </h3> + <p>Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed.</p> + The combination of <code>transport</code> and <code>channel</code> + are unique; this handler corresponds to exactly one <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on one <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>transport</b></code> - + the server-mode <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>paramiko.SubsystemHandler.start_subsystem</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> is closed. This can be done by +checking <a href="paramiko.Transport-class.html#is_active" +class="link"><code>Transport.is_active</code></a> or noticing an EOF on +the <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>. If this method loops forever +without checking for this case, your python interpreter may refuse to +exit because this thread will still be running. +</p> + + </dd></dl> +</td></tr></table> + +<a name="_convert_pflags"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_convert_pflags</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>pflags</span>)</span> + </h3> + convert SFTP-style open() flags to python's os.open() flags + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="convert_errno"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">convert_errno</span>(<span class=sig-arg>e</span>)</span> + </h3> + Convert an errno value (as from an <code>OSError</code> or + <code>IOError</code>) into a standard SFTP result code. This is a + convenience function for trapping exceptions in server code and + returning an appropriate result. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>e</b></code> - + an errno code, as from <code>OSError.errno</code>. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE" + class="link"><code>SFTP_NO_SUCH_FILE</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="set_file_attr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_file_attr</span>(<span class=sig-arg>filename</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + <p>Change a file's attributes on the local filesystem. The contents of + <code>attr</code> are used to change the permissions, owner, group + ownership, and/or modification & access time of the file, depending + on which attributes are present in <code>attr</code>.</p> + This is meant to be a handy helper function for translating SFTP + file requests into local file operations. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to alter (should usually be an absolute + path). + <br /><i> + (type=str)</i> + <dd><code><b>attr</b></code> - + attributes to change. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SFTPServerInterface-class.html b/docs/private/paramiko.SFTPServerInterface-class.html new file mode 100644 index 0000000..a0bd429 --- /dev/null +++ b/docs/private/paramiko.SFTPServerInterface-class.html @@ -0,0 +1,744 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPServerInterface</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPServerInterface + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.SFTPServerInterface-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPServerInterface</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SFTPServerInterface</b> +</pre><br /> + +<hr/> + +<p>This class defines an interface for controlling the behavior of +paramiko when using the <a href="paramiko.SFTPServer-class.html" +class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP +server.</p> +Methods on this class are called from the SFTP session's thread, so +you can block as long as necessary without affecting other sessions (even +other SFTP sessions). However, raising an exception will usually cause +the SFTP session to abruptly end, so you will usually want to catch +exceptions and return an appropriate error code. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>server</span>, + <span class="summary-sig-vararg">*largs</span>, + <span class="summary-sig-kwarg">**kwargs</span>)</span></code> +<br /> +Create a new SFTPServerInterface object.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#canonicalize" class="summary-sig-name"><code>canonicalize</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the canonical form of a path on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Change the attributes of a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#list_folder" class="summary-sig-name"><code>list_folder</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list of files within a given folder.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return an <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> object for a path on the +server, or an error code.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Create a new directory with the given attributes.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#open" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>flags</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Open a file on the server and create a handle for future operations on +that file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str <i>or error code</i> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the target of a symbolic link (or shortcut) on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Delete a file, if possible.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>oldpath</span>, + <span class=summary-sig-arg>newpath</span>)</span></code> +<br /> +Rename (or move) a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove a directory if it exists.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#session_ended" class="summary-sig-name"><code>session_ended</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +The SFTP server session has just ended, either cleanly or via an +exception.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#session_started" class="summary-sig-name"><code>session_started</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +The SFTP server session has just started.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return an <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> object for a path on the +server, or an error code.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>target_path</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Create a symbolic link on the server, as new pathname +<code>path</code>, with <code>target_path</code> as the target of the +link.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>server</span>, + <span class="sig-vararg">*largs</span>, + <span class="sig-kwarg">**kwargs</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new SFTPServerInterface object. This method does nothing by + default and is meant to be overridden by subclasses. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>server</b></code> - + the server object associated with this channel and SFTP + subsystem + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="canonicalize"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">canonicalize</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + <p>Return the canonical form of a path on the server. For example, if + the server's home folder is <code>/home/foo</code>, the path + <code>"../betty"</code> would be canonicalized to + <code>"/home/betty"</code>. Note the obvious security issues: + if you're serving files only from a specific folder, you probably don't + want this method to reveal path names outside that folder.</p> + <p>You may find the python methods in <code>os.path</code> useful, + especially <code>os.path.normpath</code> and + <code>os.path.realpath</code>.</p> + The default implementation returns <code>os.path.normpath('/' + + path)</code>. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="chattr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + Change the attributes of a file. The <code>attr</code> object will + contain only those fields provided by the client in its request, so you + should check for the presence of fields before using them. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + requested path (relative or absolute) of the file to + change. + <br /><i> + (type=str)</i> + <dd><code><b>attr</b></code> - + requested attributes to change on the file. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="list_folder"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">list_folder</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + <p>Return a list of files within a given folder. The <code>path</code> + will use posix notation (<code>"/"</code> separates folder + names) and may be an absolute or relative path.</p> + <p>The list of files is expected to be a list of <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects, which are similar + in structure to the objects returned by <code>os.stat</code>. In + addition, each object should have its <code>filename</code> field + filled in, since this is important to a directory listing and not + normally present in <code>os.stat</code> results. The method + <code>SFTPAttributes.from_stat</code> will usually do what you + want.</p> + In case of an error, you should return one of the + <code>SFTP_*</code> error codes, such as <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the requested path (relative or absolute) to be listed. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a list of the files in the given folder, using <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects. + <br /><i> + (type=list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i>)</i> + </dd> + </dl> +<p><b>Note:</b> You should normalize the given <code>path</code> first (see the +<code>os.path</code> module) and check appropriate permissions before +returning the list of files. Be careful of malicious clients attempting +to use relative paths to escape restricted folders, if you're doing a +direct translation from the SFTP server path to your local +filesystem. +</p> + + </dd></dl> +</td></tr></table> + +<a name="lstat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return an <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object for a path on the + server, or an error code. If your server supports symbolic links (also + known as "aliases"), you should <i>not</i> follow them -- + instead, you should return data on the symlink or alias itself. (<a + href="../private/paramiko.SFTPServerInterface-class.html#stat" + class="link"><code>stat</code></a> is the corresponding call that + follows symlinks/aliases.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the requested path (relative or absolute) to fetch file + statistics for. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an attributes object for the given file, or an SFTP error code + (like <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a>). + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="mkdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + <p>Create a new directory with the given attributes. The + <code>attr</code> object may be considered a "hint" and + ignored.</p> + The <code>attr</code> object will contain only those fields provided + by the client in its request, so you should use <code>hasattr</code> to + check for the presense of fields before using them. In some cases, the + <code>attr</code> object may be completely empty. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + requested path (relative or absolute) of the new folder. + <br /><i> + (type=str)</i> + <dd><code><b>attr</b></code> - + requested attributes of the new folder. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>flags</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + <p>Open a file on the server and create a handle for future operations + on that file. On success, a new object subclassed from <a + href="paramiko.SFTPHandle-class.html" + class="link"><code>SFTPHandle</code></a> should be returned. This + handle will be used for future operations on the file (read, write, + etc). On failure, an error code such as <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a> should be + returned.</p> + <code>flags</code> contains the requested mode for opening + (read-only, write-append, etc) as a bitset of flags from the + <code>os</code> module: + <ul> + <li> + <code>os.O_RDONLY</code> + </li> + <li> + <code>os.O_WRONLY</code> + </li> + <li> + <code>os.O_RDWR</code> + </li> + <li> + <code>os.O_APPEND</code> + </li> + <li> + <code>os.O_CREAT</code> + </li> + <li> + <code>os.O_TRUNC</code> + </li> + <li> + <code>os.O_EXCL</code> + </li> + </ul> + <p>(One of <code>os.O_RDONLY</code>, <code>os.O_WRONLY</code>, or + <code>os.O_RDWR</code> will always be set.)</p> + The <code>attr</code> object contains requested attributes of the + file if it has to be created. Some or all attribute fields may be + missing if the client didn't specify them. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the requested path (relative or absolute) of the file to be + opened. + <br /><i> + (type=str)</i> + <dd><code><b>flags</b></code> - + flags or'd together from the <code>os</code> module indicating + the requested mode for opening the file. + <br /><i> + (type=int)</i> + <dd><code><b>attr</b></code> - + requested attributes of the file if it is newly created. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.SFTPHandle-class.html" + class="link"><code>SFTPHandle</code></a> <i>or error code</i>. + @rtype <a href="paramiko.SFTPHandle-class.html" + class="link"><code>SFTPHandle</code></a> + </dd> + </dl> +<p><b>Note:</b> The SFTP protocol defines all files to be in "binary" mode. +There is no equivalent to python's "text" mode. +</p> + + </dd></dl> +</td></tr></table> + +<a name="readlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return the target of a symbolic link (or shortcut) on the server. If + the specified path doesn't refer to a symbolic link, an error should be + returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path (relative or absolute) of the symbolic link. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + the target path of the symbolic link, or an error code like <a + href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE" + class="link"><code>SFTP_NO_SUCH_FILE</code></a>. + <br /><i> + (type=str <i>or error code</i>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="remove"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Delete a file, if possible. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the requested path (relative or absolute) of the file to + delete. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="rename"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>oldpath</span>, + <span class=sig-arg>newpath</span>)</span> + </h3> + Rename (or move) a file. The SFTP specification implies that this + method can be used to move an existing file into a different folder, + and since there's no other (easy) way to move files via SFTP, it's + probably a good idea to implement "move" in this method too, + even for files that cross disk partition boundaries, if at all + possible. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>oldpath</b></code> - + the requested path (relative or absolute) of the existing + file. + <br /><i> + (type=str)</i> + <dd><code><b>newpath</b></code> - + the requested new path of the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Note:</b> You should return an error if a file with the same name as +<code>newpath</code> already exists. (The rename operation should be +non-desctructive.) +</p> + + </dd></dl> +</td></tr></table> + +<a name="rmdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove a directory if it exists. The <code>path</code> should refer + to an existing, empty folder -- otherwise this method should return an + error. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + requested path (relative or absolute) of the folder to + remove. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="session_ended"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">session_ended</span>(<span class=sig-arg>self</span>)</span> + </h3> + The SFTP server session has just ended, either cleanly or via an + exception. This method is meant to be overridden to perform any + necessary cleanup before this <code>SFTPServerInterface</code> object + is destroyed. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="session_started"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">session_started</span>(<span class=sig-arg>self</span>)</span> + </h3> + The SFTP server session has just started. This method is meant to be + overridden to perform any necessary setup before handling callbacks + from SFTP operations. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return an <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object for a path on the + server, or an error code. If your server supports symbolic links (also + known as "aliases"), you should follow them. (<a + href="../private/paramiko.SFTPServerInterface-class.html#lstat" + class="link"><code>lstat</code></a> is the corresponding call that + doesn't follow symlinks/aliases.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the requested path (relative or absolute) to fetch file + statistics for. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an attributes object for the given file, or an SFTP error code + (like <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a>). + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="symlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>target_path</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Create a symbolic link on the server, as new pathname + <code>path</code>, with <code>target_path</code> as the target of the + link. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>target_path</b></code> - + path (relative or absolute) of the target for this new + symbolic link. + <br /><i> + (type=str)</i> + <dd><code><b>path</b></code> - + path (relative or absolute) of the symbolic link to + create. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an error code like <code>SFTP_OK</code>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SSHException-class.html b/docs/private/paramiko.SSHException-class.html new file mode 100644 index 0000000..74d34e6 --- /dev/null +++ b/docs/private/paramiko.SSHException-class.html @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SSHException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SSHException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SSHException-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SSHException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class SSHException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>SSHException</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a>, + <a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a>, + <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></dd></dl> + +<hr/> + +Exception raised by failures in SSH2 protocol negotiation or logic +errors. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SecurityOptions-class.html b/docs/private/paramiko.SecurityOptions-class.html new file mode 100644 index 0000000..1763962 --- /dev/null +++ b/docs/private/paramiko.SecurityOptions-class.html @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SecurityOptions</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SecurityOptions + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SecurityOptions-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SecurityOptions-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SecurityOptions</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SecurityOptions</b> +</pre><br /> + +<hr/> + +<p>Simple object containing the security preferences of an ssh transport. +These are tuples of acceptable ciphers, digests, key types, and key +exchange algorithms, listed in order of preference.</p> +Changing the contents and/or order of these fields affects the +underlying <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> (but only if you change them +before starting the session). If you try to add an algorithm that +paramiko doesn't recognize, <code>ValueError</code> will be raised. If +you try to assign something besides a tuple to one of the fields, +<code>TypeError</code> will be raised. +<hr/> + +<p><b>Since:</b> ivysaur +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SecurityOptions-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_ciphers"></a><span class="summary-sig"><span class="summary-sig-name">_get_ciphers</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_compression"></a><span class="summary-sig"><span class="summary-sig-name">_get_compression</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_digests"></a><span class="summary-sig"><span class="summary-sig-name">_get_digests</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_kex"></a><span class="summary-sig"><span class="summary-sig-name">_get_kex</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_key_types"></a><span class="summary-sig"><span class="summary-sig-name">_get_key_types</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set"></a><span class="summary-sig"><span class="summary-sig-name">_set</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>orig</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_ciphers"></a><span class="summary-sig"><span class="summary-sig-name">_set_ciphers</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_compression"></a><span class="summary-sig"><span class="summary-sig-name">_set_compression</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_digests"></a><span class="summary-sig"><span class="summary-sig-name">_set_digests</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_kex"></a><span class="summary-sig"><span class="summary-sig-name">_set_kex</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_key_types"></a><span class="summary-sig"><span class="summary-sig-name">_set_key_types</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF PROPERTY SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Property Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></b>: Symmetric encryption ciphers</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></b>: Compression algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></b>: Digest (one-way hash) algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></b>: Key exchange algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></b>: Public-key algorithms</td></tr></table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></b> = <span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"><code>['ciphers', 'digests', 'key_types', 'kex', '<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td> +<td><b><a href="../private/paramiko.SecurityOptions-class.html#_transport"><code>_transport</code></a></b> = <span title="<member '_transport' of 'SecurityOptions' objects>"><code><member '_transport' of 'SecurityOptions' o<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF PROPERTY DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Property Details</th></tr> +</table> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="ciphers"></a> +<h3>ciphers</h3> +Symmetric encryption ciphers +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Get Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_ciphers" class="summary-sig-name"><code>_get_ciphers</code></a>(<span class=summary-sig-arg>self</span>)</span> + </dd> + <dt><b>Set Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_ciphers" class="summary-sig-name"><code>_set_ciphers</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span> + </dd> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="compression"></a> +<h3>compression</h3> +Compression algorithms +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Get Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_compression" class="summary-sig-name"><code>_get_compression</code></a>(<span class=summary-sig-arg>self</span>)</span> + </dd> + <dt><b>Set Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_compression" class="summary-sig-name"><code>_set_compression</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span> + </dd> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="digests"></a> +<h3>digests</h3> +Digest (one-way hash) algorithms +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Get Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_digests" class="summary-sig-name"><code>_get_digests</code></a>(<span class=summary-sig-arg>self</span>)</span> + </dd> + <dt><b>Set Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_digests" class="summary-sig-name"><code>_set_digests</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span> + </dd> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="kex"></a> +<h3>kex</h3> +Key exchange algorithms +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Get Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_kex" class="summary-sig-name"><code>_get_kex</code></a>(<span class=summary-sig-arg>self</span>)</span> + </dd> + <dt><b>Set Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_kex" class="summary-sig-name"><code>_set_kex</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span> + </dd> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="key_types"></a> +<h3>key_types</h3> +Public-key algorithms +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Get Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_key_types" class="summary-sig-name"><code>_get_key_types</code></a>(<span class=summary-sig-arg>self</span>)</span> + </dd> + <dt><b>Set Method:</b></dt> + <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_key_types" class="summary-sig-name"><code>_set_key_types</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span> + </dd> + </dl> + </dd> +</dl></td></tr></table><br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__slots__"></a> +<h3>__slots__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport'<span class="variable-linewrap">\</span> +] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_transport"></a> +<h3>_transport</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>member_descriptor</code> + + </dd> +<span title="<member '_transport' of 'SecurityOptions' objects>"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<member '_transport' of 'SecurityOptions' objects> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ServerInterface-class.html b/docs/private/paramiko.ServerInterface-class.html new file mode 100644 index 0000000..5cf358f --- /dev/null +++ b/docs/private/paramiko.ServerInterface-class.html @@ -0,0 +1,894 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ServerInterface</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class ServerInterface + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ServerInterface-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ServerInterface</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>ServerInterface</b> +</pre><br /> + +<hr/> + +<p>This class defines an interface for controlling the behavior of +paramiko in server mode.</p> +Methods on this class are called from paramiko's primary thread, so +you shouldn't do too much work in them. (Certainly nothing that blocks or +sleeps.) +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int or <a href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive" class="summary-sig-name"><code>check_auth_interactive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>submethods</span>)</span></code> +<br /> +Begin an interactive authentication challenge, if supported.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int or <a href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response" class="summary-sig-name"><code>check_auth_interactive_response</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>responses</span>)</span></code> +<br /> +Continue or finish an interactive authentication challenge, if +supported.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_none" class="summary-sig-name"><code>check_auth_none</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>)</span></code> +<br /> +Determine if a client may open channels with no (further) +authentication.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_password" class="summary-sig-name"><code>check_auth_password</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Determine if a given username and password supplied by the client is +acceptable for use in authentication.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_publickey" class="summary-sig-name"><code>check_auth_publickey</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>key</span>)</span></code> +<br /> +Determine if a given key supplied by the client is acceptable for use +in authentication.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_exec_request" class="summary-sig-name"><code>check_channel_exec_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>command</span>)</span></code> +<br /> +Determine if a shell command will be executed for the client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request" class="summary-sig-name"><code>check_channel_pty_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>term</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>, + <span class=summary-sig-arg>pixelwidth</span>, + <span class=summary-sig-arg>pixelheight</span>, + <span class=summary-sig-arg>modes</span>)</span></code> +<br /> +Determine if a pseudo-terminal of the given dimensions (usually +requested for shell access) can be provided on the given channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_request" class="summary-sig-name"><code>check_channel_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>chanid</span>)</span></code> +<br /> +Determine if a channel request of a given type will be granted, and +return <code>OPEN_SUCCEEDED</code> or an error code.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request" class="summary-sig-name"><code>check_channel_shell_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>)</span></code> +<br /> +Determine if a shell will be provided to the client on the given +channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request" class="summary-sig-name"><code>check_channel_subsystem_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>name</span>)</span></code> +<br /> +Determine if a requested subsystem will be provided to the client on +the given channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request" class="summary-sig-name"><code>check_channel_window_change_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>, + <span class=summary-sig-arg>pixelwidth</span>, + <span class=summary-sig-arg>pixelheight</span>)</span></code> +<br /> +Determine if the pseudo-terminal on the given channel can be +resized.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_global_request" class="summary-sig-name"><code>check_global_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Handle a global request of the given <code>kind</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" class="summary-sig-name"><code>get_allowed_auths</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>)</span></code> +<br /> +Return a list of authentication methods supported by the server.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="check_auth_interactive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_auth_interactive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>submethods</span>)</span> + </h3> + <p>Begin an interactive authentication challenge, if supported. You + should override this method in server mode if you want to support the + <code>"keyboard-interactive"</code> auth type, which requires + you to send a series of questions for the client to answer.</p> + <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if this auth method isn't + supported. Otherwise, you should return an <a + href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a> object containing the + prompts and instructions for the user. The response will be sent via a + call to <a + href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response" + class="link"><code>check_auth_interactive_response</code></a>.</p> + The default implementation always returns <a + href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username of the authenticating client + <br /><i> + (type=str)</i> + <dd><code><b>submethods</b></code> - + a comma-separated list of methods preferred by the client + (usually empty) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if this auth method + isn't supported; otherwise an object containing queries for the + user + <br /><i> + (type=int or <a href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_auth_interactive_response"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_auth_interactive_response</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>responses</span>)</span> + </h3> + <p>Continue or finish an interactive authentication challenge, if + supported. You should override this method in server mode if you want + to support the <code>"keyboard-interactive"</code> auth + type.</p> + <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the responses are not + accepted, <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if the responses are + accepted and complete the authentication, or <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your + authentication is stateful, and this set of responses is accepted for + authentication, but more authentication is required. (In this latter + case, <a + href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" + class="link"><code>get_allowed_auths</code></a> will be called to + report to the client what options it has for continuing the + authentication.)</p> + <p>If you wish to continue interactive authentication with more + questions, you may return an <a + href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a> object, which should + cause the client to respond with more answers, calling this method + again. This cycle can continue indefinitely.</p> + The default implementation always returns <a + href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>responses</b></code> - + list of responses from the client + <br /><i> + (type=list(str))</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the authentication + fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds; <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if the + interactive auth is successful, but authentication must continue; + otherwise an object containing queries for the user + <br /><i> + (type=int or <a href="paramiko.server.InteractiveQuery-class.html" + class="link"><code>InteractiveQuery</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_auth_none"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_auth_none</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>)</span> + </h3> + <p>Determine if a client may open channels with no (further) + authentication.</p> + <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the client must + authenticate, or <a + href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if it's okay for the + client to not authenticate.</p> + The default implementation always returns <a + href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username of the client. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the authentication + fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_auth_password"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_auth_password</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>password</span>)</span> + </h3> + <p>Determine if a given username and password supplied by the client is + acceptable for use in authentication.</p> + <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the password is not + accepted, <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if the password is + accepted and completes the authentication, or <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your + authentication is stateful, and this key is accepted for + authentication, but more authentication is required. (In this latter + case, <a + href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" + class="link"><code>get_allowed_auths</code></a> will be called to + report to the client what options it has for continuing the + authentication.)</p> + The default implementation always returns <a + href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username of the authenticating client. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + the password given by the client. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the authentication + fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds; <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if the + password auth is successful, but authentication must + continue. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_auth_publickey"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_auth_publickey</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>key</span>)</span> + </h3> + <p>Determine if a given key supplied by the client is acceptable for + use in authentication. You should override this method in server mode + to check the username and key and decide if you would accept a + signature made using this key.</p> + <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the key is not accepted, + <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if the key is accepted + and completes the authentication, or <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your + authentication is stateful, and this password is accepted for + authentication, but more authentication is required. (In this latter + case, <a + href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" + class="link"><code>get_allowed_auths</code></a> will be called to + report to the client what options it has for continuing the + authentication.)</p> + <p>Note that you don't have to actually verify any key signtature here. + If you're willing to accept the key, paramiko will do the work of + verifying the client's signature.</p> + The default implementation always returns <a + href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username of the authenticating client + <br /><i> + (type=str)</i> + <dd><code><b>key</b></code> - + the key object provided by the client + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko-module.html#AUTH_FAILED" + class="link"><code>AUTH_FAILED</code></a> if the client can't + authenticate with this key; <a + href="../private/paramiko-module.html#AUTH_SUCCESSFUL" + class="link"><code>AUTH_SUCCESSFUL</code></a> if it can; <a + href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL" + class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if it can + authenticate with this key but must continue with + authentication + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_channel_exec_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_exec_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>command</span>)</span> + </h3> + <p>Determine if a shell command will be executed for the client. If + this method returns <code>True</code>, the channel should be connected + to the stdin, stdout, and stderr of the shell command.</p> + The default implementation always returns <code>False</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> the request arrived on. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>command</b></code> - + the command to execute. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this channel is now hooked up to the + stdin, stdout, and stderr of the executing command; + <code>False</code> if the command will not be executed. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="check_channel_pty_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_pty_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>term</span>, + <span class=sig-arg>width</span>, + <span class=sig-arg>height</span>, + <span class=sig-arg>pixelwidth</span>, + <span class=sig-arg>pixelheight</span>, + <span class=sig-arg>modes</span>)</span> + </h3> + <p>Determine if a pseudo-terminal of the given dimensions (usually + requested for shell access) can be provided on the given channel.</p> + The default implementation always returns <code>False</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> the pty request arrived + on. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>term</b></code> - + type of terminal requested (for example, + <code>"vt100"</code>). + <br /><i> + (type=str)</i> + <dd><code><b>width</b></code> - + width of screen in characters. + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + height of screen in characters. + <br /><i> + (type=int)</i> + <dd><code><b>pixelwidth</b></code> - + width of screen in pixels, if known (may be <code>0</code> if + unknown). + <br /><i> + (type=int)</i> + <dd><code><b>pixelheight</b></code> - + height of screen in pixels, if known (may be <code>0</code> if + unknown). + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the psuedo-terminal has been allocated; + <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_channel_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>chanid</span>)</span> + </h3> + <p>Determine if a channel request of a given type will be granted, and + return <code>OPEN_SUCCEEDED</code> or an error code. This method is + called in server mode when the client requests a channel, after + authentication is complete.</p> + If you allow channel requests (and an ssh server that didn't would + be useless), you should also override some of the channel request + methods below, which are used to determine which services will be + allowed on a given channel: + <ul> + <li> + <a + href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request" + class="link"><code>check_channel_pty_request</code></a> + </li> + <li> + <a + href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request" + class="link"><code>check_channel_shell_request</code></a> + </li> + <li> + <a + href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request" + class="link"><code>check_channel_subsystem_request</code></a> + </li> + <li> + <a + href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request" + class="link"><code>check_channel_window_change_request</code></a> + </li> + </ul> + <p>The <code>chanid</code> parameter is a small number that uniquely + identifies the channel within a <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. A <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> object is not created unless this + method returns <code>OPEN_SUCCEEDED</code> -- once a <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> object is created, you can call + <a href="paramiko.Channel-class.html#get_id" + class="link"><code>Channel.get_id</code></a> to retrieve the channel + ID.</p> + The return value should either be <code>OPEN_SUCCEEDED</code> (or + <code>0</code>) to allow the channel request, or one of the following + error codes to reject it: + <ul> + <li> + <code>OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</code> + </li> + <li> + <code>OPEN_FAILED_CONNECT_FAILED</code> + </li> + <li> + <code>OPEN_FAILED_UNKNOWN_CHANNEL_TYPE</code> + </li> + <li> + <code>OPEN_FAILED_RESOURCE_SHORTAGE</code> + </li> + </ul> + The default implementation always returns + <code>OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + the kind of channel the client would like to open (usually + <code>"session"</code>). + <br /><i> + (type=str)</i> + <dd><code><b>chanid</b></code> - + ID of the channel + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a success or failure code (listed above) + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_channel_shell_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_shell_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>)</span> + </h3> + <p>Determine if a shell will be provided to the client on the given + channel. If this method returns <code>True</code>, the channel should + be connected to the stdin/stdout of a shell (or something that acts + like a shell).</p> + The default implementation always returns <code>False</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> the request arrived on. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this channel is now hooked up to a shell; + <code>False</code> if a shell can't or won't be provided. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_channel_subsystem_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_subsystem_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>name</span>)</span> + </h3> + <p>Determine if a requested subsystem will be provided to the client on + the given channel. If this method returns <code>True</code>, all future + I/O through this channel will be assumed to be connected to the + requested subsystem. An example of a subsystem is + <code>sftp</code>.</p> + The default implementation checks for a subsystem handler assigned + via <a href="paramiko.Transport-class.html#set_subsystem_handler" + class="link"><code>Transport.set_subsystem_handler</code></a>. If one + has been set, the handler is invoked and this method returns + <code>True</code>. Otherwise it returns <code>False</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> the pty request arrived + on. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this channel is now hooked up to the + requested subsystem; <code>False</code> if that subsystem can't + or won't be provided. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Note:</b> Because the default implementation uses the <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> to identify valid subsystems, you +probably won't need to override this method. +</p> + + </dd></dl> +</td></tr></table> + +<a name="check_channel_window_change_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_channel_window_change_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>width</span>, + <span class=sig-arg>height</span>, + <span class=sig-arg>pixelwidth</span>, + <span class=sig-arg>pixelheight</span>)</span> + </h3> + <p>Determine if the pseudo-terminal on the given channel can be + resized. This only makes sense if a pty was previously allocated on + it.</p> + The default implementation always returns <code>False</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> the pty request arrived + on. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>width</b></code> - + width of screen in characters. + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + height of screen in characters. + <br /><i> + (type=int)</i> + <dd><code><b>pixelwidth</b></code> - + width of screen in pixels, if known (may be <code>0</code> if + unknown). + <br /><i> + (type=int)</i> + <dd><code><b>pixelheight</b></code> - + height of screen in pixels, if known (may be <code>0</code> if + unknown). + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the terminal was resized; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="check_global_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check_global_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + <p>Handle a global request of the given <code>kind</code>. This method + is called in server mode and client mode, whenever the remote host + makes a global request. If there are any arguments to the request, they + will be in <code>msg</code>.</p> + <p>There aren't any useful global requests defined, aside from port + forwarding, so usually this type of request is an extension to the + protocol.</p> + <p>If the request was successful and you would like to return + contextual data to the remote host, return a tuple. Items in the tuple + will be sent back with the successful result. (Note that the items in + the tuple can only be strings, ints, longs, or bools.)</p> + The default implementation always returns <code>False</code>, + indicating that it does not support any global requests. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + the kind of global request being made. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + any extra arguments to the request. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> or a tuple of data if the request was + granted; <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_allowed_auths"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_allowed_auths</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>)</span> + </h3> + <p>Return a list of authentication methods supported by the server. + This list is sent to clients attempting to authenticate, to inform them + of authentication methods that might be successful.</p> + <p>The "list" is actually a string of comma-separated names + of types of authentication. Possible values are + <code>"password"</code>, <code>"publickey"</code>, + and <code>"none"</code>.</p> + The default implementation always returns + <code>"password"</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username requesting authentication. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a comma-separated list of authentication types + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.SubsystemHandler-class.html b/docs/private/paramiko.SubsystemHandler-class.html new file mode 100644 index 0000000..1d8116a --- /dev/null +++ b/docs/private/paramiko.SubsystemHandler-class.html @@ -0,0 +1,352 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SubsystemHandler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SubsystemHandler + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.SubsystemHandler-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SubsystemHandler-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SubsystemHandler</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <b>SubsystemHandler</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl> + +<hr/> + +<p>Handler for a subsytem in server mode. If you create a subclass of +this class and pass it to <a +href="paramiko.Transport-class.html#set_subsystem_handler" +class="link"><code>Transport.set_subsystem_handler</code></a>, an object +of this class will be created for each request for this subsystem. Each +new object will be executed within its own new thread by calling <a +href="paramiko.SubsystemHandler-class.html#start_subsystem" +class="link"><code>start_subsystem</code></a>. When that method +completes, the channel is closed.</p> +For example, if you made a subclass <code>MP3Handler</code> and +registered it as the handler for subsystem <code>"mp3"</code>, +then whenever a client has successfully authenticated and requests +subsytem <code>"mp3"</code>, an object of class +<code>MP3Handler</code> will be created, and <a +href="paramiko.SubsystemHandler-class.html#start_subsystem" +class="link"><code>start_subsystem</code></a> will be called on it from a +new thread. +<hr/> + +<p><b>Since:</b> ivysaur +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>server</span>)</span></code> +<br /> +Create a new handler for a channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Perform any cleanup at the end of a subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> object associated with this +channel and subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>transport</span>, + <span class=summary-sig-arg>channel</span>)</span></code> +<br /> +Process an ssh subsystem in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_run"></a><span class="summary-sig"><span class="summary-sig-name">_run</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from _Verbose</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>format</span>, + <span class="summary-sig-vararg">*args</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td> +<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>server</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new handler for a channel. This is used by <a + href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> to start up a new handler + when a channel requests this subsystem. You don't need to override this + method, but if you do, be sure to pass the <code>channel</code> and + <code>name</code> parameters through to the original + <code>__init__</code> method here. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>server</b></code> - + the server object for the session that started this + subsystem + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="finish_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span> + </h3> + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_server"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_server</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> object associated with + this channel and subsystem. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="start_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>transport</span>, + <span class=sig-arg>channel</span>)</span> + </h3> + <p>Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed.</p> + The combination of <code>transport</code> and <code>channel</code> + are unique; this handler corresponds to exactly one <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on one <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>transport</b></code> - + the server-mode <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> +<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> is closed. This can be done by +checking <a href="paramiko.Transport-class.html#is_active" +class="link"><code>Transport.is_active</code></a> or noticing an EOF on +the <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>. If this method loops forever +without checking for this case, your python interpreter may refuse to +exit because this thread will still be running. +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.Transport-class.html b/docs/private/paramiko.Transport-class.html new file mode 100644 index 0000000..5b96b90 --- /dev/null +++ b/docs/private/paramiko.Transport-class.html @@ -0,0 +1,2151 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Transport + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.Transport-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Transport-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Transport</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <b>Transport</b> +</pre><br /> + +<hr/> + +An SSH Transport attaches to a stream (usually a socket), negotiates +an encrypted session, authenticates, and then creates stream tunnels, +called <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>s, across the session. Multiple +channels can be multiplexed across a single session (and often are, in +the case of port forwardings). +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create a new SSH session over an existing socket, or socket-like +object.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#accept" class="summary-sig-name"><code>accept</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Return the next channel opened by the client over this transport, in +server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#add_server_key" class="summary-sig-name"><code>add_server_key</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>key</span>)</span></code> +<br /> +Add a host key to the list of keys used for server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>handler</span>, + <span class=summary-sig-arg>submethods</span>)</span></code> +<br /> +Authenticate to the server interactively.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_none" class="summary-sig-name"><code>auth_none</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>)</span></code> +<br /> +Try to authenticate to the server using no authentication at all.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_password" class="summary-sig-name"><code>auth_password</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>, + <span class=summary-sig-arg>event</span>, + <span class=summary-sig-arg>fallback</span>)</span></code> +<br /> +Authenticate to the server using a password.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_publickey" class="summary-sig-name"><code>auth_publickey</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>event</span>)</span></code> +<br /> +Authenticate to the server using a private key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close this session, and any open channels that are tied to it.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#connect" class="summary-sig-name"><code>connect</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hostkey</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>, + <span class=summary-sig-arg>pkey</span>)</span></code> +<br /> +Negotiate an SSH2 session, and optionally verify the server's host key +and authenticate using a password or private key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> Exception +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_exception" class="summary-sig-name"><code>get_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return any exception that happened during the last server request.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_hexdump" class="summary-sig-name"><code>get_hexdump</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if the transport is currently logging hex +dumps of protocol traffic.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_log_channel" class="summary-sig-name"><code>get_log_channel</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the channel name used for this transport's logging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_remote_server_key" class="summary-sig-name"><code>get_remote_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the host key of the server (in client mode).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_security_options" class="summary-sig-name"><code>get_security_options</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a <a href="paramiko.SecurityOptions-class.html" +class="link"><code>SecurityOptions</code></a> object which can be used to +tweak the encryption algorithms this transport will permit, and the order +of preference for them.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_server_key" class="summary-sig-name"><code>get_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the active host key, in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_username" class="summary-sig-name"><code>get_username</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the username this connection is authenticated for.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#global_request" class="summary-sig-name"><code>global_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>wait</span>)</span></code> +<br /> +Make a global request to the remote host.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_active" class="summary-sig-name"><code>is_active</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return true if this session is active (open).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_authenticated" class="summary-sig-name"><code>is_authenticated</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return true if this session is active and authenticated.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#load_server_moduli" class="summary-sig-name"><code>load_server_moduli</code></a>(<span class=summary-sig-arg>filename</span>)</span></code> +<br /> +<i>(optional)</i> Load a file of prime moduli for use in doing +group-exchange key negotiation in server mode. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_channel" class="summary-sig-name"><code>open_channel</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>dest_addr</span>, + <span class=summary-sig-arg>src_addr</span>)</span></code> +<br /> +Request a new channel to the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_session" class="summary-sig-name"><code>open_session</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Request a new channel to the server, of type +<code>"session"</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_sftp_client" class="summary-sig-name"><code>open_sftp_client</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Create an SFTP client channel from an open transport.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#renegotiate_keys" class="summary-sig-name"><code>renegotiate_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Force this session to switch to new keys.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#send_ignore" class="summary-sig-name"><code>send_ignore</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>bytes</span>)</span></code> +<br /> +Send a junk packet across the encrypted link.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_hexdump" class="summary-sig-name"><code>set_hexdump</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hexdump</span>)</span></code> +<br /> +Turn on/off logging a hex dump of protocol traffic at DEBUG level in +the logs.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>interval</span>)</span></code> +<br /> +Turn on/off keepalive packets (default is off).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_log_channel" class="summary-sig-name"><code>set_log_channel</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +<br /> +Set the channel for this transport's logging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_subsystem_handler" class="summary-sig-name"><code>set_subsystem_handler</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>handler</span>, + <span class="summary-sig-vararg">*larg</span>, + <span class="summary-sig-kwarg">**kwarg</span>)</span></code> +<br /> +Set the handler class for a subsystem in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_client" class="summary-sig-name"><code>start_client</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>event</span>)</span></code> +<br /> +Negotiate a new SSH2 session as a client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_server" class="summary-sig-name"><code>start_server</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>event</span>, + <span class=summary-sig-arg>server</span>)</span></code> +<br /> +Negotiate a new SSH2 session as a server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="stop_thread"></a><span class="summary-sig"><span class="summary-sig-name">stop_thread</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#use_compression" class="summary-sig-name"><code>use_compression</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>compress</span>)</span></code> +<br /> +Turn on/off compression.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_activate_inbound" class="summary-sig-name"><code>_activate_inbound</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +switch on newly negotiated encryption parameters for inbound +traffic</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_activate_outbound" class="summary-sig-name"><code>_activate_outbound</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +switch on newly negotiated encryption parameters for outbound +traffic</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_auth_trigger"></a><span class="summary-sig"><span class="summary-sig-name">_auth_trigger</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_check_banner"></a><span class="summary-sig"><span class="summary-sig-name">_check_banner</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_compute_key" class="summary-sig-name"><code>_compute_key</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>id</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +id is 'A' - 'F' for the various keys used by ssh</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_expect_packet" class="summary-sig-name"><code>_expect_packet</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>type</span>)</span></code> +<br /> +used by a kex object to register the next packet type it expects to +see</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_cipher"></a><span class="summary-sig"><span class="summary-sig-name">_get_cipher</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>iv</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_get_modulus_pack" class="summary-sig-name"><code>_get_modulus_pack</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +used by KexGex to find primes for group exchange</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_get_subsystem_handler"></a><span class="summary-sig"><span class="summary-sig-name">_get_subsystem_handler</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_negotiate_keys"></a><span class="summary-sig"><span class="summary-sig-name">_negotiate_keys</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_channel_open"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_channel_open_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open_failure</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_channel_open_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open_success</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_debug"></a><span class="summary-sig"><span class="summary-sig-name">_parse_debug</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_disconnect"></a><span class="summary-sig"><span class="summary-sig-name">_parse_disconnect</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_global_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_global_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kex_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kex_init</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_newkeys"></a><span class="summary-sig"><span class="summary-sig-name">_parse_newkeys</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_request_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_request_failure</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_request_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_request_success</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_send_kex_init" class="summary-sig-name"><code>_send_kex_init</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +announce to the other side that we'd like to negotiate keys, and what +kind of key negotiation we support.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_send_message"></a><span class="summary-sig"><span class="summary-sig-name">_send_message</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_send_user_message" class="summary-sig-name"><code>_send_user_message</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +send a message, but block if we're in key negotiation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_set_K_H" class="summary-sig-name"><code>_set_K_H</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>k</span>, + <span class=summary-sig-arg>h</span>)</span></code> +<br /> +used by a kex object to set the K (root key) and H (exchange hash)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_unlink_channel" class="summary-sig-name"><code>_unlink_channel</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>chanid</span>)</span></code> +<br /> +used by a Channel to remove itself from the active channel list</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_verify_key"></a><span class="summary-sig"><span class="summary-sig-name">_verify_key</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>host_key</span>, + <span class=summary-sig-arg>sig</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from _Verbose</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>format</span>, + <span class="summary-sig-vararg">*args</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_channel_handler_table"><code>_channel_handler_table</code></a></b> = <span title="{96: <unbound method Channel._handle_eof>, 97: <unbound method Channel._handle_close>, 98: <unbound method Channel._handle_request>, 99: <unbound method Channel._request_success>, 100: <unbound method Channel._request_failed>, 93: <unbound method Channel._window_adjust>, 94: <unbound method Channel._feed>, 95: <unbound method Channel._feed_extended>}"><code>{96: <unbound method Channel._h<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_cipher_info"><code>_cipher_info</code></a></b> = <span title="{'blowfish-cbc': {'block-size': 8, 'key-size': 16, 'class': <module 'Crypto.Cipher.Blowfish' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/Blowfish.so'>, 'mode': 2}, '3des-cbc': {'block-size': 8, 'key-size': 24, 'class': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'mode': 2}, 'aes256-cbc': {'block-size': 16, 'key-size': 32, 'class': <module 'Crypto.Cipher.AES' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/AES.so'>, 'mode': 2}, 'aes128-cbc': {'block-size': 16, 'key-size': 16, 'class': <module 'Crypto.Cipher.AES' from '/usr/lib/py..."><code>{'blowfish-cbc': {'block-size': 8, 'key-s<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_CLIENT_ID"><code>_CLIENT_ID</code></a></b> = <span title="'paramiko_1.5.2'"><code><span class="variable-quote">'</span>paramiko_1.5.2<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_compression_info"><code>_compression_info</code></a></b> = <span title="{'none': (None, None), 'zlib': (<class 'paramiko.compress.ZlibCompressor'>, <class 'paramiko.compress.ZlibDecompressor'>), 'zlib@openssh.com': (<class 'paramiko.compress.ZlibCompressor'>, <class 'paramiko.compress.ZlibDecompressor'>)}"><code>{'none': (None, None), 'zlib': (<cla<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_handler_table"><code>_handler_table</code></a></b> = <span title="{80: <function _parse_global_request at 0xb7b13fb4>, 81: <function _parse_request_success at 0xb7b1e02c>, 82: <function _parse_request_failure at 0xb7b1e064>, 20: <function _negotiate_keys at 0xb7b13dbc>, 21: <function _parse_newkeys at 0xb7b13f44>, 90: <function _parse_channel_open at 0xb7b1e10c>, 91: <function _parse_channel_open_success at 0xb7b1e09c>, 92: <function _parse_channel_open_failure at 0xb7b1e0d4>}"><code>{80: <function _parse_global_request at<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_kex_info"><code>_kex_info</code></a></b> = <span title="{'diffie-hellman-group1-sha1': <class 'paramiko.kex_group1.KexGroup1'>, 'diffie-hellman-group-exchange-sha1': <class 'paramiko.kex_gex.KexGex'>}"><code>{'diffie-hellman-group1-sha1': <class 'param<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_key_info"><code>_key_info</code></a></b> = <span title="{'ssh-dss': <class 'paramiko.DSSKey'>, 'ssh-rsa': <class 'paramiko.RSAKey'>}"><code>{'ssh-dss': <class 'paramiko.DSSKey'>, 'ssh-<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_mac_info"><code>_mac_info</code></a></b> = <span title="{'hmac-sha1': {'class': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'size': 20}, 'hmac-md5-96': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>, 'size': 12}, 'hmac-sha1-96': {'class': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'size': 12}, 'hmac-md5': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>, 'size': 16}}"><code>{'hmac-sha1': {'class': <module 'Crypto.Hash<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>NoneType</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_modulus_pack"><code>_modulus_pack</code></a></b> = <span title="None">None </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_preferred_ciphers"><code>_preferred_ciphers</code></a></b> = <span title="('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc')"><code>('aes128-cbc', 'blowfish-cbc', 'aes<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_preferred_compression"><code>_preferred_compression</code></a></b> = <span title="('none',)"><code>('none',) </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_preferred_kex"><code>_preferred_kex</code></a></b> = <span title="('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1')"><code>('diffie-hellman-group1-sha1', 'diffie-<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_preferred_keys"><code>_preferred_keys</code></a></b> = <span title="('ssh-rsa', 'ssh-dss')"><code>('ssh-rsa', 'ssh-dss') </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_preferred_macs"><code>_preferred_macs</code></a></b> = <span title="('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96')"><code>('hmac-sha1', 'hmac-md5', 'hmac-sha1-9<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko.Transport-class.html#_PROTO_ID"><code>_PROTO_ID</code></a></b> = <span title="'2.0'"><code><span class="variable-quote">'</span>2.0<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td> +<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sock</span>)</span> + <br /><i>(Constructor)</i> + </h3> + <p>Create a new SSH session over an existing socket, or socket-like + object. This only creates the Transport object; it doesn't begin the + SSH session yet. Use <a href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a> or <a + href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a> to begin a client session, + or <a href="paramiko.Transport-class.html#start_server" + class="link"><code>start_server</code></a> to begin a server + session.</p> + If the object is not actually a socket, it must have the following + methods: + <ul> + <li> + <code>send(str)</code>: Writes from 1 to <code>len(str)</code> + bytes, and returns an int representing the number of bytes written. + Returns 0 or raises <code>EOFError</code> if the stream has been + closed. + </li> + <li> + <code>recv(int)</code>: Reads from 1 to <code>int</code> bytes + and returns them as a string. Returns 0 or raises + <code>EOFError</code> if the stream has been closed. + </li> + <li> + <code>close()</code>: Closes the socket. + </li> + <li> + <code>settimeout(n)</code>: Sets a (float) timeout on I/O + operations. + </li> + </ul> + For ease of use, you may also pass in an address (as a tuple) or a + host string as the <code>sock</code> argument. (A host string is a + hostname with an optional port (separated by + <code>":"</code>) which will be converted into a tuple of + <code>(hostname, port)</code>.) A socket will be connected to this + address and used for communication. Exceptions from the + <code>socket</code> call may be thrown in this case. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sock</b></code> - + a socket or socket-like object to create the session over. + <br /><i> + (type=socket)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__repr__"><code>threading.Thread.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="accept"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">accept</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>=<span class=sig-default>None</span>)</span> + </h3> + Return the next channel opened by the client over this transport, in + server mode. If no channel is opened before the given timeout, + <code>None</code> is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a channel, or <code>None</code> to wait + forever + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new Channel opened by the client + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_server_key</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>key</span>)</span> + </h3> + Add a host key to the list of keys used for server mode. When + behaving as a server, the host key is used to sign certain packets + during the SSH2 negotiation, so that the client can trust that we are + who we say 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>key</b></code> - + the host key to add, usually an <a + href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a> or <a + href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="auth_interactive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>handler</span>, + <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span> + </h3> + <p>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.</p> + <p>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.</p> + <p>The handler is expected to be a callable that will handle calls of + the form: <code>handler(title, instructions, prompt_list)</code>. The + <code>title</code> is meant to be a dialog-window title, and the + <code>instructions</code> are user instructions (both are strings). + <code>prompt_list</code> will be a list of prompts, each prompt being a + tuple of <code>(str, bool)</code>. The string is the prompt and the + boolean indicates whether the user text should be echoed.</p> + <p>A sample call would thus be: <code>handler('title', 'instructions', + [('Password:', False)])</code>.</p> + <p>The handler should return a list or tuple of answers to the server's + questions.</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>handler</b></code> - + a handler for responding to server questions + <br /><i> + (type=callable)</i> + <dd><code><b>submethods</b></code> - + a string list of desired submethods (optional) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty). + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if public-key authentication isn't allowed by the server for + this user + <dd><code><b>SSHException</b></code> - + if the authentication failed + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="auth_none"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_none</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>)</span> + </h3> + Try to authenticate to the server using no authentication at all. + This will almost always fail. It may be useful for determining the list + of authentication types supported by the server, by catching the <a + href="paramiko.BadAuthenticationType-class.html" + class="link"><code>BadAuthenticationType</code></a> exception + raised. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty) + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if "none" authentication isn't allowed by the server + for this user + <dd><code><b>SSHException</b></code> - + if the authentication failed due to a network error + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="auth_password"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_password</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>password</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>, + <span class=sig-arg>fallback</span>=<span class=sig-default>True</span>)</span> + </h3> + <p>Authenticate to the server using a password. The username and + password are sent over an encrypted link.</p> + <p>If an <code>event</code> is passed in, this method will return + immediately, and the event will be triggered once authentication + succeeds or fails. On success, <a + href="paramiko.Transport-class.html#is_authenticated" + class="link"><code>is_authenticated</code></a> will return + <code>True</code>. On failure, you may use <a + href="paramiko.Transport-class.html#get_exception" + class="link"><code>get_exception</code></a> to get more detailed error + information.</p> + <p>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.</p> + <p>Since 1.5, if no event is passed and <code>fallback</code> is + <code>True</code> (the default), if the server doesn't support plain + password authentication but does support so-called + "keyboard-interactive" mode, an attempt will be made to + authenticate using this interactive mode. If it fails, the normal + exception will be thrown as if the attempt had never been 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.)</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>password</b></code> - + the password to authenticate with + <br /><i> + (type=string)</i> + <dd><code><b>event</b></code> - + an event to trigger when the authentication attempt is + complete (whether it was successful or not) + <br /><i> + (type=threading.Event)</i> + <dd><code><b>fallback</b></code> - + <code>True</code> if an attempt at an automated + "interactive" password auth should be made if the + server doesn't support normal password auth + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty) + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if password authentication isn't allowed by the server for + this user (and no event was passed in) + <dd><code><b>SSHException</b></code> - + if the authentication failed (and no event was passed in) + </dl> + </dd></dl> +</td></tr></table> + +<a name="auth_publickey"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_publickey</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>key</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>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.</p> + <p>If an <code>event</code> is passed in, this method will return + immediately, and the event will be triggered once authentication + succeeds or fails. On success, <a + href="paramiko.Transport-class.html#is_authenticated" + class="link"><code>is_authenticated</code></a> will return + <code>True</code>. On failure, you may use <a + href="paramiko.Transport-class.html#get_exception" + class="link"><code>get_exception</code></a> to get more detailed error + information.</p> + <p>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.</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>key</b></code> - + the private key to authenticate with + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + <dd><code><b>event</b></code> - + an event to trigger when the authentication attempt is + complete (whether it was successful or not) + <br /><i> + (type=threading.Event)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty). + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if public-key authentication isn't allowed by the server for + this user (and no event was passed in). + <dd><code><b>SSHException</b></code> - + if the authentication failed (and no event was passed in). + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close this session, and any open channels that are tied to it. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="connect"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">connect</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hostkey</span>=<span class=sig-default>None</span>, + <span class=sig-arg>username</span>=<span class=sig-default>''</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>pkey</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate an SSH2 session, and optionally verify the server's host + key and authenticate using a password or private key. This is a + shortcut for <a href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>, <a + href="paramiko.Transport-class.html#get_remote_server_key" + class="link"><code>get_remote_server_key</code></a>, and <a + href="paramiko.Transport-class.html#auth_password" + class="link"><code>Transport.auth_password</code></a> or <a + href="paramiko.Transport-class.html#auth_publickey" + class="link"><code>Transport.auth_publickey</code></a>. Use those + methods if you want more control.</p> + You can use this method immediately after creating a Transport to + negotiate encryption with a server. If it fails, an exception will be + thrown. On success, the method will return cleanly, and an encrypted + session exists. You may immediately call <a + href="paramiko.Transport-class.html#open_channel" + class="link"><code>open_channel</code></a> or <a + href="paramiko.Transport-class.html#open_session" + class="link"><code>open_session</code></a> to get a <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> object, which is used for data + transfer. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hostkey</b></code> - + the host key expected from the server, or <code>None</code> if + you don't want to do host key verification. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + <dd><code><b>username</b></code> - + the username to authenticate as. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + a password to use for authentication, if you want to use + password authentication; otherwise <code>None</code>. + <br /><i> + (type=str)</i> + <dd><code><b>pkey</b></code> - + a private key to use for authentication, if you want to use + private key authentication; otherwise <code>None</code>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if the SSH2 negotiation fails, the host key supplied by the + server is incorrect, or authentication fails. + </dl> +<p><b>Note:</b> If you fail to supply a password or private key, this method may +succeed, but a subsequent <a +href="paramiko.Transport-class.html#open_channel" +class="link"><code>open_channel</code></a> or <a +href="paramiko.Transport-class.html#open_session" +class="link"><code>open_session</code></a> call may fail because you +haven't authenticated yet. +</p> + +<p><b>Since:</b> doduo +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_exception"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_exception</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return any exception that happened during the last server request. + This can be used to fetch more specific error information after using + calls like <a href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>. The exception (if any) is + cleared after this call. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an exception, or <code>None</code> if there is no stored + exception. + <br /><i> + (type=Exception)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_hexdump"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_hexdump</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if the transport is currently logging hex + dumps of protocol traffic. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if hex dumps are being logged + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_log_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_log_channel</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the channel name used for this transport's logging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + channel name. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_remote_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_remote_server_key</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the host key of the server (in client mode). + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + public key of the remote server. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if no session is currently active. + </dl> +<p><b>Note:</b> Previously this call returned a tuple of (key type, key string). You +can get the same effect by calling <a +href="../private/paramiko.PKey-class.html#get_name" +class="link"><code>PKey.get_name</code></a> for the key type, and +<code>str(key)</code> for the key string. +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_security_options"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_security_options</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return a <a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a> object which can be used + to tweak the encryption algorithms this transport will permit, and the + order of preference for them. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an object that can be used to change the preferred algorithms + for encryption, digest (hash), public key, and key exchange. + <br /><i> + (type=<a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> ivysaur +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_server_key</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the active host key, in server mode. After negotiating with + the client, this method will return the negotiated host key. If only + one type of host key was set with <a + href="paramiko.Transport-class.html#add_server_key" + class="link"><code>add_server_key</code></a>, that's the only key that + will ever be returned. But in cases where you have set more than one + type of host key (for example, an RSA key and a DSS key), the key type + will be negotiated by the client, and this method will return the key + of the type agreed on. If the host key has not been negotiated yet, + <code>None</code> is returned. In client mode, the behavior is + undefined. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + host key of the type negotiated by the client, or + <code>None</code>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_username"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_username</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the username this connection is authenticated for. If the + session is not authenticated (or authentication failed), this method + returns <code>None</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + username that was authenticated, or <code>None</code>. + <br /><i> + (type=string)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="global_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">global_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>wait</span>=<span class=sig-default>True</span>)</span> + </h3> + Make a global request to the remote host. These are normally + extensions to the SSH2 protocol. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + name of the request. + <br /><i> + (type=str)</i> + <dd><code><b>data</b></code> - + an optional tuple containing additional data to attach to the + request. + <br /><i> + (type=tuple)</i> + <dd><code><b>wait</b></code> - + <code>True</code> if this method should not return until a + response is received; <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing possible + additional data if the request was successful (or an empty <a + href="paramiko.Message-class.html" + class="link"><code>Message</code></a> if <code>wait</code> was + <code>False</code>); <code>None</code> if the request was + denied. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="is_active"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">is_active</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return true if this session is active (open). + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the session is still active (open); False if the + session is closed. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="is_authenticated"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">is_authenticated</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return true if this session is active and authenticated. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the session is still open and has been authenticated + successfully; False if authentication failed and/or the session + is closed. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_channel</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>dest_addr</span>=<span class=sig-default>None</span>, + <span class=sig-arg>src_addr</span>=<span class=sig-default>None</span>)</span> + </h3> + Request a new channel to the server. <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>s are socket-like objects used for + the actual transfer of data across the session. You may only request a + channel after negotiating encryption (using <a + href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a> or <a + href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>) and authenticating. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + the kind of channel requested (usually + <code>"session"</code>, + <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code>). + <br /><i> + (type=str)</i> + <dd><code><b>dest_addr</b></code> - + the destination address of this port forwarding, if + <code>kind</code> is <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code> (ignored for other channel + types). + <br /><i> + (type=(str, int))</i> + <dd><code><b>src_addr</b></code> - + the source address of this port forwarding, if + <code>kind</code> is <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code>. + <br /><i> + (type=(str, int))</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on success, or + <code>None</code> if the request is rejected or the session ends + prematurely. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_session"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_session</span>(<span class=sig-arg>self</span>)</span> + </h3> + Request a new channel to the server, of type + <code>"session"</code>. This is just an alias for + <code>open_channel('session')</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on success, or + <code>None</code> if the request is rejected or the session ends + prematurely. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_sftp_client"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_sftp_client</span>(<span class=sig-arg>self</span>)</span> + </h3> + Create an SFTP client channel from an open transport. On success, an + SFTP session will be opened with the remote host, and a new SFTPClient + object will be returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> object, referring to an + sftp session (channel) across this transport + <br /><i> + (type=<a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="renegotiate_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">renegotiate_keys</span>(<span class=sig-arg>self</span>)</span> + </h3> + Force this session to switch to new keys. Normally this is done + automatically after the session hits a certain number of packets or + bytes sent or received, but this method gives you the option of forcing + new keys whenever you want. Negotiating new keys causes a pause in + traffic both ways as the two sides swap keys and do computations. This + method returns when the session has switched to new keys, or the + session has died mid-negotiation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the renegotiation was successful, and the link is + using new keys; False if the session dropped during + renegotiation. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="send_ignore"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_ignore</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>bytes</span>=<span class=sig-default>None</span>)</span> + </h3> + Send a junk packet across the encrypted link. This is sometimes used + to add "noise" to a connection to confuse would-be attackers. + It can also be used as a keep-alive for long lived connections + traversing firewalls. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bytes</b></code> - + the number of random bytes to send in the payload of the + ignored packet -- defaults to a random number from 10 to 41. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_hexdump"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_hexdump</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hexdump</span>)</span> + </h3> + Turn on/off logging a hex dump of protocol traffic at DEBUG level in + the logs. Normally you would want this off (which is the default), but + if you are debugging something, it may be useful. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hexdump</b></code> - + <code>True</code> to log protocol traffix (in hex) to the log; + <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="set_keepalive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>interval</span>)</span> + </h3> + Turn on/off keepalive packets (default is off). If this is set, + after <code>interval</code> 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>interval</b></code> - + seconds to wait before sending a keepalive packet (or 0 to + disable keepalives). + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_log_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_log_channel</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>)</span> + </h3> + Set the channel for this transport's logging. The default is + <code>"paramiko.transport"</code> but it can be set to + anything you want. (See the <code>logging</code> module for more info.) + SSH Channels will log to a sub-channel of the one specified. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + new channel name for logging. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_subsystem_handler"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_subsystem_handler</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>handler</span>, + <span class="sig-vararg">*larg</span>, + <span class="sig-kwarg">**kwarg</span>)</span> + </h3> + <p>Set the handler class for a subsystem in server mode. If a request + for this subsystem is made on an open ssh channel later, this handler + will be constructed and called -- see <a + href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> for more detailed + documentation.</p> + Any extra parameters (including keyword arguments) are saved and + passed to the <a href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> constructor later. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>handler</b></code> - + subclass of <a href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> that handles this + subsystem. + <br /><i> + (type=class)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="start_client"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_client</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate a new SSH2 session as a client. This is the first step + after creating a new <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. A separate thread is created + for protocol negotiation.</p> + <p>If an event is passed in, this method returns immediately. When + negotiation is done (successful or not), the given <code>Event</code> + will be triggered. On failure, <a + href="paramiko.Transport-class.html#is_active" + class="link"><code>is_active</code></a> will return + <code>False</code>.</p> + <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method + will not return until negotation is done. On success, the method + returns normally. Otherwise an SSHException is raised.</p> + After a successful negotiation, you will usually want to + authenticate, calling <a + href="paramiko.Transport-class.html#auth_password" + class="link"><code>auth_password</code></a> or <a + href="paramiko.Transport-class.html#auth_publickey" + class="link"><code>auth_publickey</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>event</b></code> - + an event to trigger when negotiation is complete + (optional) + <br /><i> + (type=threading.Event)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if negotiation fails (and no <code>event</code> was passed + in) + </dl> +<p><b>Notes:</b> +<ul> + <li><a href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a> is a simpler method for connecting +as a client. +</li> + <li>After calling this method (or <a +href="paramiko.Transport-class.html#start_server" +class="link"><code>start_server</code></a> or <a +href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a>), you should no longer directly +read from or write to the original socket object. + + </li> +</ul></p> + + </dd></dl> +</td></tr></table> + +<a name="start_server"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_server</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>, + <span class=sig-arg>server</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate a new SSH2 session as a server. This is the first step + after creating a new <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> and setting up your server host + key(s). A separate thread is created for protocol negotiation.</p> + <p>If an event is passed in, this method returns immediately. When + negotiation is done (successful or not), the given <code>Event</code> + will be triggered. On failure, <a + href="paramiko.Transport-class.html#is_active" + class="link"><code>is_active</code></a> will return + <code>False</code>.</p> + <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method + will not return until negotation is done. On success, the method + returns normally. Otherwise an SSHException is raised.</p> + <p>After a successful negotiation, the client will need to + authenticate. Override the methods <a + href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" + class="link"><code>get_allowed_auths</code></a>, <a + href="../private/paramiko.ServerInterface-class.html#check_auth_none" + class="link"><code>check_auth_none</code></a>, <a + href="../private/paramiko.ServerInterface-class.html#check_auth_password" + class="link"><code>check_auth_password</code></a>, and <a + href="../private/paramiko.ServerInterface-class.html#check_auth_publickey" + class="link"><code>check_auth_publickey</code></a> in the given + <code>server</code> object to control the authentication process.</p> + After a successful authentication, the client should request to open + a channel. Override <a + href="../private/paramiko.ServerInterface-class.html#check_channel_request" + class="link"><code>check_channel_request</code></a> in the given + <code>server</code> object to allow channels to be opened. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>event</b></code> - + an event to trigger when negotiation is complete. + <br /><i> + (type=threading.Event)</i> + <dd><code><b>server</b></code> - + an object used to perform authentication and create <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>s. + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>server.ServerInterface</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if negotiation fails (and no <code>event</code> was passed + in) + </dl> +<p><b>Note:</b> After calling this method (or <a +href="paramiko.Transport-class.html#start_client" +class="link"><code>start_client</code></a> or <a +href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a>), you should no longer directly +read from or write to the original socket object. +</p> + + </dd></dl> +</td></tr></table> + +<a name="use_compression"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">use_compression</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>compress</span>=<span class=sig-default>True</span>)</span> + </h3> + Turn on/off compression. This will only have an affect before + starting the transport (ie before calling <a + href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a>, etc). By default, compression is + off since it negatively affects interactive sessions and is not fully + tested. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>compress</b></code> - + <code>True</code> to ask the remote client/server to compress + traffic; <code>False</code> to refuse compression + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.5.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="_activate_inbound"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_activate_inbound</span>(<span class=sig-arg>self</span>)</span> + </h3> + switch on newly negotiated encryption parameters for inbound + traffic + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_activate_outbound"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_activate_outbound</span>(<span class=sig-arg>self</span>)</span> + </h3> + switch on newly negotiated encryption parameters for outbound + traffic + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_compute_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_compute_key</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>id</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + id is 'A' - 'F' for the various keys used by ssh + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_expect_packet"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_expect_packet</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>type</span>)</span> + </h3> + used by a kex object to register the next packet type it expects to + see + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_get_modulus_pack"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_get_modulus_pack</span>(<span class=sig-arg>self</span>)</span> + </h3> + used by KexGex to find primes for group exchange + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_send_kex_init"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_send_kex_init</span>(<span class=sig-arg>self</span>)</span> + </h3> + announce to the other side that we'd like to negotiate keys, and + what kind of key negotiation we support. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_send_user_message"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_send_user_message</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + send a message, but block if we're in key negotiation. this is used + for user-initiated requests. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_set_K_H"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_set_K_H</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>k</span>, + <span class=sig-arg>h</span>)</span> + </h3> + used by a kex object to set the K (root key) and H (exchange + hash) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_unlink_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_unlink_channel</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>chanid</span>)</span> + </h3> + used by a Channel to remove itself from the active channel list + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="load_server_moduli"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">load_server_moduli</span>(<span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span> + </h3> + <p><i>(optional)</i> Load a file of prime moduli for use in doing + group-exchange key negotiation in server mode. It's a rather obscure + option and can be safely ignored.</p> + In server mode, the remote client may request + "group-exchange" key negotiation, which asks the server to + send a random prime number that fits certain criteria. These primes are + pretty difficult to compute, so they can't be generated on demand. But + many systems contain a file of suitable primes (usually named something + like <code>/etc/ssh/moduli</code>). If you call + <code>load_server_moduli</code> and it returns <code>True</code>, then + this file of primes has been loaded and we will support + "group-exchange" in server mode. Otherwise server mode will + just claim that it doesn't support that method of key negotiation. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + optional path to the moduli file, if you happen to know that + it's not in a standard location. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + True if a moduli file was successfully loaded; False + otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Note:</b> This has no effect when used in client mode. +</p> + +<p><b>Since:</b> doduo +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_channel_handler_table"></a> +<h3>_channel_handler_table</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{96: <unbound method Channel._handle_eof>, 97: <unbound method Channel._handle_close>, 98: <unbound method Channel._handle_request>, 99: <unbound method Channel._request_success>, 100: <unbound method Channel._request_failed>, 93: <unbound method Channel._window_adjust>, 94: <unbound method Channel._feed>, 95: <unbound method Channel._feed_extended>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{93: <unbound method Channel._window_adjust>, + 94: <unbound method Channel._feed>, + 95: <unbound method Channel._feed_extended>, + 96: <unbound method Channel._handle_eof>, + 97: <unbound method Channel._handle_close>, + 98: <unbound method Channel._handle_request>, + 99: <unbound method Channel._request_success>, + 100: <unbound method Channel._request_failed>} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_cipher_info"></a> +<h3>_cipher_info</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'blowfish-cbc': {'block-size': 8, 'key-size': 16, 'class': <module 'Crypto.Cipher.Blowfish' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/Blowfish.so'>, 'mode': 2}, '3des-cbc': {'block-size': 8, 'key-size': 24, 'class': <module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'>, 'mode': 2}, 'aes256-cbc': {'block-size': 16, 'key-size': 32, 'class': <module 'Crypto.Cipher.AES' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/AES.so'>, 'mode': 2}, 'aes128-cbc': {'block-size': 16, 'key-size': 16, 'class': <module 'Crypto.Cipher.AES' from '/usr/lib/py..."> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'3des-cbc': {'block-size': 8, + 'class': <module 'Crypto.Cipher.DES3' from '/usr/lib/pyt<span class="variable-linewrap">\</span> +hon2.4/site-packages/Crypto/Cipher/DES3.so'>, + 'key-size': 24, + 'mode': 2}, + 'aes128-cbc': {'block-size': 16, + 'class': <module 'Crypto.Cipher.AES' from '/usr/lib/py<span class="variable-linewrap">\</span> +thon2.4/site-packages/Crypto/Cipher/AES.so'>, +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_CLIENT_ID"></a> +<h3>_CLIENT_ID</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'paramiko_1.5.2'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>paramiko_1.5.2<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_compression_info"></a> +<h3>_compression_info</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'none': (None, None), 'zlib': (<class 'paramiko.compress.ZlibCompressor'>, <class 'paramiko.compress.ZlibDecompressor'>), 'zlib@openssh.com': (<class 'paramiko.compress.ZlibCompressor'>, <class 'paramiko.compress.ZlibDecompressor'>)}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'none': (None, None), + 'zlib': (<class 'paramiko.compress.ZlibCompressor'>, + <class 'paramiko.compress.ZlibDecompressor'>), + 'zlib@openssh.com': (<class 'paramiko.compress.ZlibCompressor'>, + <class 'paramiko.compress.ZlibDecompressor'>)} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_handler_table"></a> +<h3>_handler_table</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{80: <function _parse_global_request at 0xb7b13fb4>, 81: <function _parse_request_success at 0xb7b1e02c>, 82: <function _parse_request_failure at 0xb7b1e064>, 20: <function _negotiate_keys at 0xb7b13dbc>, 21: <function _parse_newkeys at 0xb7b13f44>, 90: <function _parse_channel_open at 0xb7b1e10c>, 91: <function _parse_channel_open_success at 0xb7b1e09c>, 92: <function _parse_channel_open_failure at 0xb7b1e0d4>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{20: <function _negotiate_keys at 0xb7b13dbc>, + 21: <function _parse_newkeys at 0xb7b13f44>, + 80: <function _parse_global_request at 0xb7b13fb4>, + 81: <function _parse_request_success at 0xb7b1e02c>, + 82: <function _parse_request_failure at 0xb7b1e064>, + 90: <function _parse_channel_open at 0xb7b1e10c>, + 91: <function _parse_channel_open_success at 0xb7b1e09c>, + 92: <function _parse_channel_open_failure at 0xb7b1e0d4>} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_kex_info"></a> +<h3>_kex_info</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'diffie-hellman-group1-sha1': <class 'paramiko.kex_group1.KexGroup1'>, 'diffie-hellman-group-exchange-sha1': <class 'paramiko.kex_gex.KexGex'>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'diffie-hellman-group-exchange-sha1': <class 'paramiko.kex_gex.KexGex<span class="variable-linewrap">\</span> +'>, + 'diffie-hellman-group1-sha1': <class 'paramiko.kex_group1.KexGroup1'><span class="variable-linewrap">\</span> +} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_key_info"></a> +<h3>_key_info</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'ssh-dss': <class 'paramiko.DSSKey'>, 'ssh-rsa': <class 'paramiko.RSAKey'>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'ssh-dss': <class 'paramiko.DSSKey'>, 'ssh-rsa': <class 'paramiko.RSA<span class="variable-linewrap">\</span> +Key'>} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_mac_info"></a> +<h3>_mac_info</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'hmac-sha1': {'class': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'size': 20}, 'hmac-md5-96': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>, 'size': 12}, 'hmac-sha1-96': {'class': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'size': 12}, 'hmac-md5': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>, 'size': 16}}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'hmac-md5': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/python<span class="variable-linewrap">\</span> +2.4/site-packages/Crypto/Hash/MD5.pyc'>, + 'size': 16}, + 'hmac-md5-96': {'class': <module 'Crypto.Hash.MD5' from '/usr/lib/pyt<span class="variable-linewrap">\</span> +hon2.4/site-packages/Crypto/Hash/MD5.pyc'>, + 'size': 12}, + 'hmac-sha1': {'class': <module 'Crypto.Hash.SHA' from '/usr/lib/pytho<span class="variable-linewrap">\</span> +n2.4/site-packages/Crypto/Hash/SHA.pyc'>, +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_modulus_pack"></a> +<h3>_modulus_pack</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>NoneType</code> + + </dd> +<span title="None"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +None </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_preferred_ciphers"></a> +<h3>_preferred_ciphers</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc')"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc') </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_preferred_compression"></a> +<h3>_preferred_compression</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="('none',)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +('none',) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_preferred_kex"></a> +<h3>_preferred_kex</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1')"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1') </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_preferred_keys"></a> +<h3>_preferred_keys</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="('ssh-rsa', 'ssh-dss')"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +('ssh-rsa', 'ssh-dss') </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_preferred_macs"></a> +<h3>_preferred_macs</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96')"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96') </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_PROTO_ID"></a> +<h3>_PROTO_ID</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'2.0'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>2.0<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.agent-module.html b/docs/private/paramiko.agent-module.html new file mode 100644 index 0000000..889d9ea --- /dev/null +++ b/docs/private/paramiko.agent-module.html @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module agent + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.agent-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.agent-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.agent</h2> + +SSH Agent interface for Unix clients. +<hr/> + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></b> = <span title="12">12 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></b> = <span title="14">14 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></b> = <span title="11">11 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></b> = <span title="13">13 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENT_IDENTITIES_ANSWER"></a> +<h3>SSH2_AGENT_IDENTITIES_ANSWER</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="12"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +12 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENT_SIGN_RESPONSE"></a> +<h3>SSH2_AGENT_SIGN_RESPONSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="14"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +14 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENTC_REQUEST_IDENTITIES"></a> +<h3>SSH2_AGENTC_REQUEST_IDENTITIES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="11"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +11 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENTC_SIGN_REQUEST"></a> +<h3>SSH2_AGENTC_SIGN_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="13"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +13 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.auth_handler-module.html b/docs/private/paramiko.auth_handler-module.html new file mode 100644 index 0000000..464b764 --- /dev/null +++ b/docs/private/paramiko.auth_handler-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.auth_handler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module auth_handler + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.auth_handler-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.auth_handler</h2> + +<a href="../private/paramiko.AuthHandler-class.html" +class="link"><code>AuthHandler</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ber-module.html b/docs/private/paramiko.ber-module.html new file mode 100644 index 0000000..03d907b --- /dev/null +++ b/docs/private/paramiko.ber-module.html @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ber</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module ber + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ber-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.ber</h2> + + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a></b></td> + <td>Robey's tiny little attempt at a BER decoder.</td></tr> +</table><br /> + + +<!-- =========== START OF EXCEPTIONS =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Exceptions</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ber.BER-class.html b/docs/private/paramiko.ber.BER-class.html new file mode 100644 index 0000000..79b10ba --- /dev/null +++ b/docs/private/paramiko.ber.BER-class.html @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ber.BER</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.ber-module.html">Module ber</a> :: + Class BER + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ber.BER-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type BER</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>BER</b> +</pre><br /> + +<hr/> + +Robey's tiny little attempt at a BER decoder. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>content</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="decode"></a><span class="summary-sig"><span class="summary-sig-name">decode</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="decode_next"></a><span class="summary-sig"><span class="summary-sig-name">decode_next</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="decode_sequence"></a><span class="summary-sig"><span class="summary-sig-name">decode_sequence</span>(<span class=summary-sig-arg>data</span>)</span></code> +<br /> + <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="encode"></a><span class="summary-sig"><span class="summary-sig-name">encode</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="encode_sequence"></a><span class="summary-sig"><span class="summary-sig-name">encode_sequence</span>(<span class=summary-sig-arg>data</span>)</span></code> +<br /> + <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="encode_tlv"></a><span class="summary-sig"><span class="summary-sig-name">encode_tlv</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>ident</span>, + <span class=summary-sig-arg>val</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ber.BERException-class.html b/docs/private/paramiko.ber.BERException-class.html new file mode 100644 index 0000000..9ae6fff --- /dev/null +++ b/docs/private/paramiko.ber.BERException-class.html @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ber.BERException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.ber-module.html">Module ber</a> :: + Class BERException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ber.BERException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class BERException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>BERException</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.channel-module.html b/docs/private/paramiko.channel-module.html new file mode 100644 index 0000000..bf3adc0 --- /dev/null +++ b/docs/private/paramiko.channel-module.html @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.channel</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module channel + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.channel-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.channel</h2> + +Abstraction for an SSH2 channel. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.channel.ChannelStderrFile-class.html b/docs/private/paramiko.channel.ChannelStderrFile-class.html new file mode 100644 index 0000000..646d24a --- /dev/null +++ b/docs/private/paramiko.channel.ChannelStderrFile-class.html @@ -0,0 +1,282 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.channel.ChannelStderrFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.channel-module.html">Module channel</a> :: + Class ChannelStderrFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.channel.ChannelStderrFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ChannelStderrFile</h2> + +<pre class="base-tree"> + <a href="__builtin__.object-class.html"><code>object</code></a> --+ + | +<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+ + | + <a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a> --+ + | + <b>ChannelStderrFile</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +<i>(subclass override)</i> Read data from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +<i>(subclass override)</i> Write data into the stream.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from ChannelFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +<i>(subclass override)</i> Return the size of the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>newline</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Subclasses call this method to initialize the BufferedFile.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>)</span> + </h3> + <i>(subclass override)</i> Read data from the stream. Return + <code>None</code> or raise <code>EOFError</code> to indicate EOF. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.ChannelFile-class.html#_read"><code>paramiko.ChannelFile._read</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <i>(subclass override)</i> Write data into the stream. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.ChannelFile-class.html#_write"><code>paramiko.ChannelFile._write</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.common-module.html b/docs/private/paramiko.common-module.html new file mode 100644 index 0000000..5422192 --- /dev/null +++ b/docs/private/paramiko.common-module.html @@ -0,0 +1,1013 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.common</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module common + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.common-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.common</h2> + +Common constants and global variables. +<hr/> + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#AUTH_FAILED"><code>AUTH_FAILED</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL"><code>AUTH_SUCCESSFUL</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE"><code>CONNECTION_FAILED_CODE</code></a></b> = <span title="{1: 'Administratively prohibited', 2: 'Connect failed', 3: 'Unknown channel type', 4: 'Resource shortage'}"><code>{1: 'Administratively prohibite<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#CRITICAL"><code>CRITICAL</code></a></b> = <span title="50">50 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#DEBUG"><code>DEBUG</code></a></b> = <span title="10">10 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER"><code>DISCONNECT_AUTH_CANCELLED_BY_USER</code></a></b> = <span title="13">13 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"><code>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</code></a></b> = <span title="14">14 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE"><code>DISCONNECT_SERVICE_NOT_AVAILABLE</code></a></b> = <span title="7">7 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#ERROR"><code>ERROR</code></a></b> = <span title="40">40 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#INFO"><code>INFO</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE"><code>MSG_CHANNEL_CLOSE</code></a></b> = <span title="97">97 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA"><code>MSG_CHANNEL_DATA</code></a></b> = <span title="94">94 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF"><code>MSG_CHANNEL_EOF</code></a></b> = <span title="96">96 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA"><code>MSG_CHANNEL_EXTENDED_DATA</code></a></b> = <span title="95">95 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE"><code>MSG_CHANNEL_FAILURE</code></a></b> = <span title="100">100 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN"><code>MSG_CHANNEL_OPEN</code></a></b> = <span title="90">90 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE"><code>MSG_CHANNEL_OPEN_FAILURE</code></a></b> = <span title="92">92 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS"><code>MSG_CHANNEL_OPEN_SUCCESS</code></a></b> = <span title="91">91 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST"><code>MSG_CHANNEL_REQUEST</code></a></b> = <span title="98">98 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS"><code>MSG_CHANNEL_SUCCESS</code></a></b> = <span title="99">99 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST"><code>MSG_CHANNEL_WINDOW_ADJUST</code></a></b> = <span title="93">93 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_DEBUG"><code>MSG_DEBUG</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_DISCONNECT"><code>MSG_DISCONNECT</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST"><code>MSG_GLOBAL_REQUEST</code></a></b> = <span title="80">80 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_IGNORE"><code>MSG_IGNORE</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_KEXINIT"><code>MSG_KEXINIT</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_NAMES"><code>MSG_NAMES</code></a></b> = <span title="{1: 'disconnect', 2: 'ignore', 3: 'unimplemented', 4: 'debug', 5: 'service-request', 6: 'service-accept', 20: 'kexinit', 21: 'newkeys', 30: 'kex30', 31: 'kex31', 32: 'kex32', 33: 'kex33', 34: 'kex34', 50: 'userauth-request', 51: 'userauth-failure', 52: 'userauth-success', 53: 'userauth--banner', 60: 'userauth-60(pk-ok/info-request)', 61: 'userauth-info-response', 80: 'global-request', 81: 'request-success', 82: 'request-failure', 90: 'channel-open', 91: 'channel-open-success', 92: 'channel-open-failure', 93: 'channel-window-adjust', 94: 'channel-data', 95: 'channel-extended-data', 96: 'chan..."><code>{1: 'disconnect', 2: 'ignore', 3: 'unimpleme<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_NEWKEYS"><code>MSG_NEWKEYS</code></a></b> = <span title="21">21 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE"><code>MSG_REQUEST_FAILURE</code></a></b> = <span title="82">82 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS"><code>MSG_REQUEST_SUCCESS</code></a></b> = <span title="81">81 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT"><code>MSG_SERVICE_ACCEPT</code></a></b> = <span title="6">6 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST"><code>MSG_SERVICE_REQUEST</code></a></b> = <span title="5">5 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED"><code>MSG_UNIMPLEMENTED</code></a></b> = <span title="3">3 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER"><code>MSG_USERAUTH_BANNER</code></a></b> = <span title="53">53 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE"><code>MSG_USERAUTH_FAILURE</code></a></b> = <span title="51">51 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST"><code>MSG_USERAUTH_INFO_REQUEST</code></a></b> = <span title="60">60 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE"><code>MSG_USERAUTH_INFO_RESPONSE</code></a></b> = <span title="61">61 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK"><code>MSG_USERAUTH_PK_OK</code></a></b> = <span title="60">60 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST"><code>MSG_USERAUTH_REQUEST</code></a></b> = <span title="50">50 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS"><code>MSG_USERAUTH_SUCCESS</code></a></b> = <span title="52">52 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.common-module.html#WARNING"><code>WARNING</code></a></b> = <span title="30">30 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="AUTH_FAILED"></a> +<h3>AUTH_FAILED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="AUTH_PARTIALLY_SUCCESSFUL"></a> +<h3>AUTH_PARTIALLY_SUCCESSFUL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="AUTH_SUCCESSFUL"></a> +<h3>AUTH_SUCCESSFUL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CONNECTION_FAILED_CODE"></a> +<h3>CONNECTION_FAILED_CODE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{1: 'Administratively prohibited', 2: 'Connect failed', 3: 'Unknown channel type', 4: 'Resource shortage'}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{1: 'Administratively prohibited', + 2: 'Connect failed', + 3: 'Unknown channel type', + 4: 'Resource shortage'} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CRITICAL"></a> +<h3>CRITICAL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="50"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +50 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="DEBUG"></a> +<h3>DEBUG</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="10"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +10 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="DISCONNECT_AUTH_CANCELLED_BY_USER"></a> +<h3>DISCONNECT_AUTH_CANCELLED_BY_USER</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="13"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +13 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"></a> +<h3>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="14"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +14 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="DISCONNECT_SERVICE_NOT_AVAILABLE"></a> +<h3>DISCONNECT_SERVICE_NOT_AVAILABLE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="7"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +7 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="ERROR"></a> +<h3>ERROR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="40"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +40 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="INFO"></a> +<h3>INFO</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_CLOSE"></a> +<h3>MSG_CHANNEL_CLOSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="97"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +97 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_DATA"></a> +<h3>MSG_CHANNEL_DATA</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="94"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +94 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_EOF"></a> +<h3>MSG_CHANNEL_EOF</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="96"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +96 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_EXTENDED_DATA"></a> +<h3>MSG_CHANNEL_EXTENDED_DATA</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="95"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +95 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_FAILURE"></a> +<h3>MSG_CHANNEL_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="100"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +100 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_OPEN"></a> +<h3>MSG_CHANNEL_OPEN</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="90"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +90 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_OPEN_FAILURE"></a> +<h3>MSG_CHANNEL_OPEN_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="92"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +92 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_OPEN_SUCCESS"></a> +<h3>MSG_CHANNEL_OPEN_SUCCESS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="91"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +91 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_REQUEST"></a> +<h3>MSG_CHANNEL_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="98"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +98 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_SUCCESS"></a> +<h3>MSG_CHANNEL_SUCCESS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="99"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +99 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_CHANNEL_WINDOW_ADJUST"></a> +<h3>MSG_CHANNEL_WINDOW_ADJUST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="93"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +93 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_DEBUG"></a> +<h3>MSG_DEBUG</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_DISCONNECT"></a> +<h3>MSG_DISCONNECT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_GLOBAL_REQUEST"></a> +<h3>MSG_GLOBAL_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="80"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +80 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_IGNORE"></a> +<h3>MSG_IGNORE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_KEXINIT"></a> +<h3>MSG_KEXINIT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_NAMES"></a> +<h3>MSG_NAMES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{1: 'disconnect', 2: 'ignore', 3: 'unimplemented', 4: 'debug', 5: 'service-request', 6: 'service-accept', 20: 'kexinit', 21: 'newkeys', 30: 'kex30', 31: 'kex31', 32: 'kex32', 33: 'kex33', 34: 'kex34', 50: 'userauth-request', 51: 'userauth-failure', 52: 'userauth-success', 53: 'userauth--banner', 60: 'userauth-60(pk-ok/info-request)', 61: 'userauth-info-response', 80: 'global-request', 81: 'request-success', 82: 'request-failure', 90: 'channel-open', 91: 'channel-open-success', 92: 'channel-open-failure', 93: 'channel-window-adjust', 94: 'channel-data', 95: 'channel-extended-data', 96: 'chan..."> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{1: 'disconnect', + 2: 'ignore', + 3: 'unimplemented', + 4: 'debug', + 5: 'service-request', + 6: 'service-accept', + 20: 'kexinit', + 21: 'newkeys', +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_NEWKEYS"></a> +<h3>MSG_NEWKEYS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="21"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +21 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_REQUEST_FAILURE"></a> +<h3>MSG_REQUEST_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="82"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +82 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_REQUEST_SUCCESS"></a> +<h3>MSG_REQUEST_SUCCESS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="81"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +81 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_SERVICE_ACCEPT"></a> +<h3>MSG_SERVICE_ACCEPT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="6"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +6 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_SERVICE_REQUEST"></a> +<h3>MSG_SERVICE_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="5"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +5 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_UNIMPLEMENTED"></a> +<h3>MSG_UNIMPLEMENTED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_BANNER"></a> +<h3>MSG_USERAUTH_BANNER</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="53"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +53 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_FAILURE"></a> +<h3>MSG_USERAUTH_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="51"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +51 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_INFO_REQUEST"></a> +<h3>MSG_USERAUTH_INFO_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="60"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +60 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_INFO_RESPONSE"></a> +<h3>MSG_USERAUTH_INFO_RESPONSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="61"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +61 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_PK_OK"></a> +<h3>MSG_USERAUTH_PK_OK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="60"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +60 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_REQUEST"></a> +<h3>MSG_USERAUTH_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="50"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +50 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MSG_USERAUTH_SUCCESS"></a> +<h3>MSG_USERAUTH_SUCCESS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="52"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +52 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="WARNING"></a> +<h3>WARNING</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="30"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +30 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.compress-module.html b/docs/private/paramiko.compress-module.html new file mode 100644 index 0000000..aa60bc4 --- /dev/null +++ b/docs/private/paramiko.compress-module.html @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.compress</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module compress + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.compress-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.compress</h2> + +Compression implementations for a Transport. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.compress.ZlibCompressor-class.html b/docs/private/paramiko.compress.ZlibCompressor-class.html new file mode 100644 index 0000000..ac848f4 --- /dev/null +++ b/docs/private/paramiko.compress.ZlibCompressor-class.html @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.compress.ZlibCompressor</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.compress-module.html">Module compress</a> :: + Class ZlibCompressor + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.compress.ZlibCompressor-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ZlibCompressor</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>ZlibCompressor</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__call__"></a><span class="summary-sig"><span class="summary-sig-name">__call__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.compress.ZlibDecompressor-class.html b/docs/private/paramiko.compress.ZlibDecompressor-class.html new file mode 100644 index 0000000..63e0b1f --- /dev/null +++ b/docs/private/paramiko.compress.ZlibDecompressor-class.html @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.compress.ZlibDecompressor</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.compress-module.html">Module compress</a> :: + Class ZlibDecompressor + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.compress.ZlibDecompressor-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ZlibDecompressor</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>ZlibDecompressor</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__call__"></a><span class="summary-sig"><span class="summary-sig-name">__call__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.dsskey-module.html b/docs/private/paramiko.dsskey-module.html new file mode 100644 index 0000000..370a1c8 --- /dev/null +++ b/docs/private/paramiko.dsskey-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.dsskey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module dsskey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.dsskey-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.dsskey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.dsskey</h2> + +<a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.file-module.html b/docs/private/paramiko.file-module.html new file mode 100644 index 0000000..676e3ce --- /dev/null +++ b/docs/private/paramiko.file-module.html @@ -0,0 +1,230 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module file + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.file-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.file-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.file</h2> + +BufferedFile. +<hr/> + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_APPEND"><code>_FLAG_APPEND</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_BINARY"><code>_FLAG_BINARY</code></a></b> = <span title="16">16 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_BUFFERED"><code>_FLAG_BUFFERED</code></a></b> = <span title="32">32 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED"><code>_FLAG_LINE_BUFFERED</code></a></b> = <span title="64">64 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_READ"><code>_FLAG_READ</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE"><code>_FLAG_UNIVERSAL_NEWLINE</code></a></b> = <span title="128">128 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.file-module.html#_FLAG_WRITE"><code>_FLAG_WRITE</code></a></b> = <span title="2">2 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_APPEND"></a> +<h3>_FLAG_APPEND</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_BINARY"></a> +<h3>_FLAG_BINARY</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="16"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +16 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_BUFFERED"></a> +<h3>_FLAG_BUFFERED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_LINE_BUFFERED"></a> +<h3>_FLAG_LINE_BUFFERED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="64"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +64 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_READ"></a> +<h3>_FLAG_READ</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_UNIVERSAL_NEWLINE"></a> +<h3>_FLAG_UNIVERSAL_NEWLINE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="128"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +128 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_FLAG_WRITE"></a> +<h3>_FLAG_WRITE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.kex_gex-module.html b/docs/private/paramiko.kex_gex-module.html new file mode 100644 index 0000000..8fad377 --- /dev/null +++ b/docs/private/paramiko.kex_gex-module.html @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_gex</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module kex_gex + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.kex_gex-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.kex_gex</h2> + +Variant on <a +href="../private/paramiko.kex_group1.KexGroup1-class.html" +class="link"><code>KexGroup1</code></a> where the prime "p" and +generator "g" are provided by the server. A bit more work is +required on the client side, and a <b>lot</b> more on the server +side. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP"><code>_MSG_KEXDH_GEX_GROUP</code></a></b> = <span title="31">31 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT"><code>_MSG_KEXDH_GEX_INIT</code></a></b> = <span title="32">32 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY"><code>_MSG_KEXDH_GEX_REPLY</code></a></b> = <span title="33">33 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST"><code>_MSG_KEXDH_GEX_REQUEST</code></a></b> = <span title="34">34 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_GEX_GROUP"></a> +<h3>_MSG_KEXDH_GEX_GROUP</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="31"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +31 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_GEX_INIT"></a> +<h3>_MSG_KEXDH_GEX_INIT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_GEX_REPLY"></a> +<h3>_MSG_KEXDH_GEX_REPLY</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="33"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +33 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_GEX_REQUEST"></a> +<h3>_MSG_KEXDH_GEX_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="34"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +34 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.kex_gex.KexGex-class.html b/docs/private/paramiko.kex_gex.KexGex-class.html new file mode 100644 index 0000000..2eec555 --- /dev/null +++ b/docs/private/paramiko.kex_gex.KexGex-class.html @@ -0,0 +1,250 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_gex.KexGex</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.kex_gex-module.html">Module kex_gex</a> :: + Class KexGex + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.kex_gex.KexGex-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type KexGex</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>KexGex</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_generate_x"></a><span class="summary-sig"><span class="summary-sig-name">_generate_x</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_gex_group"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_group</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_gex_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_init</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_gex_reply"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_reply</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_gex_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_request</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="parse_next"></a><span class="summary-sig"><span class="summary-sig-name">parse_next</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>ptype</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="start_kex"></a><span class="summary-sig"><span class="summary-sig-name">start_kex</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#max_bits"><code>max_bits</code></a></b> = <span title="8192">8192 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#min_bits"><code>min_bits</code></a></b> = <span title="1024">1024 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#name"><code>name</code></a></b> = <span title="'diffie-hellman-group-exchange-sha1'"><code><span class="variable-quote">'</span>diffie-hellman-group-exchange-sha1<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#preferred_bits"><code>preferred_bits</code></a></b> = <span title="2048">2048 </span></td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="max_bits"></a> +<h3>max_bits</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8192"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8192 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="min_bits"></a> +<h3>min_bits</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1024"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1024 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="name"></a> +<h3>name</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'diffie-hellman-group-exchange-sha1'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>diffie-hellman-group-exchange-sha1<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="preferred_bits"></a> +<h3>preferred_bits</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2048"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2048 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.kex_group1-module.html b/docs/private/paramiko.kex_group1-module.html new file mode 100644 index 0000000..84a44f2 --- /dev/null +++ b/docs/private/paramiko.kex_group1-module.html @@ -0,0 +1,181 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_group1</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module kex_group1 + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.kex_group1-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.kex_group1</h2> + +Standard SSH key exchange ("kex" if you wanna sound cool). +Diffie-Hellman of 1024 bit key halves, using a known "p" prime +and "g" generator. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT"><code>_MSG_KEXDH_INIT</code></a></b> = <span title="30">30 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY"><code>_MSG_KEXDH_REPLY</code></a></b> = <span title="31">31 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.kex_group1-module.html#G"><code>G</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td> +<td><b><a href="../private/paramiko.kex_group1-module.html#P"><code>P</code></a></b> = <span title="179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L"><code>1797693134862315907708391567937874531978602960487560<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_INIT"></a> +<h3>_MSG_KEXDH_INIT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="30"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +30 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_MSG_KEXDH_REPLY"></a> +<h3>_MSG_KEXDH_REPLY</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="31"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +31 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="G"></a> +<h3>G</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="P"></a> +<h3>P</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>long</code> + + </dd> +<span title="179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1797693134862315907708391567937874531978602960487560117064444236841971<span class="variable-linewrap">\</span> +8021615851936894783379586492554150218056548598050364644054819923910005<span class="variable-linewrap">\</span> +0792877003355816639229553136239076508735759914822574862575007425302077<span class="variable-linewrap">\</span> +4477125895509579377784244424266173347276292993876687092056060502708108<span class="variable-linewrap">\</span> +42907692932019128194467627007L </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.kex_group1.KexGroup1-class.html b/docs/private/paramiko.kex_group1.KexGroup1-class.html new file mode 100644 index 0000000..7287b9d --- /dev/null +++ b/docs/private/paramiko.kex_group1.KexGroup1-class.html @@ -0,0 +1,176 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_group1.KexGroup1</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.kex_group1-module.html">Module kex_group1</a> :: + Class KexGroup1 + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.kex_group1.KexGroup1-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type KexGroup1</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>KexGroup1</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_generate_x"></a><span class="summary-sig"><span class="summary-sig-name">_generate_x</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_init</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_kexdh_reply"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_reply</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="parse_next"></a><span class="summary-sig"><span class="summary-sig-name">parse_next</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>ptype</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="start_kex"></a><span class="summary-sig"><span class="summary-sig-name">start_kex</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="../private/paramiko.kex_group1.KexGroup1-class.html#name"><code>name</code></a></b> = <span title="'diffie-hellman-group1-sha1'"><code><span class="variable-quote">'</span>diffie-hellman-group1-sha1<span class="variable-quote">'</span> </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="name"></a> +<h3>name</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'diffie-hellman-group1-sha1'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>diffie-hellman-group1-sha1<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.logging22-module.html b/docs/private/paramiko.logging22-module.html new file mode 100644 index 0000000..daa72e6 --- /dev/null +++ b/docs/private/paramiko.logging22-module.html @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.logging22</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module logging22 + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.logging22-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.logging22</h2> + +Stub out logging on python < 2.3. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="getLogger"></a><span class="summary-sig"><span class="summary-sig-name">getLogger</span>(<span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>logger</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#_logger"><code>_logger</code></a></b> = <span title="<paramiko.logging22.logger object at 0xb7b2254c>"><code><paramiko.logging22.logger object at 0xb7b2254<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#CRITICAL"><code>CRITICAL</code></a></b> = <span title="50">50 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#DEBUG"><code>DEBUG</code></a></b> = <span title="10">10 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#ERROR"><code>ERROR</code></a></b> = <span title="40">40 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#INFO"><code>INFO</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.logging22-module.html#WARNING"><code>WARNING</code></a></b> = <span title="30">30 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_logger"></a> +<h3>_logger</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>logger</code> + + </dd> +<span title="<paramiko.logging22.logger object at 0xb7b2254c>"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<paramiko.logging22.logger object at 0xb7b2254c> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CRITICAL"></a> +<h3>CRITICAL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="50"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +50 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="DEBUG"></a> +<h3>DEBUG</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="10"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +10 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="ERROR"></a> +<h3>ERROR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="40"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +40 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="INFO"></a> +<h3>INFO</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="WARNING"></a> +<h3>WARNING</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="30"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +30 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.logging22.Formatter-class.html b/docs/private/paramiko.logging22.Formatter-class.html new file mode 100644 index 0000000..78fa916 --- /dev/null +++ b/docs/private/paramiko.logging22.Formatter-class.html @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.logging22.Formatter</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.logging22-module.html">Module logging22</a> :: + Class Formatter + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.logging22.Formatter-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Formatter</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Formatter</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>x</span>, + <span class=summary-sig-arg>y</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.logging22.StreamHandler-class.html b/docs/private/paramiko.logging22.StreamHandler-class.html new file mode 100644 index 0000000..dc3e953 --- /dev/null +++ b/docs/private/paramiko.logging22.StreamHandler-class.html @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.logging22.StreamHandler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.logging22-module.html">Module logging22</a> :: + Class StreamHandler + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.logging22.StreamHandler-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type StreamHandler</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>StreamHandler</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>f</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setFormatter"></a><span class="summary-sig"><span class="summary-sig-name">setFormatter</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>f</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.logging22.logger-class.html b/docs/private/paramiko.logging22.logger-class.html new file mode 100644 index 0000000..75bd6da --- /dev/null +++ b/docs/private/paramiko.logging22.logger-class.html @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.logging22.logger</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.logging22-module.html">Module logging22</a> :: + Class logger + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.logging22.logger-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type logger</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>logger</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="addFilter"></a><span class="summary-sig"><span class="summary-sig-name">addFilter</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filter</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="addHandler"></a><span class="summary-sig"><span class="summary-sig-name">addHandler</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>h</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="log"></a><span class="summary-sig"><span class="summary-sig-name">log</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>, + <span class=summary-sig-arg>text</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setLevel"></a><span class="summary-sig"><span class="summary-sig-name">setLevel</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>level</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.message-module.html b/docs/private/paramiko.message-module.html new file mode 100644 index 0000000..3a82218 --- /dev/null +++ b/docs/private/paramiko.message-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module message + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.message-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.message-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.message</h2> + +Implementation of an SSH2 "message". +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.packet-module.html b/docs/private/paramiko.packet-module.html new file mode 100644 index 0000000..a14ccd8 --- /dev/null +++ b/docs/private/paramiko.packet-module.html @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.packet</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module packet + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.packet-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.packet</h2> + +Packetizer. +<hr/> + +<!-- =========== START OF EXCEPTIONS =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Exceptions</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.packet.NeedRekeyException-class.html b/docs/private/paramiko.packet.NeedRekeyException-class.html new file mode 100644 index 0000000..850f706 --- /dev/null +++ b/docs/private/paramiko.packet.NeedRekeyException-class.html @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.packet.NeedRekeyException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.packet-module.html">Module packet</a> :: + Class NeedRekeyException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.packet.NeedRekeyException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class NeedRekeyException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>NeedRekeyException</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.pipe-module.html b/docs/private/paramiko.pipe-module.html new file mode 100644 index 0000000..34edd01 --- /dev/null +++ b/docs/private/paramiko.pipe-module.html @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pipe</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module pipe + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.pipe-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.pipe</h2> + +Abstraction of a one-way pipe where the read end can be used in +select(). Normally this is trivial, but Windows makes it nearly +impossible. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a></b></td> + <td>On Windows, only an OS-level "WinSock" may be used in +select(), but reads and writes must be to the actual socket object.</td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="make_pipe"></a><span class="summary-sig"><span class="summary-sig-name">make_pipe</span>()</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.pipe.PosixPipe-class.html b/docs/private/paramiko.pipe.PosixPipe-class.html new file mode 100644 index 0000000..b8a01b1 --- /dev/null +++ b/docs/private/paramiko.pipe.PosixPipe-class.html @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pipe.PosixPipe</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.pipe-module.html">Module pipe</a> :: + Class PosixPipe + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.pipe.PosixPipe-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type PosixPipe</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>PosixPipe</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="clear"></a><span class="summary-sig"><span class="summary-sig-name">clear</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="fileno"></a><span class="summary-sig"><span class="summary-sig-name">fileno</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set"></a><span class="summary-sig"><span class="summary-sig-name">set</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set_forever"></a><span class="summary-sig"><span class="summary-sig-name">set_forever</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.pipe.WindowsPipe-class.html b/docs/private/paramiko.pipe.WindowsPipe-class.html new file mode 100644 index 0000000..56bd3f4 --- /dev/null +++ b/docs/private/paramiko.pipe.WindowsPipe-class.html @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pipe.WindowsPipe</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.pipe-module.html">Module pipe</a> :: + Class WindowsPipe + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.pipe.WindowsPipe-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type WindowsPipe</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>WindowsPipe</b> +</pre><br /> + +<hr/> + +On Windows, only an OS-level "WinSock" may be used in +select(), but reads and writes must be to the actual socket object. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="clear"></a><span class="summary-sig"><span class="summary-sig-name">clear</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="fileno"></a><span class="summary-sig"><span class="summary-sig-name">fileno</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set"></a><span class="summary-sig"><span class="summary-sig-name">set</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="set_forever"></a><span class="summary-sig"><span class="summary-sig-name">set_forever</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.pkey-module.html b/docs/private/paramiko.pkey-module.html new file mode 100644 index 0000000..3b6a4a1 --- /dev/null +++ b/docs/private/paramiko.pkey-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pkey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module pkey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.pkey-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.pkey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.pkey</h2> + +Common API for all public keys. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.primes-module.html b/docs/private/paramiko.primes-module.html new file mode 100644 index 0000000..3f2df29 --- /dev/null +++ b/docs/private/paramiko.primes-module.html @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.primes</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module primes + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.primes-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.primes</h2> + +Utility functions for dealing with primes. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a></b></td> + <td>convenience object for holding the contents of the /etc/ssh/moduli +file, on systems that have such a file.</td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.primes-module.html#_generate_prime" class="summary-sig-name"><code>_generate_prime</code></a>(<span class=summary-sig-arg>bits</span>, + <span class=summary-sig-arg>randpool</span>)</span></code> +<br /> +primtive attempt at prime generation</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.primes-module.html#_roll_random" class="summary-sig-name"><code>_roll_random</code></a>(<span class=summary-sig-arg>rpool</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +returns a random # from 0 to N-1</td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Function Details</th></tr> +</table> + +<a name="_generate_prime"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_generate_prime</span>(<span class=sig-arg>bits</span>, + <span class=sig-arg>randpool</span>)</span> + </h3> + primtive attempt at prime generation + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="_roll_random"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_roll_random</span>(<span class=sig-arg>rpool</span>, + <span class=sig-arg>n</span>)</span> + </h3> + returns a random # from 0 to N-1 + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.primes.ModulusPack-class.html b/docs/private/paramiko.primes.ModulusPack-class.html new file mode 100644 index 0000000..438893b --- /dev/null +++ b/docs/private/paramiko.primes.ModulusPack-class.html @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.primes.ModulusPack</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.primes-module.html">Module primes</a> :: + Class ModulusPack + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.primes.ModulusPack-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type ModulusPack</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>ModulusPack</b> +</pre><br /> + +<hr/> + +convenience object for holding the contents of the /etc/ssh/moduli +file, on systems that have such a file. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>rpool</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_parse_modulus"></a><span class="summary-sig"><span class="summary-sig-name">_parse_modulus</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>line</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_modulus"></a><span class="summary-sig"><span class="summary-sig-name">get_modulus</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>min</span>, + <span class=summary-sig-arg>prefer</span>, + <span class=summary-sig-arg>max</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.primes.ModulusPack-class.html#read_file" class="summary-sig-name"><code>read_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="read_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>)</span> + </h3> + <dl><dt></dt><dd> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + passed from any file operations that fail. + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.rsakey-module.html b/docs/private/paramiko.rsakey-module.html new file mode 100644 index 0000000..29f2397 --- /dev/null +++ b/docs/private/paramiko.rsakey-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.rsakey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module rsakey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.rsakey-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.rsakey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.rsakey</h2> + +<a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.server-module.html b/docs/private/paramiko.server-module.html new file mode 100644 index 0000000..95d6786 --- /dev/null +++ b/docs/private/paramiko.server-module.html @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module server + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.server-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.server-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.server</h2> + +<a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></b></td> + <td>A query (set of prompts) for a user during interactive +authentication.</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.server.InteractiveQuery-class.html b/docs/private/paramiko.server.InteractiveQuery-class.html new file mode 100644 index 0000000..adc7ea2 --- /dev/null +++ b/docs/private/paramiko.server.InteractiveQuery-class.html @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server.InteractiveQuery</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="paramiko.server-module.html">Module server</a> :: + Class InteractiveQuery + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.server.InteractiveQuery-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.server.InteractiveQuery-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type InteractiveQuery</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>InteractiveQuery</b> +</pre><br /> + +<hr/> + +A query (set of prompts) for a user during interactive +authentication. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>instructions</span>, + <span class="summary-sig-vararg">*prompts</span>)</span></code> +<br /> +Create a new interactive query to send to the client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt" class="summary-sig-name"><code>add_prompt</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>prompt</span>, + <span class=summary-sig-arg>echo</span>)</span></code> +<br /> +Add a prompt to this query.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>=<span class=sig-default>''</span>, + <span class=sig-arg>instructions</span>=<span class=sig-default>''</span>, + <span class="sig-vararg">*prompts</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new interactive query to send to the client. The name and + instructions are optional, but are generally displayed to the end user. + A list of prompts may be included, or they may be added via the <a + href="paramiko.server.InteractiveQuery-class.html#add_prompt" + class="link"><code>add_prompt</code></a> method. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of this query + <br /><i> + (type=str)</i> + <dd><code><b>instructions</b></code> - + user instructions (usually short) about this query + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_prompt"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_prompt</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>prompt</span>, + <span class=sig-arg>echo</span>=<span class=sig-default>True</span>)</span> + </h3> + Add a prompt to this query. The prompt should be a (reasonably + short) string. Multiple prompts can be added to the same query. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>prompt</b></code> - + the user prompt + <br /><i> + (type=str)</i> + <dd><code><b>echo</b></code> - + <code>True</code> (default) if the user's response should be + echoed; <code>False</code> if not (for a password or similar) + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp-module.html b/docs/private/paramiko.sftp-module.html new file mode 100644 index 0000000..2d280dd --- /dev/null +++ b/docs/private/paramiko.sftp-module.html @@ -0,0 +1,1082 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp</h2> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></b> = <span title="105">105 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></b> = <span title="103">103 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></b> = <span title="200">200 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></b> = <span title="201">201 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></b> = <span title="10">10 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></b> = <span title="102">102 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></b> = <span title="7">7 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></b> = <span title="14">14 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></b> = <span title="104">104 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></b> = <span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"><code>{1: 'init', 2: 'version', 3: 'open', 4: 'clo<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></b> = <span title="3">3 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></b> = <span title="11">11 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></b> = <span title="5">5 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></b> = <span title="12">12 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></b> = <span title="19">19 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></b> = <span title="16">16 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></b> = <span title="13">13 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></b> = <span title="18">18 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></b> = <span title="15">15 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></b> = <span title="9">9 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></b> = <span title="17">17 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></b> = <span title="101">101 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></b> = <span title="6">6 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></b> = <span title="5">5 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></b> = <span title="7">7 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></b> = <span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"><code>['Success', 'End of file', 'No such file', '<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></b> = <span title="32">32 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></b> = <span title="16">16 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></b> = <span title="6">6 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></b> = <span title="3">3 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.sftp-module.html#_VERSION"><code>_VERSION</code></a></b> = <span title="3">3 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_ATTRS"></a> +<h3>CMD_ATTRS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="105"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +105 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_CLOSE"></a> +<h3>CMD_CLOSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_DATA"></a> +<h3>CMD_DATA</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="103"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +103 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_EXTENDED"></a> +<h3>CMD_EXTENDED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="200"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +200 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_EXTENDED_REPLY"></a> +<h3>CMD_EXTENDED_REPLY</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="201"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +201 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_FSETSTAT"></a> +<h3>CMD_FSETSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="10"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +10 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_FSTAT"></a> +<h3>CMD_FSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_HANDLE"></a> +<h3>CMD_HANDLE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="102"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +102 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_INIT"></a> +<h3>CMD_INIT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_LSTAT"></a> +<h3>CMD_LSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="7"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +7 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_MKDIR"></a> +<h3>CMD_MKDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="14"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +14 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_NAME"></a> +<h3>CMD_NAME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="104"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +104 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_NAMES"></a> +<h3>CMD_NAMES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{1: 'init', + 2: 'version', + 3: 'open', + 4: 'close', + 5: 'read', + 6: 'write', + 7: 'lstat', + 8: 'fstat', +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_OPEN"></a> +<h3>CMD_OPEN</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_OPENDIR"></a> +<h3>CMD_OPENDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="11"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +11 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READ"></a> +<h3>CMD_READ</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="5"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +5 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READDIR"></a> +<h3>CMD_READDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="12"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +12 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READLINK"></a> +<h3>CMD_READLINK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="19"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +19 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_REALPATH"></a> +<h3>CMD_REALPATH</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="16"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +16 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_REMOVE"></a> +<h3>CMD_REMOVE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="13"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +13 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_RENAME"></a> +<h3>CMD_RENAME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="18"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +18 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_RMDIR"></a> +<h3>CMD_RMDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="15"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +15 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_SETSTAT"></a> +<h3>CMD_SETSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="9"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +9 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_STAT"></a> +<h3>CMD_STAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="17"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +17 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_STATUS"></a> +<h3>CMD_STATUS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="101"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +101 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_SYMLINK"></a> +<h3>CMD_SYMLINK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_VERSION"></a> +<h3>CMD_VERSION</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_WRITE"></a> +<h3>CMD_WRITE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="6"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +6 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_BAD_MESSAGE"></a> +<h3>SFTP_BAD_MESSAGE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="5"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +5 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_CONNECTION_LOST"></a> +<h3>SFTP_CONNECTION_LOST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="7"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +7 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_DESC"></a> +<h3>SFTP_DESC</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +['Success', + 'End of file', + 'No such file', + 'Permission denied', + 'Failure', + 'Bad message', + 'No connection', + 'Connection lost', +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_EOF"></a> +<h3>SFTP_EOF</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FAILURE"></a> +<h3>SFTP_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_APPEND"></a> +<h3>SFTP_FLAG_APPEND</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_CREATE"></a> +<h3>SFTP_FLAG_CREATE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_EXCL"></a> +<h3>SFTP_FLAG_EXCL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_READ"></a> +<h3>SFTP_FLAG_READ</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_TRUNC"></a> +<h3>SFTP_FLAG_TRUNC</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="16"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +16 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_WRITE"></a> +<h3>SFTP_FLAG_WRITE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_NO_CONNECTION"></a> +<h3>SFTP_NO_CONNECTION</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="6"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +6 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_NO_SUCH_FILE"></a> +<h3>SFTP_NO_SUCH_FILE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_OK"></a> +<h3>SFTP_OK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_OP_UNSUPPORTED"></a> +<h3>SFTP_OP_UNSUPPORTED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_PERMISSION_DENIED"></a> +<h3>SFTP_PERMISSION_DENIED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_VERSION"></a> +<h3>_VERSION</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_attr-module.html b/docs/private/paramiko.sftp_attr-module.html new file mode 100644 index 0000000..f5e9f9c --- /dev/null +++ b/docs/private/paramiko.sftp_attr-module.html @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_attr</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_attr + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_attr-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_attr-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_attr</h2> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_client-module.html b/docs/private/paramiko.sftp_client-module.html new file mode 100644 index 0000000..9eff026 --- /dev/null +++ b/docs/private/paramiko.sftp_client-module.html @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_client</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_client + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_client-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_client-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_client</h2> + +Client-mode SFTP support. +<hr/> + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/paramiko.sftp_client-module.html#_to_unicode" class="summary-sig-name"><code>_to_unicode</code></a>(<span class=summary-sig-arg>s</span>)</span></code> +<br /> +if a str is not ascii, decode its utf8 into unicode</td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Function Details</th></tr> +</table> + +<a name="_to_unicode"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">_to_unicode</span>(<span class=sig-arg>s</span>)</span> + </h3> + if a str is not ascii, decode its utf8 into unicode + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_file-module.html b/docs/private/paramiko.sftp_file-module.html new file mode 100644 index 0000000..f954ea3 --- /dev/null +++ b/docs/private/paramiko.sftp_file-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_file + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_file-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_file-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_file</h2> + +<a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_handle-module.html b/docs/private/paramiko.sftp_handle-module.html new file mode 100644 index 0000000..aba785c --- /dev/null +++ b/docs/private/paramiko.sftp_handle-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_handle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_handle + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_handle-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_handle-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_handle</h2> + +Abstraction of an SFTP file handle (for server mode). +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_server-module.html b/docs/private/paramiko.sftp_server-module.html new file mode 100644 index 0000000..a4c43f5 --- /dev/null +++ b/docs/private/paramiko.sftp_server-module.html @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_server + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_server-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_server-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_server</h2> + +Server-mode SFTP support. +<hr/> + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.sftp_server-module.html#_hash_class"><code>_hash_class</code></a></b> = <span title="{'sha1': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'md5': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>}"><code>{'sha1': <module 'Crypto.Hash.SHA' from '/<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_hash_class"></a> +<h3>_hash_class</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{'sha1': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'>, 'md5': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'>}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{'md5': <module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packag<span class="variable-linewrap">\</span> +es/Crypto/Hash/MD5.pyc'>, + 'sha1': <module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packa<span class="variable-linewrap">\</span> +ges/Crypto/Hash/SHA.pyc'>} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.sftp_si-module.html b/docs/private/paramiko.sftp_si-module.html new file mode 100644 index 0000000..c4e623f --- /dev/null +++ b/docs/private/paramiko.sftp_si-module.html @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_si</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_si + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.sftp_si-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_si-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_si</h2> + +<a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ssh_exception-module.html b/docs/private/paramiko.ssh_exception-module.html new file mode 100644 index 0000000..dd9908c --- /dev/null +++ b/docs/private/paramiko.ssh_exception-module.html @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ssh_exception</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module ssh_exception + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ssh_exception-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.ssh_exception</h2> + +Exceptions defined by paramiko. +<hr/> + +<!-- =========== START OF EXCEPTIONS =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Exceptions</th></tr> +<tr><td width="15%"> + <b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></b></td> + <td>An internal exception thrown in the case of partial +authentication.</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html b/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html new file mode 100644 index 0000000..0aa4a93 --- /dev/null +++ b/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ssh_exception.PartialAuthentication</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="../private/paramiko.ssh_exception-module.html">Module ssh_exception</a> :: + Class PartialAuthentication + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class PartialAuthentication</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+ + | + <b>PartialAuthentication</b> +</pre><br /> + +<hr/> + +An internal exception thrown in the case of partial +authentication. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>types</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><code>allowed_types</code></a></b> = <span title="[]"><code>[] </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="allowed_types"></a> +<h3>allowed_types</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="[]"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +[] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.transport-module.html b/docs/private/paramiko.transport-module.html new file mode 100644 index 0000000..1d52647 --- /dev/null +++ b/docs/private/paramiko.transport-module.html @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module transport + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.transport-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.transport-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.transport</h2> + +<a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol. +<hr/> + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_join_lingering_threads"></a><span class="summary-sig"><span class="summary-sig-name">_join_lingering_threads</span>()</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="../private/paramiko.transport-module.html#_active_threads"><code>_active_threads</code></a></b> = <span title="[]"><code>[] </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_active_threads"></a> +<h3>_active_threads</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="[]"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +[] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.util-module.html b/docs/private/paramiko.util-module.html new file mode 100644 index 0000000..660bdf3 --- /dev/null +++ b/docs/private/paramiko.util-module.html @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module util + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.util-module.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.util-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.util</h2> + +Useful functions used by the rest of paramiko. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="bit_length"></a><span class="summary-sig"><span class="summary-sig-name">bit_length</span>(<span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#deflate_long" class="summary-sig-name"><code>deflate_long</code></a>(<span class=summary-sig-arg>n</span>, + <span class=summary-sig-arg>add_sign_padding</span>)</span></code> +<br /> +turns a long-int into a normalized byte string (adapted from +Crypto.Util.number)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary"></a><span class="summary-sig"><span class="summary-sig-name">format_binary</span>(<span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>prefix</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary_line"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_line</span>(<span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary_weird"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_weird</span>(<span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#generate_key_bytes" class="summary-sig-name"><code>generate_key_bytes</code></a>(<span class=summary-sig-arg>hashclass</span>, + <span class=summary-sig-arg>salt</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Given a password, passphrase, or other human-source key, scramble it +through a secure hash into some keyworthy bytes.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_logger"></a><span class="summary-sig"><span class="summary-sig-name">get_logger</span>(<span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_thread_id"></a><span class="summary-sig"><span class="summary-sig-name">get_thread_id</span>()</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#hexify" class="summary-sig-name"><code>hexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code> +<br /> +turn a string into a hex sequence</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#inflate_long" class="summary-sig-name"><code>inflate_long</code></a>(<span class=summary-sig-arg>s</span>, + <span class=summary-sig-arg>always_positive</span>)</span></code> +<br /> +turns a normalized byte string into a long-int (adapted from +Crypto.Util.number)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> dict(hostname, dict(keytype, <a + href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)) +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#load_host_keys" class="summary-sig-name"><code>load_host_keys</code></a>(<span class=summary-sig-arg>filename</span>)</span></code> +<br /> +Read a file of known SSH host keys, in the format used by openssh, and +return a compound dict of <code>hostname -> keytype -></code> <a +href="../private/paramiko.PKey-class.html" +class="link"><code>PKey</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#log_to_file" class="summary-sig-name"><code>log_to_file</code></a>(<span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>level</span>)</span></code> +<br /> +send paramiko logs to a logfile, if they're not already going +somewhere</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#lookup_ssh_host_config" class="summary-sig-name"><code>lookup_ssh_host_config</code></a>(<span class=summary-sig-arg>hostname</span>, + <span class=summary-sig-arg>config</span>)</span></code> +<br /> +Return a dict of config options for a given hostname.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="mod_inverse"></a><span class="summary-sig"><span class="summary-sig-name">mod_inverse</span>(<span class=summary-sig-arg>x</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> object +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#parse_ssh_config" class="summary-sig-name"><code>parse_ssh_config</code></a>(<span class=summary-sig-arg>file_obj</span>)</span></code> +<br /> +Parse a config file of the format used by OpenSSH, and return an +object that can be used to make queries to <a +href="paramiko.util-module.html#lookup_ssh_host_config" +class="link"><code>lookup_ssh_host_config</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="safe_string"></a><span class="summary-sig"><span class="summary-sig-name">safe_string</span>(<span class=summary-sig-arg>s</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="tb_strings"></a><span class="summary-sig"><span class="summary-sig-name">tb_strings</span>()</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#unhexify" class="summary-sig-name"><code>unhexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code> +<br /> +turn a hex sequence back into a string</td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="../private/paramiko.util-module.html#_g_thread_counter"><code>_g_thread_counter</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="../private/paramiko.util-module.html#_g_thread_ids"><code>_g_thread_ids</code></a></b> = <span title="{}"><code>{} </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>lock</code></font></td> +<td><b><a href="../private/paramiko.util-module.html#_g_thread_lock"><code>_g_thread_lock</code></a></b> = <span title="<thread.lock object at 0xb7df2180>"><code><thread.lock object at 0xb7df2180> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>PFilter</code></font></td> +<td><b><a href="../private/paramiko.util-module.html#_pfilter"><code>_pfilter</code></a></b> = <span title="<paramiko.util.PFilter object at 0xb7b39dac>"><code><paramiko.util.PFilter object at 0xb7b39dac> </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Function Details</th></tr> +</table> + +<a name="deflate_long"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">deflate_long</span>(<span class=sig-arg>n</span>, + <span class=sig-arg>add_sign_padding</span>=<span class=sig-default>True</span>)</span> + </h3> + turns a long-int into a normalized byte string (adapted from + Crypto.Util.number) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="generate_key_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate_key_bytes</span>(<span class=sig-arg>hashclass</span>, + <span class=sig-arg>salt</span>, + <span class=sig-arg>key</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Given a password, passphrase, or other human-source key, scramble it + through a secure hash into some keyworthy bytes. This specific + algorithm is used for encrypting/decrypting private key files. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hashclass</b></code> - + class from <code>Crypto.Hash</code> that can be used as a + secure hashing function (like <code>MD5</code> or + <code>SHA</code>). + <br /><i> + (type=<code>Crypto.Hash</code>)</i> + <dd><code><b>salt</b></code> - + data to salt the hash with. + <br /><i> + (type=string)</i> + <dd><code><b>key</b></code> - + human-entered password or passphrase. + <br /><i> + (type=string)</i> + <dd><code><b>nbytes</b></code> - + number of bytes to generate. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + key data + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="hexify"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">hexify</span>(<span class=sig-arg>s</span>)</span> + </h3> + turn a string into a hex sequence + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="inflate_long"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">inflate_long</span>(<span class=sig-arg>s</span>, + <span class=sig-arg>always_positive</span>=<span class=sig-default>False</span>)</span> + </h3> + turns a normalized byte string into a long-int (adapted from + Crypto.Util.number) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="load_host_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">load_host_keys</span>(<span class=sig-arg>filename</span>)</span> + </h3> + <p>Read a file of known SSH host keys, in the format used by openssh, + and return a compound dict of <code>hostname -> keytype -></code> + <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>. The hostname may be an IP address + or DNS name. The keytype will be either + <code>"ssh-rsa"</code> or + <code>"ssh-dss"</code>.</p> + This type of file unfortunately doesn't exist on Windows, but on + posix, it will usually be stored in + <code>os.path.expanduser("~/.ssh/known_hosts")</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to read host keys from + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + dict of host keys, indexed by hostname and then keytype + <br /><i> + (type=dict(hostname, dict(keytype, <a + href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)))</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="log_to_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">log_to_file</span>(<span class=sig-arg>filename</span>, + <span class=sig-arg>level</span>=<span class=sig-default>10</span>)</span> + </h3> + send paramiko logs to a logfile, if they're not already going + somewhere + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="lookup_ssh_host_config"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">lookup_ssh_host_config</span>(<span class=sig-arg>hostname</span>, + <span class=sig-arg>config</span>)</span> + </h3> + <p>Return a dict of config options for a given hostname. The + <code>config</code> object must come from <a + href="paramiko.util-module.html#parse_ssh_config" + class="link"><code>parse_ssh_config</code></a>.</p> + <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 + *.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> + The keys in the returned dict are all normalized to lowercase (look + for <code>"port"</code>, not <code>"Port"</code>. + No other processing is done to the keys or values. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hostname</b></code> - + the hostname to lookup + <br /><i> + (type=str)</i> + <dd><code><b>config</b></code> - + the config object to search + <br /><i> + (type=object)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="parse_ssh_config"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">parse_ssh_config</span>(<span class=sig-arg>file_obj</span>)</span> + </h3> + <p>Parse a config file of the format used by OpenSSH, and return an + object that can be used to make queries to <a + href="paramiko.util-module.html#lookup_ssh_host_config" + class="link"><code>lookup_ssh_host_config</code></a>. The format is + described in OpenSSH's <code>ssh_config</code> man page. This method 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> + The return value is currently a list of dictionaries, each + containing host-specific configuration, but this is considered an + implementation detail and may be subject to change in later + versions. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>file_obj</b></code> - + a file-like object to read the config file from + <br /><i> + (type=file)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + opaque configuration object + <br /><i> + (type=object)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="unhexify"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">unhexify</span>(<span class=sig-arg>s</span>)</span> + </h3> + turn a hex sequence back into a string + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_g_thread_counter"></a> +<h3>_g_thread_counter</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_g_thread_ids"></a> +<h3>_g_thread_ids</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{} </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_g_thread_lock"></a> +<h3>_g_thread_lock</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>lock</code> + + </dd> +<span title="<thread.lock object at 0xb7df2180>"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<thread.lock object at 0xb7df2180> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_pfilter"></a> +<h3>_pfilter</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>PFilter</code> + + </dd> +<span title="<paramiko.util.PFilter object at 0xb7b39dac>"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<paramiko.util.PFilter object at 0xb7b39dac> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/paramiko.util.PFilter-class.html b/docs/private/paramiko.util.PFilter-class.html new file mode 100644 index 0000000..dee3883 --- /dev/null +++ b/docs/private/paramiko.util.PFilter-class.html @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.PFilter</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="paramiko.util-module.html">Module util</a> :: + Class PFilter + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/paramiko.util.PFilter-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.util.PFilter-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type PFilter</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>PFilter</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="filter"></a><span class="summary-sig"><span class="summary-sig-name">filter</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>record</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/threading.Thread-class.html b/docs/private/threading.Thread-class.html new file mode 100644 index 0000000..292b074 --- /dev/null +++ b/docs/private/threading.Thread-class.html @@ -0,0 +1,237 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>threading.Thread</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module threading :: + Class Thread + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/threading.Thread-class.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="threading.Thread-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Thread</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <b>Thread</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a>, + <a href="paramiko.Transport-class.html"><code>Transport</code></a></dd></dl> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>group</span>, + <span class=summary-sig-arg>target</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>args</span>, + <span class=summary-sig-arg>kwargs</span>, + <span class=summary-sig-arg>verbose</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">(type, value, traceback)</font></td> + <td><code><span class="summary-sig"><code>__exc_info</code>()</span></code> +<br /> +Return information about the most recent exception caught by an except +clause in the current stack frame or in an older stack frame.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="getName"></a><span class="summary-sig"><span class="summary-sig-name">getName</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="isAlive"></a><span class="summary-sig"><span class="summary-sig-name">isAlive</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="isDaemon"></a><span class="summary-sig"><span class="summary-sig-name">isDaemon</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="join"></a><span class="summary-sig"><span class="summary-sig-name">join</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setDaemon"></a><span class="summary-sig"><span class="summary-sig-name">setDaemon</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setName"></a><span class="summary-sig"><span class="summary-sig-name">setName</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="start"></a><span class="summary-sig"><span class="summary-sig-name">start</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__bootstrap"></a><span class="summary-sig"><span class="summary-sig-name">__bootstrap</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#__delete" class="summary-sig-name"><code>__delete</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Remove current thread from the dict of currently running threads.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__stop"></a><span class="summary-sig"><span class="summary-sig-name">__stop</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_set_daemon"></a><span class="summary-sig"><span class="summary-sig-name">_set_daemon</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from _Verbose</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>format</span>, + <span class="summary-sig-vararg">*args</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td> +<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__delete"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__delete</span>(<span class=sig-arg>self</span>)</span> + </h3> + Remove current thread from the dict of currently running + threads. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="_Thread__initialized"></a> +<h3>_Thread__initialized</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>bool</code> + + </dd> +<span title="False"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +False </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/threading._Verbose-class.html b/docs/private/threading._Verbose-class.html new file mode 100644 index 0000000..dec73e3 --- /dev/null +++ b/docs/private/threading._Verbose-class.html @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>threading._Verbose</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module threading :: + Class _Verbose + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<b>show private</b> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="../private/threading._Verbose-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type _Verbose</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>_Verbose</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="threading.Thread-class.html"><code>Thread</code></a></dd></dl> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>verbose</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="_note"></a><span class="summary-sig"><span class="summary-sig-name">_note</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>format</span>, + <span class="summary-sig-vararg">*args</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/private/toc-everything.html b/docs/private/toc-everything.html new file mode 100644 index 0000000..a232317 --- /dev/null +++ b/docs/private/toc-everything.html @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Everything</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b>Everything</b></font></center> +<hr> + +<!-- =========== START OF ALL CLASSES =========== --> +<font size="+1"><b>All Classes</b></font><br /> +<a target="mainFrame" href="paramiko.Agent-class.html">paramiko.Agent</a><br /> +<a target="mainFrame" href="paramiko.AgentKey-class.html">paramiko.AgentKey</a><br /> +<a target="mainFrame" href="../private/paramiko.AuthHandler-class.html">paramiko.AuthHandler</a><br /> +<a target="mainFrame" href="../private/paramiko.BaseSFTP-class.html">paramiko.BaseSFTP</a><br /> +<a target="mainFrame" href="../private/paramiko.ber.BER-class.html">paramiko.ber.BER</a><br /> +<a target="mainFrame" href="paramiko.BufferedFile-class.html">paramiko.BufferedFile</a><br /> +<a target="mainFrame" href="paramiko.Channel-class.html">paramiko.Channel</a><br /> +<a target="mainFrame" href="../private/paramiko.channel.ChannelStderrFile-class.html">paramiko.channel.ChannelStderrFile</a><br /> +<a target="mainFrame" href="../private/paramiko.ChannelFile-class.html">paramiko.ChannelFile</a><br /> +<a target="mainFrame" href="../private/paramiko.compress.ZlibCompressor-class.html">paramiko.compress.ZlibCompressor</a><br /> +<a target="mainFrame" href="../private/paramiko.compress.ZlibDecompressor-class.html">paramiko.compress.ZlibDecompressor</a><br /> +<a target="mainFrame" href="paramiko.DSSKey-class.html">paramiko.DSSKey</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex.KexGex-class.html">paramiko.kex_gex.KexGex</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1.KexGroup1-class.html">paramiko.kex_group1.KexGroup1</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22.Formatter-class.html">paramiko.logging22.Formatter</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22.logger-class.html">paramiko.logging22.logger</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22.StreamHandler-class.html">paramiko.logging22.StreamHandler</a><br /> +<a target="mainFrame" href="paramiko.Message-class.html">paramiko.Message</a><br /> +<a target="mainFrame" href="../private/paramiko.Packetizer-class.html">paramiko.Packetizer</a><br /> +<a target="mainFrame" href="../private/paramiko.pipe.PosixPipe-class.html">paramiko.pipe.PosixPipe</a><br /> +<a target="mainFrame" href="../private/paramiko.pipe.WindowsPipe-class.html">paramiko.pipe.WindowsPipe</a><br /> +<a target="mainFrame" href="../private/paramiko.PKey-class.html">paramiko.PKey</a><br /> +<a target="mainFrame" href="../private/paramiko.primes.ModulusPack-class.html">paramiko.primes.ModulusPack</a><br /> +<a target="mainFrame" href="paramiko.RSAKey-class.html">paramiko.RSAKey</a><br /> +<a target="mainFrame" href="paramiko.SecurityOptions-class.html">paramiko.SecurityOptions</a><br /> +<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">paramiko.server.InteractiveQuery</a><br /> +<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">paramiko.ServerInterface</a><br /> +<a target="mainFrame" href="paramiko.SFTP-class.html">paramiko.SFTP</a><br /> +<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">paramiko.SFTPAttributes</a><br /> +<a target="mainFrame" href="paramiko.SFTPClient-class.html">paramiko.SFTPClient</a><br /> +<a target="mainFrame" href="paramiko.SFTPFile-class.html">paramiko.SFTPFile</a><br /> +<a target="mainFrame" href="paramiko.SFTPHandle-class.html">paramiko.SFTPHandle</a><br /> +<a target="mainFrame" href="paramiko.SFTPServer-class.html">paramiko.SFTPServer</a><br /> +<a target="mainFrame" href="../private/paramiko.SFTPServerInterface-class.html">paramiko.SFTPServerInterface</a><br /> +<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">paramiko.SubsystemHandler</a><br /> +<a target="mainFrame" href="paramiko.Transport-class.html">paramiko.Transport</a><br /> +<a target="mainFrame" href="paramiko.util.PFilter-class.html">paramiko.util.PFilter</a><br /> +<br /> + +<!-- =========== START OF ALL EXCEPTIONS =========== --> +<font size="+1"><b>All Exceptions</b></font><br /> +<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">paramiko.BadAuthenticationType</a><br /> +<a target="mainFrame" href="../private/paramiko.ber.BERException-class.html">paramiko.ber.BERException</a><br /> +<a target="mainFrame" href="../private/paramiko.packet.NeedRekeyException-class.html">paramiko.packet.NeedRekeyException</a><br /> +<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">paramiko.PasswordRequiredException</a><br /> +<a target="mainFrame" href="paramiko.SFTPError-class.html">paramiko.SFTPError</a><br /> +<a target="mainFrame" href="../private/paramiko.ssh_exception.PartialAuthentication-class.html">paramiko.ssh_exception.PartialAuthentication</a><br /> +<a target="mainFrame" href="paramiko.SSHException-class.html">paramiko.SSHException</a><br /> +<br /> + +<!-- =========== START OF ALL FUNCTIONS =========== --> +<font size="+1"><b>All Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.primes-module.html#_generate_prime">_generate_prime</a><br /> +<a target="mainFrame" href="../private/paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><br /> +<a target="mainFrame" href="../private/paramiko.primes-module.html#_roll_random">_roll_random</a><br /> +<a target="mainFrame" href="../private/paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#getLogger">getLogger</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br /> +<a target="mainFrame" href="../private/paramiko.pipe-module.html#make_pipe">make_pipe</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br /> +<br /> + +<!-- =========== START OF ALL VARIABLES =========== --> +<font size="+1"><b>All Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__author__">__author__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__date__">__date__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__license__">__license__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__version__">__version__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__version_info__">__version_info__</a><br /> +<a target="mainFrame" href="../private/paramiko.transport-module.html#_active_threads">_active_threads</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_APPEND">_FLAG_APPEND</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BINARY">_FLAG_BINARY</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BUFFERED">_FLAG_BUFFERED</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED">_FLAG_LINE_BUFFERED</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_READ">_FLAG_READ</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE">_FLAG_UNIVERSAL_NEWLINE</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_WRITE">_FLAG_WRITE</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br /> +<a target="mainFrame" href="../private/paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#_logger">_logger</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_pfilter">_pfilter</a><br /> +<a target="mainFrame" href="../private/paramiko.sftp-module.html#_VERSION">_VERSION</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_FAILED">AUTH_FAILED</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL">AUTH_PARTIALLY_SUCCESSFUL</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL">AUTH_SUCCESSFUL</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE">CONNECTION_FAILED_CODE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#CRITICAL">CRITICAL</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DEBUG">DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#DEBUG">DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER">DISCONNECT_AUTH_CANCELLED_BY_USER</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE">DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE">DISCONNECT_SERVICE_NOT_AVAILABLE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#ERROR">ERROR</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#ERROR">ERROR</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#G">G</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#INFO">INFO</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#INFO">INFO</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE">MSG_CHANNEL_CLOSE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA">MSG_CHANNEL_DATA</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF">MSG_CHANNEL_EOF</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA">MSG_CHANNEL_EXTENDED_DATA</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE">MSG_CHANNEL_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN">MSG_CHANNEL_OPEN</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE">MSG_CHANNEL_OPEN_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS">MSG_CHANNEL_OPEN_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST">MSG_CHANNEL_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS">MSG_CHANNEL_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST">MSG_CHANNEL_WINDOW_ADJUST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DEBUG">MSG_DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DISCONNECT">MSG_DISCONNECT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST">MSG_GLOBAL_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_IGNORE">MSG_IGNORE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_KEXINIT">MSG_KEXINIT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NAMES">MSG_NAMES</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NEWKEYS">MSG_NEWKEYS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE">MSG_REQUEST_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS">MSG_REQUEST_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT">MSG_SERVICE_ACCEPT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST">MSG_SERVICE_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED">MSG_UNIMPLEMENTED</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER">MSG_USERAUTH_BANNER</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE">MSG_USERAUTH_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST">MSG_USERAUTH_INFO_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE">MSG_USERAUTH_INFO_RESPONSE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK">MSG_USERAUTH_PK_OK</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST">MSG_USERAUTH_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS">MSG_USERAUTH_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#P">P</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#WARNING">WARNING</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#WARNING">WARNING</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-everything.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko-module.html b/docs/private/toc-paramiko-module.html new file mode 100644 index 0000000..e6f4d8b --- /dev/null +++ b/docs/private/toc-paramiko-module.html @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko-module.html">paramiko</a></b></font></center> +<hr> + +<!-- =========== START OF MODULES =========== --> +<font size="+1"><b>Modules</b></font><br /> +<a target="mainFrame" href="paramiko.agent-module.html">agent</a><br /> +<a target="mainFrame" href="../private/paramiko.auth_handler-module.html">auth_handler</a><br /> +<a target="mainFrame" href="../private/paramiko.ber-module.html">ber</a><br /> +<a target="mainFrame" href="../private/paramiko.channel-module.html">channel</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html">common</a><br /> +<a target="mainFrame" href="../private/paramiko.compress-module.html">compress</a><br /> +<a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a><br /> +<a target="mainFrame" href="paramiko.file-module.html">file</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html">kex_gex</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html">kex_group1</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html">logging22</a><br /> +<a target="mainFrame" href="paramiko.message-module.html">message</a><br /> +<a target="mainFrame" href="../private/paramiko.packet-module.html">packet</a><br /> +<a target="mainFrame" href="../private/paramiko.pipe-module.html">pipe</a><br /> +<a target="mainFrame" href="paramiko.pkey-module.html">pkey</a><br /> +<a target="mainFrame" href="../private/paramiko.primes-module.html">primes</a><br /> +<a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a><br /> +<a target="mainFrame" href="paramiko.server-module.html">server</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html">sftp</a><br /> +<a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a><br /> +<a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a><br /> +<a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a><br /> +<a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a><br /> +<a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a><br /> +<a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a><br /> +<a target="mainFrame" href="../private/paramiko.ssh_exception-module.html">ssh_exception</a><br /> +<a target="mainFrame" href="paramiko.transport-module.html">transport</a><br /> +<a target="mainFrame" href="paramiko.util-module.html">util</a><br /> +<br /> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.Agent-class.html">Agent</a><br /> +<a target="mainFrame" href="paramiko.AgentKey-class.html">AgentKey</a><br /> +<a target="mainFrame" href="../private/paramiko.AuthHandler-class.html">AuthHandler</a><br /> +<a target="mainFrame" href="../private/paramiko.BaseSFTP-class.html">BaseSFTP</a><br /> +<a target="mainFrame" href="paramiko.BufferedFile-class.html">BufferedFile</a><br /> +<a target="mainFrame" href="paramiko.Channel-class.html">Channel</a><br /> +<a target="mainFrame" href="../private/paramiko.ChannelFile-class.html">ChannelFile</a><br /> +<a target="mainFrame" href="paramiko.DSSKey-class.html">DSSKey</a><br /> +<a target="mainFrame" href="paramiko.Message-class.html">Message</a><br /> +<a target="mainFrame" href="../private/paramiko.Packetizer-class.html">Packetizer</a><br /> +<a target="mainFrame" href="../private/paramiko.PKey-class.html">PKey</a><br /> +<a target="mainFrame" href="paramiko.RSAKey-class.html">RSAKey</a><br /> +<a target="mainFrame" href="paramiko.SecurityOptions-class.html">SecurityOptions</a><br /> +<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">ServerInterface</a><br /> +<a target="mainFrame" href="paramiko.SFTP-class.html">SFTP</a><br /> +<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a><br /> +<a target="mainFrame" href="paramiko.SFTPClient-class.html">SFTPClient</a><br /> +<a target="mainFrame" href="paramiko.SFTPFile-class.html">SFTPFile</a><br /> +<a target="mainFrame" href="paramiko.SFTPHandle-class.html">SFTPHandle</a><br /> +<a target="mainFrame" href="paramiko.SFTPServer-class.html">SFTPServer</a><br /> +<a target="mainFrame" href="../private/paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a><br /> +<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br /> +<a target="mainFrame" href="paramiko.Transport-class.html">Transport</a><br /> +<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">x</a><br /> +<br /> + +<!-- =========== START OF EXCEPTIONS =========== --> +<font size="+1"><b>Exceptions</b></font><br /> +<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a><br /> +<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">PasswordRequiredException</a><br /> +<a target="mainFrame" href="paramiko.SFTPError-class.html">SFTPError</a><br /> +<a target="mainFrame" href="paramiko.SSHException-class.html">SSHException</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__author__">__author__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__date__">__date__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__license__">__license__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__version__">__version__</a><br /> +<a target="mainFrame" href="../private/paramiko-module.html#__version_info__">__version_info__</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.agent-module.html b/docs/private/toc-paramiko.agent-module.html new file mode 100644 index 0000000..67aa397 --- /dev/null +++ b/docs/private/toc-paramiko.agent-module.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.agent-module.html">agent</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.agent-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.auth_handler-module.html b/docs/private/toc-paramiko.auth_handler-module.html new file mode 100644 index 0000000..a82871d --- /dev/null +++ b/docs/private/toc-paramiko.auth_handler-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.auth_handler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.auth_handler-module.html">auth_handler</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.ber-module.html b/docs/private/toc-paramiko.ber-module.html new file mode 100644 index 0000000..2dd81d0 --- /dev/null +++ b/docs/private/toc-paramiko.ber-module.html @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ber</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.ber-module.html">ber</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.ber.BER-class.html">BER</a><br /> +<br /> + +<!-- =========== START OF EXCEPTIONS =========== --> +<font size="+1"><b>Exceptions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.ber.BERException-class.html">BERException</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.channel-module.html b/docs/private/toc-paramiko.channel-module.html new file mode 100644 index 0000000..d0eb4d9 --- /dev/null +++ b/docs/private/toc-paramiko.channel-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.channel</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.channel-module.html">channel</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.channel.ChannelStderrFile-class.html">ChannelStderrFile</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.common-module.html b/docs/private/toc-paramiko.common-module.html new file mode 100644 index 0000000..3fe063c --- /dev/null +++ b/docs/private/toc-paramiko.common-module.html @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.common</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.common-module.html">common</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_FAILED">AUTH_FAILED</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL">AUTH_PARTIALLY_SUCCESSFUL</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL">AUTH_SUCCESSFUL</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE">CONNECTION_FAILED_CODE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#CRITICAL">CRITICAL</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DEBUG">DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER">DISCONNECT_AUTH_CANCELLED_BY_USER</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE">DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE">DISCONNECT_SERVICE_NOT_AVAILABLE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#ERROR">ERROR</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#INFO">INFO</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE">MSG_CHANNEL_CLOSE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA">MSG_CHANNEL_DATA</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF">MSG_CHANNEL_EOF</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA">MSG_CHANNEL_EXTENDED_DATA</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE">MSG_CHANNEL_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN">MSG_CHANNEL_OPEN</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE">MSG_CHANNEL_OPEN_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS">MSG_CHANNEL_OPEN_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST">MSG_CHANNEL_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS">MSG_CHANNEL_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST">MSG_CHANNEL_WINDOW_ADJUST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DEBUG">MSG_DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DISCONNECT">MSG_DISCONNECT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST">MSG_GLOBAL_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_IGNORE">MSG_IGNORE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_KEXINIT">MSG_KEXINIT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NAMES">MSG_NAMES</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NEWKEYS">MSG_NEWKEYS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE">MSG_REQUEST_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS">MSG_REQUEST_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT">MSG_SERVICE_ACCEPT</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST">MSG_SERVICE_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED">MSG_UNIMPLEMENTED</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER">MSG_USERAUTH_BANNER</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE">MSG_USERAUTH_FAILURE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST">MSG_USERAUTH_INFO_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE">MSG_USERAUTH_INFO_RESPONSE</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK">MSG_USERAUTH_PK_OK</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST">MSG_USERAUTH_REQUEST</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS">MSG_USERAUTH_SUCCESS</a><br /> +<a target="mainFrame" href="../private/paramiko.common-module.html#WARNING">WARNING</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.compress-module.html b/docs/private/toc-paramiko.compress-module.html new file mode 100644 index 0000000..df10cb8 --- /dev/null +++ b/docs/private/toc-paramiko.compress-module.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.compress</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.compress-module.html">compress</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.compress.ZlibCompressor-class.html">ZlibCompressor</a><br /> +<a target="mainFrame" href="../private/paramiko.compress.ZlibDecompressor-class.html">ZlibDecompressor</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.dsskey-module.html b/docs/private/toc-paramiko.dsskey-module.html new file mode 100644 index 0000000..dbdf69c --- /dev/null +++ b/docs/private/toc-paramiko.dsskey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.dsskey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.dsskey-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.file-module.html b/docs/private/toc-paramiko.file-module.html new file mode 100644 index 0000000..9cda933 --- /dev/null +++ b/docs/private/toc-paramiko.file-module.html @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.file-module.html">file</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_APPEND">_FLAG_APPEND</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BINARY">_FLAG_BINARY</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BUFFERED">_FLAG_BUFFERED</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED">_FLAG_LINE_BUFFERED</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_READ">_FLAG_READ</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE">_FLAG_UNIVERSAL_NEWLINE</a><br /> +<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_WRITE">_FLAG_WRITE</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.file-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.kex_gex-module.html b/docs/private/toc-paramiko.kex_gex-module.html new file mode 100644 index 0000000..fd9acc8 --- /dev/null +++ b/docs/private/toc-paramiko.kex_gex-module.html @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_gex</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.kex_gex-module.html">kex_gex</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex.KexGex-class.html">KexGex</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.kex_group1-module.html b/docs/private/toc-paramiko.kex_group1-module.html new file mode 100644 index 0000000..ca51eb0 --- /dev/null +++ b/docs/private/toc-paramiko.kex_group1-module.html @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.kex_group1</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.kex_group1-module.html">kex_group1</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#G">G</a><br /> +<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#P">P</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.logging22-module.html b/docs/private/toc-paramiko.logging22-module.html new file mode 100644 index 0000000..6b96de4 --- /dev/null +++ b/docs/private/toc-paramiko.logging22-module.html @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.logging22</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.logging22-module.html">logging22</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.logging22.Formatter-class.html">Formatter</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22.logger-class.html">logger</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22.StreamHandler-class.html">StreamHandler</a><br /> +<br /> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#getLogger">getLogger</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#_logger">_logger</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#DEBUG">DEBUG</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#ERROR">ERROR</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#INFO">INFO</a><br /> +<a target="mainFrame" href="../private/paramiko.logging22-module.html#WARNING">WARNING</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.message-module.html b/docs/private/toc-paramiko.message-module.html new file mode 100644 index 0000000..13e6444 --- /dev/null +++ b/docs/private/toc-paramiko.message-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.message-module.html">message</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.message-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.packet-module.html b/docs/private/toc-paramiko.packet-module.html new file mode 100644 index 0000000..670fb37 --- /dev/null +++ b/docs/private/toc-paramiko.packet-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.packet</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.packet-module.html">packet</a></b></font></center> +<hr> + +<!-- =========== START OF EXCEPTIONS =========== --> +<font size="+1"><b>Exceptions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.packet.NeedRekeyException-class.html">NeedRekeyException</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.pipe-module.html b/docs/private/toc-paramiko.pipe-module.html new file mode 100644 index 0000000..4a6b775 --- /dev/null +++ b/docs/private/toc-paramiko.pipe-module.html @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pipe</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.pipe-module.html">pipe</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.pipe.PosixPipe-class.html">PosixPipe</a><br /> +<a target="mainFrame" href="../private/paramiko.pipe.WindowsPipe-class.html">WindowsPipe</a><br /> +<br /> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.pipe-module.html#make_pipe">make_pipe</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.pkey-module.html b/docs/private/toc-paramiko.pkey-module.html new file mode 100644 index 0000000..56fa96f --- /dev/null +++ b/docs/private/toc-paramiko.pkey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pkey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.pkey-module.html">pkey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.pkey-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.primes-module.html b/docs/private/toc-paramiko.primes-module.html new file mode 100644 index 0000000..356d9bd --- /dev/null +++ b/docs/private/toc-paramiko.primes-module.html @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.primes</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.primes-module.html">primes</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="../private/paramiko.primes.ModulusPack-class.html">ModulusPack</a><br /> +<br /> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.primes-module.html#_generate_prime">_generate_prime</a><br /> +<a target="mainFrame" href="../private/paramiko.primes-module.html#_roll_random">_roll_random</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.rsakey-module.html b/docs/private/toc-paramiko.rsakey-module.html new file mode 100644 index 0000000..117cc82 --- /dev/null +++ b/docs/private/toc-paramiko.rsakey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.rsakey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.rsakey-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.server-module.html b/docs/private/toc-paramiko.server-module.html new file mode 100644 index 0000000..58cf1e4 --- /dev/null +++ b/docs/private/toc-paramiko.server-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.server-module.html">server</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">InteractiveQuery</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.server-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp-module.html b/docs/private/toc-paramiko.sftp-module.html new file mode 100644 index 0000000..a2d59c4 --- /dev/null +++ b/docs/private/toc-paramiko.sftp-module.html @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp-module.html">sftp</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.sftp-module.html#_VERSION">_VERSION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_attr-module.html b/docs/private/toc-paramiko.sftp_attr-module.html new file mode 100644 index 0000000..e1180e3 --- /dev/null +++ b/docs/private/toc-paramiko.sftp_attr-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_attr</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_attr-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_client-module.html b/docs/private/toc-paramiko.sftp_client-module.html new file mode 100644 index 0000000..e2f94fd --- /dev/null +++ b/docs/private/toc-paramiko.sftp_client-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_client</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a></b></font></center> +<hr> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_client-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_file-module.html b/docs/private/toc-paramiko.sftp_file-module.html new file mode 100644 index 0000000..f270b0f --- /dev/null +++ b/docs/private/toc-paramiko.sftp_file-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_file-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_handle-module.html b/docs/private/toc-paramiko.sftp_handle-module.html new file mode 100644 index 0000000..1df5358 --- /dev/null +++ b/docs/private/toc-paramiko.sftp_handle-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_handle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_handle-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_server-module.html b/docs/private/toc-paramiko.sftp_server-module.html new file mode 100644 index 0000000..3c12fcc --- /dev/null +++ b/docs/private/toc-paramiko.sftp_server-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_server-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.sftp_si-module.html b/docs/private/toc-paramiko.sftp_si-module.html new file mode 100644 index 0000000..75605b8 --- /dev/null +++ b/docs/private/toc-paramiko.sftp_si-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_si</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a></b></font></center> +<hr> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.sftp_si-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.ssh_exception-module.html b/docs/private/toc-paramiko.ssh_exception-module.html new file mode 100644 index 0000000..1567097 --- /dev/null +++ b/docs/private/toc-paramiko.ssh_exception-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.ssh_exception</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.ssh_exception-module.html">ssh_exception</a></b></font></center> +<hr> + +<!-- =========== START OF EXCEPTIONS =========== --> +<font size="+1"><b>Exceptions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.ssh_exception.PartialAuthentication-class.html">PartialAuthentication</a><br /> +<br /> + +<hr> +<font size="-2">[<b>show private</b> | hide private]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.transport-module.html b/docs/private/toc-paramiko.transport-module.html new file mode 100644 index 0000000..d5d5651 --- /dev/null +++ b/docs/private/toc-paramiko.transport-module.html @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.transport-module.html">transport</a></b></font></center> +<hr> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="../private/paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.transport-module.html#_active_threads">_active_threads</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.transport-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc-paramiko.util-module.html b/docs/private/toc-paramiko.util-module.html new file mode 100644 index 0000000..a290c16 --- /dev/null +++ b/docs/private/toc-paramiko.util-module.html @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.util-module.html">util</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.util.PFilter-class.html">PFilter</a><br /> +<br /> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br /> +<a target="mainFrame" href="../private/paramiko.util-module.html#_pfilter">_pfilter</a><br /> +<br /> + +<hr> +<font size="-2">[show private | <a href="../public/toc-paramiko.util-module.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/toc.html b/docs/private/toc.html new file mode 100644 index 0000000..fd91230 --- /dev/null +++ b/docs/private/toc.html @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Table of Contents</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b>Table of Contents</b></font></center> +<hr> +<a target="moduleFrame" href="toc-everything.html">Everything</a><br /> + +<!-- =========== START OF PACKAGES =========== --> +<br /><font size="+1"><b>Packages</b></font><br /> +<a target="moduleFrame" href="toc-paramiko-module.html">paramiko</a><br /> + +<!-- =========== START OF MODULES =========== --> +<br /><font size="+1"><b>Modules</b></font><br /> +<a target="moduleFrame" href="toc-paramiko.agent-module.html">paramiko.agent</a><br /> +<a target="moduleFrame" href="toc-paramiko.auth_handler-module.html">paramiko.auth_handler</a><br /> +<a target="moduleFrame" href="toc-paramiko.ber-module.html">paramiko.ber</a><br /> +<a target="moduleFrame" href="toc-paramiko.channel-module.html">paramiko.channel</a><br /> +<a target="moduleFrame" href="toc-paramiko.common-module.html">paramiko.common</a><br /> +<a target="moduleFrame" href="toc-paramiko.compress-module.html">paramiko.compress</a><br /> +<a target="moduleFrame" href="toc-paramiko.dsskey-module.html">paramiko.dsskey</a><br /> +<a target="moduleFrame" href="toc-paramiko.file-module.html">paramiko.file</a><br /> +<a target="moduleFrame" href="toc-paramiko.kex_gex-module.html">paramiko.kex_gex</a><br /> +<a target="moduleFrame" href="toc-paramiko.kex_group1-module.html">paramiko.kex_group1</a><br /> +<a target="moduleFrame" href="toc-paramiko.logging22-module.html">paramiko.logging22</a><br /> +<a target="moduleFrame" href="toc-paramiko.message-module.html">paramiko.message</a><br /> +<a target="moduleFrame" href="toc-paramiko.packet-module.html">paramiko.packet</a><br /> +<a target="moduleFrame" href="toc-paramiko.pipe-module.html">paramiko.pipe</a><br /> +<a target="moduleFrame" href="toc-paramiko.pkey-module.html">paramiko.pkey</a><br /> +<a target="moduleFrame" href="toc-paramiko.primes-module.html">paramiko.primes</a><br /> +<a target="moduleFrame" href="toc-paramiko.rsakey-module.html">paramiko.rsakey</a><br /> +<a target="moduleFrame" href="toc-paramiko.server-module.html">paramiko.server</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp-module.html">paramiko.sftp</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_attr-module.html">paramiko.sftp_attr</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_client-module.html">paramiko.sftp_client</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_file-module.html">paramiko.sftp_file</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_handle-module.html">paramiko.sftp_handle</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_server-module.html">paramiko.sftp_server</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_si-module.html">paramiko.sftp_si</a><br /> +<a target="moduleFrame" href="toc-paramiko.ssh_exception-module.html">paramiko.ssh_exception</a><br /> +<a target="moduleFrame" href="toc-paramiko.transport-module.html">paramiko.transport</a><br /> +<a target="moduleFrame" href="toc-paramiko.util-module.html">paramiko.util</a><br /> + +<br /><hr> +<font size="-2">[show private | <a href="../public/toc.html">hide private</a>]</font> +</body> +</html> diff --git a/docs/private/trees.html b/docs/private/trees.html new file mode 100644 index 0000000..d762eb6 --- /dev/null +++ b/docs/private/trees.html @@ -0,0 +1,243 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Module and Class Hierarchies</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Trees </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[show private | <a href="../public/trees.html">hide private</a>]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="trees.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE HIERARCHY =========== --> +<h2>Module Hierarchy</h2> +<ul> +<li> <b><a href="paramiko-module.html"><code>paramiko</code></a></b>: <i><i>Paramiko</i> (a combination of the esperanto words for +"paranoid" and "friend") is a module for python 2.3 +or greater that implements the SSH2 protocol for secure (encrypted and +authenticated) connections to remote machines.</i> + <ul> + <li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i> + <li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a></i> + <li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i> + <li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 "message".</i> + <li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i> + <li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a></i> + <li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support.</i> + <li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b> + <li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b> + <li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i> + <li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a></i> + <li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i> + <li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i> + <li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support.</i> + <li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol.</i> + <li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i> + <li> <b><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></b>: <i><a href="../private/paramiko.AuthHandler-class.html" +class="link"><code>AuthHandler</code></a></i> + <li> <b><a href="../private/paramiko.ber-module.html"><code>ber</code></a></b> + <li> <b><a href="../private/paramiko.channel-module.html"><code>channel</code></a></b>: <i>Abstraction for an SSH2 channel.</i> + <li> <b><a href="../private/paramiko.common-module.html"><code>common</code></a></b>: <i>Common constants and global variables.</i> + <li> <b><a href="../private/paramiko.compress-module.html"><code>compress</code></a></b>: <i>Compression implementations for a Transport.</i> + <li> <b><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></b>: <i>Variant on <a +href="../private/paramiko.kex_group1.KexGroup1-class.html" +class="link"><code>KexGroup1</code></a> where the prime "p" and +generator "g" are provided by the server.</i> + <li> <b><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></b>: <i>Standard SSH key exchange ("kex" if you wanna sound +cool).</i> + <li> <b><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></b>: <i>Stub out logging on python < 2.3.</i> + <li> <b><a href="../private/paramiko.packet-module.html"><code>packet</code></a></b>: <i>Packetizer.</i> + <li> <b><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></b>: <i>Abstraction of a one-way pipe where the read end can be used in +select().</i> + <li> <b><a href="../private/paramiko.primes-module.html"><code>primes</code></a></b>: <i>Utility functions for dealing with primes.</i> + <li> <b><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></b>: <i>Exceptions defined by paramiko.</i> + </ul> +</ul> + +<!-- =========== START OF CLASS HIERARCHY =========== --> +<h2>Class Hierarchy</h2> +<ul> + <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i> +The most base type</i> + <ul> + <li> <b><a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></b>: <i> +Reusable base class to implement python-style file buffering around a +simpler stream.</i> + <ul> + <li> <b><a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></b>: <i> +Proxy object for a file on the remote server, in client mode SFTP.</i> + <li> <b><a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></b>: <i> +A file-like wrapper around <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</i> + <ul> + <li> <b><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></b> + </ul> + </ul> + <li> <b><a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></b>: <i> +A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>.</i> + <li> <b><a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></b>: <i> +A query (set of prompts) for a user during interactive +authentication.</i> + <li> <b><a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></b>: <i> +An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s).</i> + <li> <b><a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></b> + <li> <b><a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></b>: <i> +Simple object containing the security preferences of an ssh +transport.</i> + <li> <b><a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></b>: <i> +Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode.</i> + <li> <b><a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></b>: <i> +Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation.</i> + <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i> +type(object) -> the object's type type(name, bases, dict) -> a +new type</i> + <li> <b><a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></b> + <ul> + <li> <b><a href="threading.Thread-class.html"><code>threading.Thread</code></a></b> + <ul> + <li> <b><a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></b>: <i> +Handler for a subsytem in server mode.</i> + <ul> + <li> <b><a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></b>: <i> +Server-side SFTP subsystem support.</i> + </ul> + <li> <b><a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></b>: <i> +An SSH Transport attaches to a stream (usually a socket), negotiates +an encrypted session, authenticates, and then creates stream tunnels, +called <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>s, across the session.</i> + </ul> + </ul> + <li> <b><a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></b>: <i> +Internal class to handle the mechanics of authentication.</i> + <li> <b><a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></b> + <ul> + <li> <b><a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></b>: <i> +SFTP client object.</i> + <ul> + <li> <b><a href="paramiko.SFTP-class.html"><code>paramiko.SFTP</code></a></b>: <i> +an alias for <a href="paramiko.SFTPClient-class.html" +class="link"><code>SFTPClient</code></a> for backwards compatability</i> + </ul> + <li> <b><a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></b>: <i> +Server-side SFTP subsystem support.</i> + </ul> + <li> <b><a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></b>: <i> +Robey's tiny little attempt at a BER decoder.</i> + <li> <b><a href="../private/paramiko.logging22.Formatter-class.html"><code>paramiko.logging22.Formatter</code></a></b> + <li> <b><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></b> + <li> <b><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></b> + <li> <b><a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></b> + <li> <b><a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></b>: <i> +convenience object for holding the contents of the /etc/ssh/moduli +file, on systems that have such a file.</i> + <li> <b><a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></b>: <i> +Implementation of the base SSH packet protocol.</i> + <li> <b><a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></b>: <i> +Base class for public keys.</i> + <ul> + <li> <b><a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></b>: <i> +Private key held in a local SSH agent.</i> + <li> <b><a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></b>: <i> +Representation of a DSS key which can be used to sign an verify SSH2 +data.</i> + <li> <b><a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></b>: <i> +Representation of an RSA key which can be used to sign and verify SSH2 +data.</i> + </ul> + <li> <b><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></b> + <li> <b><a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></b>: <i> +This class defines an interface for controlling the behavior of +paramiko in server mode.</i> + <li> <b><a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></b>: <i> +This class defines an interface for controlling the behavior of +paramiko when using the <a href="paramiko.SFTPServer-class.html" +class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP +server.</i> + <li> <b><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></b> + <li> <b><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></b>: <i> +On Windows, only an OS-level "WinSock" may be used in +select(), but reads and writes must be to the actual socket object.</i> + <li> <b><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></b> + <li> <b><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></b> + </ul> + <li> <b><a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></b>: <i> +Common base class for all exceptions.</i> + <ul> + <li> <b><a href="paramiko.SFTPError-class.html"><code>paramiko.SFTPError</code></a></b> + <li> <b><a href="paramiko.SSHException-class.html"><code>paramiko.SSHException</code></a></b>: <i> +Exception raised by failures in SSH2 protocol negotiation or logic +errors.</i> + <ul> + <li> <b><a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></b>: <i> +Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type.</i> + <li> <b><a href="paramiko.PasswordRequiredException-class.html"><code>paramiko.PasswordRequiredException</code></a></b>: <i> +Exception raised when a password is needed to unlock a private key +file.</i> + <li> <b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></b>: <i> +An internal exception thrown in the case of partial +authentication.</i> + </ul> + <li> <b><a href="../private/paramiko.ber.BERException-class.html"><code>paramiko.ber.BERException</code></a></b> + <li> <b><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>paramiko.packet.NeedRekeyException</code></a></b> + </ul> + <li> <b><a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></b>: <i> +Client interface for using private keys from an SSH agent running on +the local machine.</i> +</ul> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/__builtin__.object-class.html b/docs/public/__builtin__.object-class.html new file mode 100644 index 0000000..f9ab2d2 --- /dev/null +++ b/docs/public/__builtin__.object-class.html @@ -0,0 +1,268 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>__builtin__.object</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module __builtin__ :: + Class object + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.object-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.object-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type object</h2> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a>, + <a href="paramiko.Channel-class.html"><code>Channel</code></a>, + <a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a>, + <a href="paramiko.Message-class.html"><code>Message</code></a>, + <a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a>, + <a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a>, + <a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a>, + <a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a>, + <a href="__builtin__.type-class.html"><code>type</code></a></dd></dl> + +<hr/> + +The most base type +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td> + <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span> + <br /><i>(Constructor)</i> + </h3> + x.__init__(...) initializes x; see x.__class__.__doc__ for + signature + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__delattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__delattr__('name') <==> del x.name + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__getattribute__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__getattribute__('name') <==> x.name + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__hash__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Hashing function)</i> + </h3> + x.__hash__() <==> hash(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +hash(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__new__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>, + <span class=sig-arg>S</span>, + <span class="sig-vararg">...</span>)</span> + </h3> + T.__new__(S, ...) -> a new object with type S, a subtype of T + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +a new object with type S, a subtype of T +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__reduce__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + helper for pickle + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__reduce_ex__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + helper for pickle + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + x.__repr__() <==> repr(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +repr(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__setattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__setattr__('name', value) <==> x.name = value + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + x.__str__() <==> str(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +str(x) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/__builtin__.type-class.html b/docs/public/__builtin__.type-class.html new file mode 100644 index 0000000..21075f7 --- /dev/null +++ b/docs/public/__builtin__.type-class.html @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>__builtin__.type</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module __builtin__ :: + Class type + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.type-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.type-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type type</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>type</b> +</pre><br /> + +<hr/> + +type(object) -> the object's type type(name, bases, dict) -> a +new type +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__call__(...) <==> x(...)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>, + <span class=summary-sig-arg>y</span>)</span></code> +<br /> +x.__cmp__(y) <==> cmp(x,y)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code> +<br /> +__subclasses__() -> list of immediate subclasses</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td> + <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code> +<br /> +return a type's method resolution order</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td> + <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(<type 'object'>,)"><code>(<type 'object'>,) </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="420">420 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="21995">21995 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td> +<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(<type 'type'>, <type 'object'>)"><code>(<type 'type'>, <type 'object'>) </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td> +<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__call__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>, + <span class="sig-vararg">...</span>)</span> + <br /><i>(Call operator)</i> + </h3> + x.__call__(...) <==> x(...) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +x(...) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__cmp__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>, + <span class=sig-arg>y</span>)</span> + <br /><i>(Comparison operator)</i> + </h3> + x.__cmp__(y) <==> cmp(x,y) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +cmp(x,y) +</pre> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__delattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__delattr__('name') <==> del x.name + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__getattribute__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__getattribute__('name') <==> x.name + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__hash__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Hashing function)</i> + </h3> + x.__hash__() <==> hash(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +hash(x) +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__new__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>, + <span class=sig-arg>S</span>, + <span class="sig-vararg">...</span>)</span> + </h3> + T.__new__(S, ...) -> a new object with type S, a subtype of T + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +a new object with type S, a subtype of T +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + x.__repr__() <==> repr(x) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +<pre class="literalblock"> +repr(x) +</pre> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__setattr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span> + </h3> + x.__setattr__('name', value) <==> x.name = value + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__subclasses__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span> + </h3> + __subclasses__() -> list of immediate subclasses + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +list of immediate subclasses </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="mro"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">mro</span>()</span> + </h3> + return a type's method resolution order + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> +list </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__bases__"></a> +<h3>__bases__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="(<type 'object'>,)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +(<type 'object'>,) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__basicsize__"></a> +<h3>__basicsize__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="420"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +420 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__dictoffset__"></a> +<h3>__dictoffset__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="132"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +132 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__flags__"></a> +<h3>__flags__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="21995"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +21995 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__itemsize__"></a> +<h3>__itemsize__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__mro__"></a> +<h3>__mro__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>tuple</code> + + </dd> +<span title="(<type 'type'>, <type 'object'>)"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +(<type 'type'>, <type 'object'>) </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__name__"></a> +<h3>__name__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>str</code> + + </dd> +<span title="'type'"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__weakrefoffset__"></a> +<h3>__weakrefoffset__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="184"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +184 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/epydoc.css b/docs/public/epydoc.css new file mode 100644 index 0000000..46080bd --- /dev/null +++ b/docs/public/epydoc.css @@ -0,0 +1,100 @@ + +/* Body color */ +body { background: #ffffff; color: #000000; } + +/* Tables */ +table.summary, table.details, table.index + { background: #e8f0f8; color: #000000; } +tr.summary, tr.details, tr.index + { background: #70b0f0; color: #000000; + text-align: left; font-size: 120%; } +tr.group { background: #c0e0f8; color: #000000; + text-align: left; font-size: 120%; + font-style: italic; } + +/* Documentation page titles */ +h2.module { margin-top: 0.2em; } +h2.class { margin-top: 0.2em; } + +/* Headings */ +h1.heading { font-size: +140%; font-style: italic; + font-weight: bold; } +h2.heading { font-size: +125%; font-style: italic; + font-weight: bold; } +h3.heading { font-size: +110%; font-style: italic; + font-weight: normal; } + +/* Base tree */ +pre.base-tree { font-size: 80%; margin: 0; } + +/* Details Sections */ +table.func-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.func-detail { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +table.var-details { background: #e8f0f8; color: #000000; + border: 2px groove #c0d0d0; + padding: 0 1em 0 1em; margin: 0.4em 0 0 0; } +h3.var-details { background: transparent; color: #000000; + margin: 0 0 1em 0; } + +/* Function signatures */ +.sig { background: transparent; color: #000000; + font-weight: bold; } +.sig-name { background: transparent; color: #006080; } +.sig-arg, .sig-kwarg, .sig-vararg + { background: transparent; color: #008060; } +.sig-default { background: transparent; color: #602000; } +.summary-sig { background: transparent; color: #000000; } +.summary-sig-name { background: transparent; color: #204080; } +.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg + { background: transparent; color: #008060; } + +/* Doctest blocks */ +.py-src { background: transparent; color: #000000; } +.py-prompt { background: transparent; color: #005050; + font-weight: bold;} +.py-string { background: transparent; color: #006030; } +.py-comment { background: transparent; color: #003060; } +.py-keyword { background: transparent; color: #600000; } +.py-output { background: transparent; color: #404040; } +pre.doctestblock { background: #f4faff; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } +table pre.doctestblock + { background: #dce4ec; color: #000000; + padding: .5em; margin: 1em; + border: 1px solid #708890; } + +/* Variable values */ +pre.variable { background: #dce4ec; color: #000000; + padding: .5em; margin: 0; + border: 1px solid #708890; } +.variable-linewrap { background: transparent; color: #604000; } +.variable-ellipsis { background: transparent; color: #604000; } +.variable-quote { background: transparent; color: #604000; } +.re { background: transparent; color: #000000; } +.re-char { background: transparent; color: #006030; } +.re-op { background: transparent; color: #600000; } +.re-group { background: transparent; color: #003060; } +.re-ref { background: transparent; color: #404040; } + +/* Navigation bar */ +table.navbar { background: #a0c0ff; color: #0000ff; + border: 2px groove #c0d0d0; } +th.navbar { background: #a0c0ff; color: #0000ff; } +th.navselect { background: #70b0ff; color: #000000; } +.nomargin { margin: 0; } + +/* Links */ +a:link { background: transparent; color: #0000ff; } +a:visited { background: transparent; color: #204080; } +a.navbar:link { background: transparent; color: #0000ff; + text-decoration: none; } +a.navbar:visited { background: transparent; color: #204080; + text-decoration: none; } + +/* Lists */ +ul { margin-top: 0; } diff --git a/docs/public/exceptions.Exception-class.html b/docs/public/exceptions.Exception-class.html new file mode 100644 index 0000000..8e04fe7 --- /dev/null +++ b/docs/public/exceptions.Exception-class.html @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>exceptions.Exception</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module exceptions :: + Class Exception + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/exceptions.Exception-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="exceptions.Exception-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class Exception</h2> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a>, + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a></dd></dl> + +<hr/> + +Common base class for all exceptions. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__getitem__"></a><span class="summary-sig"><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/frames.html b/docs/public/frames.html new file mode 100644 index 0000000..77678a0 --- /dev/null +++ b/docs/public/frames.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> +<html> +<head> + <title> API Documentation </title> +</head> +<frameset cols="20%,80%"> + <frameset rows="30%,70%"> + <frame src="toc.html" name="moduleListFrame"> + <frame src="toc-everything.html" name="moduleFrame"> + </frameset> + <frame src="paramiko-module.html" name="mainFrame"> +</frameset> +</html> diff --git a/docs/public/help.html b/docs/public/help.html new file mode 100644 index 0000000..99e33a2 --- /dev/null +++ b/docs/public/help.html @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Help</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Help </th> + <th class="navbar" width="100%"></th> + </tr> +</table> +<table width="100%" cellpadding="0" cellspacing="0"> + <tr valign="top"> + <td width="100%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/help.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="help.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<center><h2> API Documentation </h2></center> + +<p> This document contains the API (Application Programming Interface) +documentation for this project. Documentation for the Python +objects defined by the project is divided into separate pages for each +package, module, and class. The API documentation also includes two +pages containing information about the project as a whole: a trees +page, and an index page. </p> + +<h2> Object Documentation </h2> + + <p>Each <b>Package Documentation</b> page contains: + <ul> + <li> A description of the package. </li> + <li> A list of the modules and sub-packages contained by the + package. </li> + <li> A summary of the classes defined by the package. </li> + <li> A summary of the functions defined by the package. </li> + <li> A summary of the variables defined by the package. </li> + <li> A detailed description of each function defined by the + package. </li> + <li> A detailed description of each variable defined by the + package. </li> + </ul></p> + + <p>Each <b>Module Documentation</b> page contains: + <ul> + <li> A description of the module. </li> + <li> A summary of the classes defined by the module. </li> + <li> A summary of the functions defined by the module. </li> + <li> A summary of the variables defined by the module. </li> + <li> A detailed description of each function defined by the + module. </li> + <li> A detailed description of each variable defined by the + module. </li> + </ul></p> + + <p>Each <b>Class Documentation</b> page contains: + <ul> + <li> A class inheritance diagram. </li> + <li> A list of known subclasses. </li> + <li> A description of the class. </li> + <li> A summary of the methods defined by the class. </li> + <li> A summary of the instance variables defined by the class. </li> + <li> A summary of the class (static) variables defined by the + class. </li> + <li> A detailed description of each method defined by the + class. </li> + <li> A detailed description of each instance variable defined by the + class. </li> + <li> A detailed description of each class (static) variable defined + by the class. </li> + </ul></p> + +<h2> Project Documentation </h2> + + <p> The <b>Trees</b> page contains the module and class hierarchies: + <ul> + <li> The <i>module hierarchy</i> lists every package and module, with + modules grouped into packages. At the top level, and within each + package, modules and sub-packages are listed alphabetically. </li> + <li> The <i>class hierarchy</i> lists every class, grouped by base + class. If a class has more than one base class, then it will be + listed under each base class. At the top level, and under each base + class, classes are listed alphabetically. </li> + </ul></p> + + <p> The <b>Index</b> page contains indices of terms and + identifiers: + <ul> + <li> The <i>term index</i> lists every term indexed by any object's + documentation. For each term, the index provides links to each + place where the term is indexed. </li> + <li> The <i>identifier index</i> lists the (short) name of every package, + module, class, method, function, variable, and parameter. For each + identifier, the index provides a short description, and a link to + its documentation. </li> + </ul></p> + +<h2> The Table of Contents </h2> + +<p> The table of contents occupies the two frames on the left side of +the window. The upper-left frame displays the <i>project +contents</i>, and the lower-left frame displays the <i>module +contents</i>: </p> + +<center> +<table class="summary" border="1" cellspacing="0" cellpadding="3"> + <tr heigh="30%"> + <td align="center"> + <font size="-1">Project<br>Contents<hr>...</font></td> + <td align="center" rowspan="2" width="70%"> + API<br>Documentation<br>Frame<br><br><br> + </td> + </tr> + <tr> + <td align="center"> + <font size="-1">Module<br>Contents<hr> <br>...<br> </font> + </td> + </tr> +</table><br> +</center> + +<p> The <b>project contents frame</b> contains a list of all packages +and modules that are defined by the project. Clicking on an entry +will display its contents in the module contents frame. Clicking on a +special entry, labeled "Everything," will display the contents of +the entire project. </p> + +<p> The <b>module contents frame</b> contains a list of every +submodule, class, type, exception, function, and variable defined by a +module or package. Clicking on an entry will display its +documentation in the API documentation frame. Clicking on the name of +the module, at the top of the frame, will display the documentation +for the module itself. </p> + +<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top +navigation bar can be used to control whether the table of contents is +displayed or not. </p> + +<h2> The Navigation Bar </h2> + +<p> A navigation bar is located at the top and bottom of every page. +It indicates what type of page you are currently viewing, and allows +you to go to related pages. The following table describes the labels +on the navigation bar. Note that not some labels (such as +[Parent]) are not displayed on all pages. </p> + +<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%"> +<tr class="summary"> + <th>Label</th> + <th>Highlighted when...</th> + <th>Links to...</th> +</tr> + <tr><td valign="top"><b>[Parent]</b></td> + <td valign="top"><i>(never highlighted)</i></td> + <td valign="top"> the parent of the current package </td></tr> + <tr><td valign="top"><b>[Package]</b></td> + <td valign="top">viewing a package</td> + <td valign="top">the package containing the current object + </td></tr> + <tr><td valign="top"><b>[Module]</b></td> + <td valign="top">viewing a module</td> + <td valign="top">the module containing the current object + </td></tr> + <tr><td valign="top"><b>[Class]</b></td> + <td valign="top">viewing a class </td> + <td valign="top">the class containing the current object</td></tr> + <tr><td valign="top"><b>[Trees]</b></td> + <td valign="top">viewing the trees page</td> + <td valign="top"> the trees page </td></tr> + <tr><td valign="top"><b>[Index]</b></td> + <td valign="top">viewing the index page</td> + <td valign="top"> the index page </td></tr> + <tr><td valign="top"><b>[Help]</b></td> + <td valign="top">viewing the help page</td> + <td valign="top"> the help page </td></tr> +</table> + +<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below +the top navigation bar can be used to control whether documentation +for private objects is displayed. Private objects are usually defined +as objects whose (short) names begin with a single underscore, but do +not end with an underscore. For example, "<code>_x</code>", +"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>" +are private objects; but "<code>re.sub</code>", +"<code>__init__</code>", and "<code>type_</code>" are not. However, +if a module defines the "<code>__all__</code>" variable, then its +contents are used to decide which objects are private. </p> + +<p> A timestamp below the bottom navigation bar indicates when each +page was last updated. </p> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Help </th> + <th class="navbar" width="100%"></th> + </tr> +</table> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr> + <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/index.html b/docs/public/index.html new file mode 100644 index 0000000..77678a0 --- /dev/null +++ b/docs/public/index.html @@ -0,0 +1,13 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> +<html> +<head> + <title> API Documentation </title> +</head> +<frameset cols="20%,80%"> + <frameset rows="30%,70%"> + <frame src="toc.html" name="moduleListFrame"> + <frame src="toc-everything.html" name="moduleFrame"> + </frameset> + <frame src="paramiko-module.html" name="mainFrame"> +</frameset> +</html> diff --git a/docs/public/indices.html b/docs/public/indices.html new file mode 100644 index 0000000..ce1f266 --- /dev/null +++ b/docs/public/indices.html @@ -0,0 +1,803 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Index</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Index </th> + <th class="navbar"> <a class="navbar" 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%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/indices.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="indices.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> +<br /> + +<!-- =========== START OF IDENTIFIER INDEX =========== --> +<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="index"> + <th colspan="2">Identifier Index</th></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__del__"><code>__del__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__getitem__"><code>__getitem__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__hash__"><code>__hash__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#__init__"><code>__init__</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__iter__"><code>__iter__</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#__repr__"><code>__repr__</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></td> + <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__str__"><code>__str__</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td> + <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#accept"><code>accept</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add"><code>add</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_boolean"><code>add_boolean</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_byte"><code>add_byte</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_bytes"><code>add_bytes</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_int"><code>add_int</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_int64"><code>add_int64</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_list"><code>add_list</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_mpint"><code>add_mpint</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt"><code>add_prompt</code></a></td> + <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#add_server_key"><code>add_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#add_string"><code>add_string</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html"><code>Agent</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html"><code>agent</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></td> + <td>Variable in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_interactive"><code>auth_interactive</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_none"><code>auth_none</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_password"><code>auth_password</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_publickey"><code>auth_publickey</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#bit_length"><code>bit_length</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#can_sign"><code>can_sign</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#can_sign"><code>can_sign</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html"><code>Channel</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#chattr"><code>chattr</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chdir"><code>chdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#check"><code>check</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chmod"><code>chmod</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chown"><code>chown</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#close"><code>close</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#connect"><code>connect</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#convert_errno"><code>convert_errno</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#deflate_long"><code>deflate_long</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><code>exc_info</code></td> + <td>Function in module <code>sys</code></td></tr> + <tr><td width="15%"><a href="exceptions.Exception-class.html"><code>Exception</code></a></td> + <td>Class in module <code>exceptions</code></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#exec_command"><code>exec_command</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#file"><code>file</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.file-module.html"><code>file</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#fileno"><code>fileno</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util.PFilter-class.html#filter"><code>filter</code></a></td> + <td>Method in class <a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#finish_subsystem"><code>finish_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>finish_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></td> + <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#flush"><code>flush</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary"><code>format_binary</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_line"><code>format_binary_line</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_weird"><code>format_binary_weird</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#from_stat"><code>from_stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#from_transport"><code>from_transport</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#generate"><code>generate</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#generate"><code>generate</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#generate_key_bytes"><code>generate_key_bytes</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#get"><code>get</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_bits"><code>get_bits</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_bits"><code>get_bits</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_boolean"><code>get_boolean</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_byte"><code>get_byte</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_bytes"><code>get_bytes</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_exception"><code>get_exception</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_hexdump"><code>get_hexdump</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_id"><code>get_id</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_int"><code>get_int</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_int64"><code>get_int64</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Agent-class.html#get_keys"><code>get_keys</code></a></td> + <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_list"><code>get_list</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_log_channel"><code>get_log_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#get_logger"><code>get_logger</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_mpint"><code>get_mpint</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_name"><code>get_name</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_pty"><code>get_pty</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_remainder"><code>get_remainder</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_remote_server_key"><code>get_remote_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_security_options"><code>get_security_options</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#get_server"><code>get_server</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_server_key"><code>get_server_key</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_so_far"><code>get_so_far</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#get_string"><code>get_string</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#get_thread_id"><code>get_thread_id</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#get_transport"><code>get_transport</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#get_username"><code>get_username</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#getcwd"><code>getcwd</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#getName"><code>getName</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#gettimeout"><code>gettimeout</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#gettimeout"><code>gettimeout</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#global_request"><code>global_request</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#hexify"><code>hexify</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#inflate_long"><code>inflate_long</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></td> + <td>Class in module <a href="paramiko.server-module.html"><code>paramiko.server</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_shell"><code>invoke_shell</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_subsystem"><code>invoke_subsystem</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#is_active"><code>is_active</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#is_authenticated"><code>is_authenticated</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#isAlive"><code>isAlive</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#isDaemon"><code>isDaemon</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#join"><code>join</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></td> + <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir"><code>listdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir_attr"><code>listdir_attr</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#load_host_keys"><code>load_host_keys</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#load_server_moduli"><code>load_server_moduli</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#log_to_file"><code>log_to_file</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#lookup_ssh_host_config"><code>lookup_ssh_host_config</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#lstat"><code>lstat</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile"><code>makefile</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile_stderr"><code>makefile_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html"><code>Message</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.message-module.html"><code>message</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></td> + <td>Variable in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#mkdir"><code>mkdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#mod_inverse"><code>mod_inverse</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td> + <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#next"><code>next</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#normalize"><code>normalize</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_channel"><code>open_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_session"><code>open_session</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#open_sftp_client"><code>open_sftp_client</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko-module.html"><code>paramiko</code></a></td> + <td>Package</td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#parse_ssh_config"><code>parse_ssh_config</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></td> + <td>Class in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.pkey-module.html"><code>pkey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#prefetch"><code>prefetch</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#put"><code>put</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#read"><code>read</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#read"><code>read</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readline"><code>readline</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readlines"><code>readlines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#readlink"><code>readlink</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv"><code>recv</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_exit_status"><code>recv_exit_status</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_ready"><code>recv_ready</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr"><code>recv_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr_ready"><code>recv_stderr_ready</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#remove"><code>remove</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rename"><code>rename</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#renegotiate_keys"><code>renegotiate_keys</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#resize_pty"><code>resize_pty</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Message-class.html#rewind"><code>rewind</code></a></td> + <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rmdir"><code>rmdir</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#run"><code>run</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#run"><code>run</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#safe_string"><code>safe_string</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#seek"><code>seek</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#seek"><code>seek</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td> + <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send"><code>send</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send_exit_status"><code>send_exit_status</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#send_ignore"><code>send_ignore</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#send_stderr"><code>send_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall"><code>sendall</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall_stderr"><code>sendall_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.server-module.html"><code>server</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#set_combine_stderr"><code>set_combine_stderr</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#set_file_attr"><code>set_file_attr</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_hexdump"><code>set_hexdump</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_keepalive"><code>set_keepalive</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_log_channel"><code>set_log_channel</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#set_name"><code>set_name</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#set_pipelined"><code>set_pipelined</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#set_subsystem_handler"><code>set_subsystem_handler</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#setblocking"><code>setblocking</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#setblocking"><code>setblocking</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#setDaemon"><code>setDaemon</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#setName"><code>setName</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#settimeout"><code>settimeout</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#settimeout"><code>settimeout</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html"><code>sftp</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></td> + <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown"><code>shutdown</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_read"><code>shutdown_read</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_write"><code>shutdown_write</code></a></td> + <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.AgentKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></td> + <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html#start"><code>start</code></a></td> + <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#start_client"><code>start_client</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#start_server"><code>start_server</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#start_subsystem"><code>start_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>start_subsystem</code></a></td> + <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#stat"><code>stat</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#stop_thread"><code>stop_thread</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#symlink"><code>symlink</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#tb_strings"><code>tb_strings</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#tell"><code>tell</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="threading.Thread-class.html"><code>Thread</code></a></td> + <td>Class in module <code>threading</code></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html"><code>Transport</code></a></td> + <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.transport-module.html"><code>transport</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td> + <td>Class in module <code>__builtin__</code></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html#unhexify"><code>unhexify</code></a></td> + <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.Transport-class.html#use_compression"><code>use_compression</code></a></td> + <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.util-module.html"><code>util</code></a></td> + <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#utime"><code>utime</code></a></td> + <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#write"><code>write</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#write"><code>write</code></a></td> + <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.DSSKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.RSAKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td> + <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#writelines"><code>writelines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> + <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#xreadlines"><code>xreadlines</code></a></td> + <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr> +</table> +<br /> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Index </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko-module.html b/docs/public/paramiko-module.html new file mode 100644 index 0000000..15da9ab --- /dev/null +++ b/docs/public/paramiko-module.html @@ -0,0 +1,229 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th bgcolor="#70b0f0" class="navselect"> Home </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Package paramiko + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF PACKAGE DESCRIPTION =========== --> +<h2 class="package">Package paramiko</h2> + +<p><i>Paramiko</i> (a combination of the esperanto words for +"paranoid" and "friend") is a module for python 2.3 +or greater that implements the SSH2 protocol for secure (encrypted and +authenticated) connections to remote machines. Unlike SSL (aka TLS), the +SSH2 protocol does not require heirarchical certificates signed by a +powerful central authority. You may know SSH2 as the protocol that +replaced <code>telnet</code> and <code>rsh</code> for secure access to +remote shells, but the protocol also includes the ability to open +arbitrary channels to remote services across an encrypted tunnel. (This +is how <code>sftp</code> works, for example.)</p> +<p>To use this package, pass a socket (or socket-like object) to a <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>, and use <a +href="paramiko.Transport-class.html#start_server" +class="link"><code>start_server</code></a> or <a +href="paramiko.Transport-class.html#start_client" +class="link"><code>start_client</code></a> to negoatite with the remote +host as either a server or client. As a client, you are responsible for +authenticating using a password or private key, and checking the server's +host key. <i>(Key signature and verification is done by paramiko, but you +will need to provide private keys and check that the content of a public +key matches what you expected to see.)</i> As a server, you are +responsible for deciding which users, passwords, and keys to allow, and +what kind of channels to allow.</p> +<p>Once you have finished, either side may request flow-controlled <a +href="paramiko.Channel-class.html" class="link"><code>Channel</code></a>s +to the other side, which are python objects that act like sockets, but +send and receive data over the encrypted session.</p> +<p>Paramiko is written entirely in python (no C or platform-dependent +code) and is released under the GNU Lesser General Public License +(LGPL).</p> +Website: <a +href="http://www.lag.net/paramiko/">http://www.lag.net/paramiko/</a> +<hr/> +<p><b>Version:</b> 1.5.2 (rhydon) +</p> + +<p><b>Author:</b> Robey Pointer +</p> + +<p><b>Contact:</b> robey@lag.net +</p> + +<p><b>License:</b> GNU Lesser General Public License (LGPL) +</p> + + +<!-- =========== START OF SUBMODULES =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Submodules</th></tr> + <tr><td><ul> +<li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i> +<li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a></i> +<li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i> +<li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 "message".</i> +<li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i> +<li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a></i> +<li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support.</i> +<li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b> +<li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b> +<li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i> +<li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a></i> +<li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i> +<li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i> +<li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support.</i> +<li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol.</i> +<li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i> + </ul></td></tr> +</table><br /> + + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.Agent-class.html"><code>Agent</code></a></b></td> + <td>Client interface for using private keys from an SSH agent running on +the local machine.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></b></td> + <td>Private key held in a local SSH agent.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></b></td> + <td>Reusable base class to implement python-style file buffering around a +simpler stream.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Channel-class.html"><code>Channel</code></a></b></td> + <td>A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></b></td> + <td>Representation of a DSS key which can be used to sign an verify SSH2 +data.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Message-class.html"><code>Message</code></a></b></td> + <td>An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s).</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></b></td> + <td>Representation of an RSA key which can be used to sign and verify SSH2 +data.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></b></td> + <td>Simple object containing the security preferences of an ssh +transport.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></b></td> + <td>an alias for <a href="paramiko.SFTPClient-class.html" +class="link"><code>SFTPClient</code></a> for backwards compatability</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></b></td> + <td>Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></b></td> + <td>SFTP client object.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></b></td> + <td>Proxy object for a file on the remote server, in client mode SFTP.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></b></td> + <td>Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></b></td> + <td>Server-side SFTP subsystem support.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></b></td> + <td>Handler for a subsytem in server mode.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.Transport-class.html"><code>Transport</code></a></b></td> + <td>An SSH Transport attaches to a stream (usually a socket), negotiates +an encrypted session, authenticates, and then creates stream tunnels, +called <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>s, across the session.</td></tr> +</table><br /> + + +<!-- =========== START OF EXCEPTIONS =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Exceptions</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></b></td> + <td>Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></b></td> + <td>Exception raised when a password is needed to unlock a private key +file.</td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></b></td> + <td> </td></tr> +<tr><td width="15%"> + <b><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></b></td> + <td>Exception raised by failures in SSH2 protocol negotiation or logic +errors.</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th bgcolor="#70b0f0" class="navselect"> Home </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.Agent-class.html b/docs/public/paramiko.Agent-class.html new file mode 100644 index 0000000..144efdf --- /dev/null +++ b/docs/public/paramiko.Agent-class.html @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Agent + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Agent-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Agent-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class Agent</h2> + +<hr/> + +<p>Client interface for using private keys from an SSH agent running on +the local machine. If an SSH agent is running, this class can be used to +connect to it and retreive <a href="../private/paramiko.PKey-class.html" +class="link"><code>PKey</code></a> objects which can be used when +attempting to authenticate to remote SSH servers.</p> +Because the SSH agent protocol uses environment variables and +unix-domain sockets, this probably doesn't work on Windows. It does work +on most posix platforms though (Linux and MacOS X, for example). +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Open a session with the local machine's SSH agent, if one is +running.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SSH agent connection.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> tuple of <a href="paramiko.AgentKey-class.html" + class="link"><code>AgentKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#get_keys" class="summary-sig-name"><code>get_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the list of keys available through the SSH agent, if any.</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Open a session with the local machine's SSH agent, if one is + running. If no agent is running, initialization will succeed, but <a + href="paramiko.Agent-class.html#get_keys" + class="link"><code>get_keys</code></a> will return an empty tuple. + <dl><dt></dt><dd> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if an SSH agent is found, but speaks an incompatible + protocol + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the SSH agent connection. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="get_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_keys</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the list of keys available through the SSH agent, if any. If + no SSH agent was running (or it couldn't be contacted), an empty list + will be returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a list of keys available on the SSH agent + <br /><i> + (type=tuple of <a href="paramiko.AgentKey-class.html" + class="link"><code>AgentKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.AgentKey-class.html b/docs/public/paramiko.AgentKey-class.html new file mode 100644 index 0000000..203e0f4 --- /dev/null +++ b/docs/public/paramiko.AgentKey-class.html @@ -0,0 +1,236 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.AgentKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class AgentKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.AgentKey-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.AgentKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type AgentKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>AgentKey</b> +</pre><br /> + +<hr/> + +Private key held in a local SSH agent. This type of key can be used +for authenticating to a remote server (signing). Most other key +operations work as expected. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>agent</span>, + <span class=summary-sig-arg>blob</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>randpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Sign a blob of data with this private key, and return a <a +href="paramiko.Message-class.html" class="link"><code>Message</code></a> +representing an SSH signature message.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="sign_ssh_data"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>randpool</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Sign a blob of data with this private key, and return a <a + href="paramiko.Message-class.html" + class="link"><code>Message</code></a> representing an SSH signature + message. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>randpool</b></code> - + a secure random number generator. + <br /><i> + (type=<code>Crypto.Util.randpool.RandomPool</code>)</i> + <dd><code><b>data</b></code> - + the data to sign. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SSH signature message. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>paramiko.PKey.sign_ssh_data</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.BadAuthenticationType-class.html b/docs/public/paramiko.BadAuthenticationType-class.html new file mode 100644 index 0000000..27659ed --- /dev/null +++ b/docs/public/paramiko.BadAuthenticationType-class.html @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.BadAuthenticationType</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class BadAuthenticationType + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.BadAuthenticationType-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.BadAuthenticationType-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class BadAuthenticationType</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+ + | + <b>BadAuthenticationType</b> +</pre><br /> + +<hr/> + +Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type. (It may only allow public-key, +for example.) +<hr/> + +<p><b>Since:</b> 1.1 +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>explanation</span>, + <span class=summary-sig-arg>types</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Instance Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td> +<td><b><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></b>: list of allowed authentication types provided by the server (possible +values are: <code>"none"</code>, +<code>"password"</code>, and +<code>"publickey"</code>).</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="allowed_types"></a> +<h3>allowed_types</h3> +list of allowed authentication types provided by the server (possible +values are: <code>"none"</code>, +<code>"password"</code>, and +<code>"publickey"</code>). +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + list + + </dd> +<span title="[]"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +[] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.BufferedFile-class.html b/docs/public/paramiko.BufferedFile-class.html new file mode 100644 index 0000000..535c74f --- /dev/null +++ b/docs/public/paramiko.BufferedFile-class.html @@ -0,0 +1,554 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.BufferedFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class BufferedFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.BufferedFile-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.BufferedFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type BufferedFile</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>BufferedFile</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></dd></dl> + +<hr/> + +Reusable base class to implement python-style file buffering around a +simpler stream. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__iter__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__iter__</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns an iterator that can be used to iterate over the lines in + this file. This iterator happens to return the file itself, since a + file is its own iterator. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an interator. + <br /><i> + (type=iterator)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>ValueError</b></code> - + if the file is closed. + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the file. Future read and write operations will fail. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="flush"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">flush</span>(<span class=sig-arg>self</span>)</span> + </h3> + Write out any data in the write buffer. This may do nothing if write + buffering is not turned on. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="next"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">next</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the next line from the input, or raises + <code>StopIteration</code> when EOF is hit. Unlike python file objects, + it's okay to mix calls to <code>next</code> and <a + href="paramiko.BufferedFile-class.html#readline" + class="link"><code>readline</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a line read from the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>StopIteration</b></code> - + when the end of the file is reached. + </dl> + </dd></dl> +</td></tr></table> + +<a name="read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span> + </h3> + Read at most <code>size</code> bytes from the file (less if we hit + the end of the file first). If the <code>size</code> argument is + negative or omitted, read all the remaining data in the file. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>size</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data read from the file, or an empty string if EOF was + encountered immediately. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="readline"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span> + </h3> + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). If the size argument is present and non-negative, it + is a maximum byte count (including the trailing newline) and an + incomplete line may be returned. An empty string is returned only when + EOF is encountered immediately. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>size</b></code> - + maximum length of returned string. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + next line of the file, or an empty string if the end of the + file has been reached. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Note:</b> Unlike stdio's <code>fgets()</code>, the returned string contains null +characters (<code>'\0'</code>) if they occurred in the input. +</p> + + </dd></dl> +</td></tr></table> + +<a name="readlines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readlines</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sizehint</span>=<span class=sig-default>None</span>)</span> + </h3> + Read all remaining lines using <a + href="paramiko.BufferedFile-class.html#readline" + class="link"><code>readline</code></a> and return them as a list. If + the optional <code>sizehint</code> argument is present, instead of + reading up to EOF, whole lines totalling approximately sizehint bytes + (possibly after rounding up to an internal buffer size) are read. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sizehint</b></code> - + desired maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of lines read from the file. + <br /><i> + (type=list)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="seek"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span> + </h3> + Set the file's current position, like stdio's <code>fseek</code>. + Not all file objects support seeking. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position to move to within the file, relative to + <code>whence</code>. + <br /><i> + (type=int)</i> + <dd><code><b>whence</b></code> - + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file doesn't support random access. + </dl> +<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or +<code>'a+'</code>), any seek operations will be undone at the next write +(as the file position will move back to the end of the file). +</p> + + </dd></dl> +</td></tr></table> + +<a name="tell"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">tell</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the file's current position. This may not be accurate or + useful if the underlying file doesn't support random access, or was + opened in append mode. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + file position (in bytes). + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>)</span> + </h3> + Write data to the file. If write buffering is on + (<code>bufsize</code> was specified and non-zero), some or all of the + data may not actually be written yet. (Use <a + href="paramiko.BufferedFile-class.html#flush" + class="link"><code>flush</code></a> or <a + href="paramiko.BufferedFile-class.html#close" + class="link"><code>close</code></a> to force buffered data to be + written out.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + data to write. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="writelines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">writelines</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sequence</span>)</span> + </h3> + Write a sequence of strings to the file. The sequence can be any + iterable object producing strings, typically a list of strings. (The + name is intended to match <a + href="paramiko.BufferedFile-class.html#readlines" + class="link"><code>readlines</code></a>; <code>writelines</code> does + not add line separators.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sequence</b></code> - + an iterable sequence of strings. + <br /><i> + (type=sequence)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="xreadlines"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">xreadlines</span>(<span class=sig-arg>self</span>)</span> + </h3> + Identical to <code>iter(f)</code>. This is a deprecated file + interface that predates python iterator support. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an iterator. + <br /><i> + (type=iterator)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_CUR"></a> +<h3>SEEK_CUR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_END"></a> +<h3>SEEK_END</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SEEK_SET"></a> +<h3>SEEK_SET</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.Channel-class.html b/docs/public/paramiko.Channel-class.html new file mode 100644 index 0000000..89bff06 --- /dev/null +++ b/docs/public/paramiko.Channel-class.html @@ -0,0 +1,1241 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Channel</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Channel + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Channel-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Channel-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Channel</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Channel</b> +</pre><br /> + +<hr/> + +<p>A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. A Channel is meant to behave +like a socket, and has an API that should be indistinguishable from the +python socket API.</p> +Because SSH2 has a windowing kind of flow control, if you stop reading +data from a Channel and its buffer fills up, the server will be unable to +send you any more data until you read some of it. (This won't affect +other channels on the same transport -- all channels on a single +transport are flow-controlled independently.) Similarly, if the server +isn't reading data you send, calls to <a +href="paramiko.Channel-class.html#send" +class="link"><code>send</code></a> may block, unless you set a timeout. +This is exactly like a normal network socket, so it shouldn't be too +surprising. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>chanid</span>)</span></code> +<br /> +Create a new channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#exec_command" class="summary-sig-name"><code>exec_command</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>command</span>)</span></code> +<br /> +Execute a command on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#fileno" class="summary-sig-name"><code>fileno</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an OS-level file descriptor which can be used for polling, but +but <i>not</i> for reading or writing).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_id" class="summary-sig-name"><code>get_id</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the ID # for this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Get the name of this channel that was previously set by <a +href="paramiko.Channel-class.html#set_name" +class="link"><code>set_name</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_pty" class="summary-sig-name"><code>get_pty</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>term</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>)</span></code> +<br /> +Request a pseudo-terminal from the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_transport" class="summary-sig-name"><code>get_transport</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> associated with this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> float +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the timeout in seconds (as a float) associated with socket +operations, or <code>None</code> if no timeout is set.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_shell" class="summary-sig-name"><code>invoke_shell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Request an interactive shell session on this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_subsystem" class="summary-sig-name"><code>invoke_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>subsystem</span>)</span></code> +<br /> +Request a subsystem on the server (for example, +<code>sftp</code>).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile" class="summary-sig-name"><code>makefile</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*params</span>)</span></code> +<br /> +Return a file-like object associated with this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile_stderr" class="summary-sig-name"><code>makefile_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*params</span>)</span></code> +<br /> +Return a file-like object associated with this channel's stderr +stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv" class="summary-sig-name"><code>recv</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Receive data from the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_exit_status" class="summary-sig-name"><code>recv_exit_status</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the exit status from the process on the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_ready" class="summary-sig-name"><code>recv_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns true if data is buffered and ready to be read from this +channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr" class="summary-sig-name"><code>recv_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Receive data from the channel's stderr stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr_ready" class="summary-sig-name"><code>recv_stderr_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns true if data is buffered and ready to be read from this +channel's stderr stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#resize_pty" class="summary-sig-name"><code>resize_pty</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>width</span>, + <span class=summary-sig-arg>height</span>)</span></code> +<br /> +Resize the pseudo-terminal.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send" class="summary-sig-name"><code>send</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_exit_status" class="summary-sig-name"><code>send_exit_status</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>status</span>)</span></code> +<br /> +Send the exit status of an executed command to the client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_stderr" class="summary-sig-name"><code>send_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel on the "stderr" stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall" class="summary-sig-name"><code>sendall</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel, without allowing partial results.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall_stderr" class="summary-sig-name"><code>sendall_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Send data to the channel's "stderr" stream, without allowing +partial results.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_combine_stderr" class="summary-sig-name"><code>set_combine_stderr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>combine</span>)</span></code> +<br /> +Set whether stderr should be combined into stdout on this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_name" class="summary-sig-name"><code>set_name</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +<br /> +Set a name for this channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>blocking</span>)</span></code> +<br /> +Set blocking or non-blocking mode of the channel: if +<code>blocking</code> is 0, the channel is set to non-blocking mode; +otherwise it's set to blocking mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Set a timeout on blocking read/write operations.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown" class="summary-sig-name"><code>shutdown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>how</span>)</span></code> +<br /> +Shut down one or both halves of the connection.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_read" class="summary-sig-name"><code>shutdown_read</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Shutdown the receiving side of this socket, closing the stream in the +incoming direction.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_write" class="summary-sig-name"><code>shutdown_write</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Shutdown the sending side of this socket, closing the stream in the +outgoing direction.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></b> = <span title="1024">1024 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>chanid</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new channel. The channel is not associated with any + particular session or <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> until the Transport attaches + it. Normally you would only call this method from the constructor of a + subclass of <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>chanid</b></code> - + the ID of this channel, as passed by an existing <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Return a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the channel. All future read/write operations on the channel + will fail. The remote end will receive no more data (after queued data + is flushed). Channels are automatically closed when their <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> is closed or when they are + garbage collected. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="exec_command"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">exec_command</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>command</span>)</span> + </h3> + <p>Execute a command on the server. If the server allows it, the + channel will then be directly connected to the stdin, stdout, and + stderr of the command being executed.</p> + When the command finishes executing, the channel will be closed and + can't be reused. You must open a new channel if you wish to execute + another command. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>command</b></code> - + a shell command to execute. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="fileno"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">fileno</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>Returns an OS-level file descriptor which can be used for polling, + but but <i>not</i> for reading or writing). This is primaily to allow + python's <code>select</code> module to work.</p> + The first time <code>fileno</code> is called on a channel, a pipe is + created to simulate real OS-level file descriptor (FD) behavior. + Because of this, two OS-level FDs are created, which will use up FDs + faster than normal. You won't notice this effect unless you open + hundreds or thousands of channels simultaneously, but it's still + notable. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an OS-level file descriptor + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Warning:</b> This method causes channel reads to be slightly less efficient. +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_id"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_id</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the ID # for this channel. The channel ID is unique across a + <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> and usually a small number. + It's also the number passed to <a + href="../private/paramiko.ServerInterface-class.html#check_channel_request" + class="link"><code>ServerInterface.check_channel_request</code></a> + when determining whether to accept a channel request in server + mode. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the ID of this channel. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> ivysaur +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Get the name of this channel that was previously set by <a + href="paramiko.Channel-class.html#set_name" + class="link"><code>set_name</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the name of this channel. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_pty"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_pty</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>term</span>=<span class=sig-default>'vt100'</span>, + <span class=sig-arg>width</span>=<span class=sig-default>80</span>, + <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span> + </h3> + Request a pseudo-terminal from the server. This is usually used + right after creating a client channel, to ask the server to provide + some basic terminal semantics for a shell invoked with <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a>. It isn't necessary (or + desirable) to call this method if you're going to exectue a single + command with <a href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>term</b></code> - + the terminal type to emulate (for example, + <code>'vt100'</code>). + <br /><i> + (type=str)</i> + <dd><code><b>width</b></code> - + width (in characters) of the terminal screen + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + height (in characters) of the terminal screen + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_transport"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_transport</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> associated with this + channel. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> that was used to create + this channel. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="gettimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the timeout in seconds (as a float) associated with socket + operations, or <code>None</code> if no timeout is set. This reflects + the last call to <a href="paramiko.Channel-class.html#setblocking" + class="link"><code>setblocking</code></a> or <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + timeout in seconds, or <code>None</code>. + <br /><i> + (type=float)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="invoke_shell"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">invoke_shell</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>Request an interactive shell session on this channel. If the server + allows it, the channel will then be directly connected to the stdin, + stdout, and stderr of the shell.</p> + <p>Normally you would call <a + href="paramiko.Channel-class.html#get_pty" + class="link"><code>get_pty</code></a> before this, in which case the + shell will operate through the pty, and the channel will be connected + to the stdin and stdout of the pty.</p> + When the shell exits, the channel will be closed and can't be + reused. You must open a new channel if you wish to open another + shell. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="invoke_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">invoke_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>subsystem</span>)</span> + </h3> + <p>Request a subsystem on the server (for example, <code>sftp</code>). + If the server allows it, the channel will then be directly connected to + the requested subsystem.</p> + When the subsystem finishes, the channel will be closed and can't be + reused. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>subsystem</b></code> - + name of the subsystem being requested. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="makefile"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">makefile</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*params</span>)</span> + </h3> + Return a file-like object associated with this channel. The optional + <code>mode</code> and <code>bufsize</code> arguments are interpreted + the same way as by the built-in <code>file()</code> function in + python. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + object which can be used for python file I/O. + <br /><i> + (type=<a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="makefile_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">makefile_stderr</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*params</span>)</span> + </h3> + <p>Return a file-like object associated with this channel's stderr + stream. Only channels using <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream.</p> + The optional <code>mode</code> and <code>bufsize</code> arguments + are interpreted the same way as by the built-in <code>file()</code> + function in python. For a client, it only makes sense to open this file + for reading. For a server, it only makes sense to open this file for + writing. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + object which can be used for python file I/O. + <br /><i> + (type=<a href="../private/paramiko.ChannelFile-class.html" + class="link"><code>ChannelFile</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Receive data from the channel. The return value is a string + representing the data received. The maximum amount of data to be + received at once is specified by <code>nbytes</code>. If a string of + length zero is returned, the channel stream has closed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>nbytes</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data is ready before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> + </dd></dl> +</td></tr></table> + +<a name="recv_exit_status"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_exit_status</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the exit status from the process on the server. This is + mostly useful for retrieving the reults of an <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a>. If the command hasn't + finished yet, this method will wait until it does, or until the channel + is closed. If no exit status is provided by the server, -1 is + returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the exit code of the process on the server. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv_ready"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_ready</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns true if data is buffered and ready to be read from this + channel. A <code>False</code> result does not mean that the channel has + closed; it means you may need to wait before more data arrives. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if a <a + href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> call on this channel would + immediately return at least one byte; <code>False</code> + otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="recv_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Receive data from the channel's stderr stream. Only channels using + <a href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream. The return value is a string representing + the data received. The maximum amount of data to be received at once is + specified by <code>nbytes</code>. If a string of length zero is + returned, the channel stream has closed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>nbytes</b></code> - + maximum number of bytes to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data is ready before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="recv_stderr_ready"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">recv_stderr_ready</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns true if data is buffered and ready to be read from this + channel's stderr stream. Only channels using <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> or <a + href="paramiko.Channel-class.html#invoke_shell" + class="link"><code>invoke_shell</code></a> without a pty will ever have + data on the stderr stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if a <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> call on this channel + would immediately return at least one byte; <code>False</code> + otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="resize_pty"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">resize_pty</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>width</span>=<span class=sig-default>80</span>, + <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span> + </h3> + Resize the pseudo-terminal. This can be used to change the width and + height of the terminal emulation created in a previous <a + href="paramiko.Channel-class.html#get_pty" + class="link"><code>get_pty</code></a> call. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>width</b></code> - + new width (in characters) of the terminal screen + <br /><i> + (type=int)</i> + <dd><code><b>height</b></code> - + new height (in characters) of the terminal screen + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the operation succeeded; + <code>False</code> if not. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="send"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel. Returns the number of bytes sent, or 0 if + the channel stream is closed. Applications are responsible for checking + that all data has been sent: if only some of the data was transmitted, + the application needs to attempt delivery of the remaining data. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + number of bytes actually sent. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data could be sent before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> + </dd></dl> +</td></tr></table> + +<a name="send_exit_status"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_exit_status</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>status</span>)</span> + </h3> + Send the exit status of an executed command to the client. (This + really only makes sense in server mode.) Many clients expect to get + some sort of status code back from an executed command after it + completes. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>status</b></code> - + the exit code of the process + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="send_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel on the "stderr" stream. This is + normally only used by servers to send output from shell commands -- + clients won't use this. Returns the number of bytes sent, or 0 if the + channel stream is closed. Applications are responsible for checking + that all data has been sent: if only some of the data was transmitted, + the application needs to attempt delivery of the remaining data. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + number of bytes actually sent. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if no data could be sent before the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="sendall"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sendall</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel, without allowing partial results. Unlike + <a href="paramiko.Channel-class.html#send" + class="link"><code>send</code></a>, this method continues to send data + from the given string until either all data has been sent or an error + occurs. Nothing is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if sending stalled for longer than the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dd><code><b>socket.error</b></code> - + if an error occured before the entire string was sent. + </dl> +<p><b>Note:</b> If the channel is closed while only part of the data hase been sent, +there is no way to determine how much data (if any) was sent. This is +irritating, but identically follows python's API. +</p> + + </dd></dl> +</td></tr></table> + +<a name="sendall_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">sendall_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Send data to the channel's "stderr" stream, without + allowing partial results. Unlike <a + href="paramiko.Channel-class.html#send_stderr" + class="link"><code>send_stderr</code></a>, this method continues to + send data from the given string until all data has been sent or an + error occurs. Nothing is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + data to send to the client as "stderr" output. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>socket.timeout</b></code> - + if sending stalled for longer than the timeout set by <a + href="paramiko.Channel-class.html#settimeout" + class="link"><code>settimeout</code></a>. + <dd><code><b>socket.error</b></code> - + if an error occured before the entire string was sent. + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_combine_stderr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_combine_stderr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>combine</span>)</span> + </h3> + <p>Set whether stderr should be combined into stdout on this channel. + The default is <code>False</code>, but in some cases it may be + convenient to have both streams combined.</p> + <p>If this is <code>False</code>, and <a + href="paramiko.Channel-class.html#exec_command" + class="link"><code>exec_command</code></a> is called (or + <code>invoke_shell</code> with no pty), output to stderr will not show + up through the <a href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> and <a + href="paramiko.Channel-class.html#recv_ready" + class="link"><code>recv_ready</code></a> calls. You will have to use <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> and <a + href="paramiko.Channel-class.html#recv_stderr_ready" + class="link"><code>recv_stderr_ready</code></a> to get stderr + output.</p> + If this is <code>True</code>, data will never show up via <a + href="paramiko.Channel-class.html#recv_stderr" + class="link"><code>recv_stderr</code></a> or <a + href="paramiko.Channel-class.html#recv_stderr_ready" + class="link"><code>recv_stderr_ready</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>combine</b></code> - + <code>True</code> if stderr output should be combined into + stdout on this channel. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + previous setting. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_name</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>)</span> + </h3> + Set a name for this channel. Currently it's only used to set the + name of the log level used for debugging. The name can be fetched with + the <a href="paramiko.Channel-class.html#get_name" + class="link"><code>get_name</code></a> method. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + new channel name. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="setblocking"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>blocking</span>)</span> + </h3> + <p>Set blocking or non-blocking mode of the channel: if + <code>blocking</code> is 0, the channel is set to non-blocking mode; + otherwise it's set to blocking mode. Initially all channels are in + blocking mode.</p> + <p>In non-blocking mode, if a <a + href="paramiko.Channel-class.html#recv" + class="link"><code>recv</code></a> call doesn't find any data, or if a + <a href="paramiko.Channel-class.html#send" + class="link"><code>send</code></a> call can't immediately dispose of + the data, an error exception is raised. In blocking mode, the calls + block until they can proceed.</p> + <code>chan.setblocking(0)</code> is equivalent to + <code>chan.settimeout(0)</code>; <code>chan.setblocking(1)</code> is + equivalent to <code>chan.settimeout(None)</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>blocking</b></code> - + 0 to set non-blocking mode; non-0 to set blocking mode. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="settimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>)</span> + </h3> + <p>Set a timeout on blocking read/write operations. The + <code>timeout</code> argument can be a nonnegative float expressing + seconds, or <code>None</code>. If a float is given, subsequent channel + read/write operations will raise a timeout exception if the timeout + period value has elapsed before the operation has completed. Setting a + timeout of <code>None</code> disables timeouts on socket + operations.</p> + <code>chan.settimeout(0.0)</code> is equivalent to + <code>chan.setblocking(0)</code>; <code>chan.settimeout(None)</code> is + equivalent to <code>chan.setblocking(1)</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a pending read/write operation before + raising <code>socket.timeout</code>, or <code>None</code> for no + timeout. + <br /><i> + (type=float)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="shutdown"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>how</span>)</span> + </h3> + Shut down one or both halves of the connection. If <code>how</code> + is 0, further receives are disallowed. If <code>how</code> is 1, + further sends are disallowed. If <code>how</code> is 2, further sends + and receives are disallowed. This closes the stream in one or both + directions. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>how</b></code> - + 0 (stop receiving), 1 (stop sending), or 2 (stop receiving and + sending). + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="shutdown_read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown_read</span>(<span class=sig-arg>self</span>)</span> + </h3> + Shutdown the receiving side of this socket, closing the stream in + the incoming direction. After this call, future reads on this channel + will fail instantly. This is a convenience method, equivalent to + <code>shutdown(0)</code>, for people who don't make it a habit to + memorize unix constants from the 1970s. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="shutdown_write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">shutdown_write</span>(<span class=sig-arg>self</span>)</span> + </h3> + Shutdown the sending side of this socket, closing the stream in the + outgoing direction. After this call, future writes on this channel will + fail instantly. This is a convenience method, equivalent to + <code>shutdown(1)</code>, for people who don't make it a habit to + memorize unix constants from the 1970s. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MIN_PACKET_SIZE"></a> +<h3>MIN_PACKET_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1024"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1024 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.DSSKey-class.html b/docs/public/paramiko.DSSKey-class.html new file mode 100644 index 0000000..f36e784 --- /dev/null +++ b/docs/public/paramiko.DSSKey-class.html @@ -0,0 +1,423 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.DSSKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class DSSKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.DSSKey-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.DSSKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type DSSKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>DSSKey</b> +</pre><br /> + +<hr/> + +Representation of a DSS key which can be used to sign an verify SSH2 +data. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Create a new instance of this public key type.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>, + <span class=summary-sig-arg>progress_func</span>)</span></code> +<br /> +Generate a new private DSS key. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>rpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>=<span class=sig-default>None</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new instance of this public key type. If <code>msg</code> + is given, the key's public part(s) will be filled in from the message. + If <code>data</code> is given, the key's public part(s) will be filled + in from the string. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>msg</b></code> - + an optional SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing a public key of + this type. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + <dd><code><b>data</b></code> - + an optional string containing a public key of this type + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if a key cannot be created from the <code>data</code> or + <code>msg</code> given, or no key was passed in. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="can_sign"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if this key has the private part necessary + for signing data. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this is a private key. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bits"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + bits in the key. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="verify_ssh_sig"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + the data that was signed. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + an SSH signature message + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the signature verifies correctly; + <code>False</code> otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write private key contents into a file. If the password is not + <code>None</code>, the key is encrypted before writing. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the key file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + <dd><code><b>SSHException</b></code> - + if the key is invalid. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="generate"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>=<span class=sig-default>1024</span>, + <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span> + </h3> + Generate a new private DSS key. This factory function can be used to + generate a new host key or authentication key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bits</b></code> - + number of bits the generated key should be. + <br /><i> + (type=int)</i> + <dd><code><b>progress_func</b></code> - + an optional function to call at key points in key generation + (used by <code>pyCrypto.PublicKey</code>). + <br /><i> + (type=function)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new private key + <br /><i> + (type=<a href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.Message-class.html b/docs/public/paramiko.Message-class.html new file mode 100644 index 0000000..7f097f8 --- /dev/null +++ b/docs/public/paramiko.Message-class.html @@ -0,0 +1,650 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Message + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Message-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Message-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Message</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>Message</b> +</pre><br /> + +<hr/> + +<p>An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s). This class builds or breaks down such +a byte stream.</p> +Normally you don't need to deal with anything this low-level, but it's +exposed for people implementing custom extensions, or features that +paramiko doesn't support yet. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>content</span>)</span></code> +<br /> +Create a new SSH2 Message.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the byte stream content of this Message, as a string.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add" class="summary-sig-name"><code>add</code></a>(<span class=summary-sig-arg>self</span>, + <span class="summary-sig-vararg">*seq</span>)</span></code> +<br /> +Add a sequence of items to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_boolean" class="summary-sig-name"><code>add_boolean</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Add a boolean value to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_byte" class="summary-sig-name"><code>add_byte</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Write a single byte to the stream, without any formatting.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_bytes" class="summary-sig-name"><code>add_bytes</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>b</span>)</span></code> +<br /> +Write bytes to the stream, without any formatting.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int" class="summary-sig-name"><code>add_int</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Add an integer to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int64" class="summary-sig-name"><code>add_int64</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Add a 64-bit int to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_list" class="summary-sig-name"><code>add_list</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>l</span>)</span></code> +<br /> +Add a list of strings to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_mpint" class="summary-sig-name"><code>add_mpint</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>z</span>)</span></code> +<br /> +Add a long int to the stream, encoded as an infinite-precision +integer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_string" class="summary-sig-name"><code>add_string</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>s</span>)</span></code> +<br /> +Add a string to the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_boolean" class="summary-sig-name"><code>get_boolean</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a boolean from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_byte" class="summary-sig-name"><code>get_byte</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the next byte of the Message, without decomposing it.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_bytes" class="summary-sig-name"><code>get_bytes</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>n</span>)</span></code> +<br /> +Return the next <code>n</code> bytes of the Message, without +decomposing into an int, string, etc.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int" class="summary-sig-name"><code>get_int</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch an int from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> long +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int64" class="summary-sig-name"><code>get_int64</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a 64-bit int from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of strings +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_list" class="summary-sig-name"><code>get_list</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a list of strings from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> long +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_mpint" class="summary-sig-name"><code>get_mpint</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a long int (mpint) from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_remainder" class="summary-sig-name"><code>get_remainder</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the bytes of this Message that haven't already been parsed and +returned.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_so_far" class="summary-sig-name"><code>get_so_far</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the bytes of this Message that have been parsed and +returned.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_string" class="summary-sig-name"><code>get_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Fetch a string from the stream.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#rewind" class="summary-sig-name"><code>rewind</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Rewind the message to the beginning as if no items had been parsed out +of it yet.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>content</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new SSH2 Message. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>content</b></code> - + the byte stream to use as the Message content (passed in only + when decomposing a Message). + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return the byte stream content of this Message, as a string. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the contents of this Message. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add</span>(<span class=sig-arg>self</span>, + <span class="sig-vararg">*seq</span>)</span> + </h3> + Add a sequence of items to the stream. The values are encoded based + on their type: str, int, bool, list, or long. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>seq</b></code> - + the sequence of items + <br /><i> + (type=sequence)</i> + </dd> + </dl> +<p><b>Bug:</b> longs are encoded non-deterministically. Don't use this method. +</p> + + </dd></dl> +</td></tr></table> + +<a name="add_boolean"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_boolean</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Add a boolean value to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + boolean value to add + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_byte"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_byte</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Write a single byte to the stream, without any formatting. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + byte to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_bytes</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>b</span>)</span> + </h3> + Write bytes to the stream, without any formatting. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>b</b></code> - + bytes to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_int"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_int</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Add an integer to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>n</b></code> - + integer to add + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_int64"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_int64</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Add a 64-bit int to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>n</b></code> - + long int to add + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_list"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_list</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>l</span>)</span> + </h3> + Add a list of strings to the stream. They are encoded identically to + a single string of values separated by commas. (Yes, really, that's how + SSH2 does it.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>l</b></code> - + list of strings to add + <br /><i> + (type=list(str))</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_mpint"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_mpint</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>z</span>)</span> + </h3> + Add a long int to the stream, encoded as an infinite-precision + integer. This method only works on positive numbers. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>z</b></code> - + long int to add + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_string"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_string</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>s</span>)</span> + </h3> + Add a string to the stream. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>s</b></code> - + string to add + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_boolean"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_boolean</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a boolean from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> or <code>False</code> (from the + Message). + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_byte"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_byte</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the next byte of the Message, without decomposing it. This is + equivalent to <a href="paramiko.Message-class.html#get_bytes" + class="link"><code>get_bytes(1)</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the next byte of the Message, or <code>' + aren't any bytes remaining. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bytes</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>n</span>)</span> + </h3> + Return the next <code>n</code> bytes of the Message, without + decomposing into an int, string, etc. Just the raw bytes are + returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the next <code>n</code> bytes of the Message, or a + string of <code>n</code> zero bytes, if there aren't + <code>n</code> bytes remaining. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_int"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_int</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch an int from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a 32-bit unsigned integer. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_int64"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_int64</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a 64-bit int from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a 64-bit unsigned integer. + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_list"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_list</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a list of strings from the stream. These are trivially encoded + as comma-separated values in a string. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a list of strings. + <br /><i> + (type=list of strings)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_mpint"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_mpint</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a long int (mpint) from the stream. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an arbitrary-length integer. + <br /><i> + (type=long)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_remainder"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_remainder</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the bytes of this Message that haven't already been parsed + and returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the bytes not parsed yet. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_so_far"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_so_far</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the bytes of this Message that have been parsed and + returned. The string passed into a Message's constructor can be + regenerated by concatenating <code>get_so_far</code> and <a + href="paramiko.Message-class.html#get_remainder" + class="link"><code>get_remainder</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string of the bytes parsed so far. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_string"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_string</span>(<span class=sig-arg>self</span>)</span> + </h3> + Fetch a string from the stream. This could be a byte string and may + contain unprintable characters. (It's not unheard of for a string to + contain another byte-stream Message.) + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a string. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="rewind"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rewind</span>(<span class=sig-arg>self</span>)</span> + </h3> + Rewind the message to the beginning as if no items had been parsed + out of it yet. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.PasswordRequiredException-class.html b/docs/public/paramiko.PasswordRequiredException-class.html new file mode 100644 index 0000000..3d05e9c --- /dev/null +++ b/docs/public/paramiko.PasswordRequiredException-class.html @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.PasswordRequiredException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class PasswordRequiredException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.PasswordRequiredException-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.PasswordRequiredException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class PasswordRequiredException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+ + | + <b>PasswordRequiredException</b> +</pre><br /> + +<hr/> + +Exception raised when a password is needed to unlock a private key +file. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.RSAKey-class.html b/docs/public/paramiko.RSAKey-class.html new file mode 100644 index 0000000..168a684 --- /dev/null +++ b/docs/public/paramiko.RSAKey-class.html @@ -0,0 +1,423 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.RSAKey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class RSAKey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.RSAKey-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.RSAKey-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type RSAKey</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+ + | + <b>RSAKey</b> +</pre><br /> + +<hr/> + +Representation of an RSA key which can be used to sign and verify SSH2 +data. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>msg</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Create a new instance of this public key type.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a string of an SSH <a href="paramiko.Message-class.html" +class="link"><code>Message</code></a> made up of the public part(s) of +this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if this key has the private part necessary +for signing data.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>, + <span class=summary-sig-arg>progress_func</span>)</span></code> +<br /> +Generate a new private RSA key. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the number of significant bits in this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the name of this private key implementation.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>rpool</span>, + <span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>msg</span>)</span></code> +<br /> +Given a blob of data, and an SSH message representing a signature of +that data, verify that it was signed with this key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>password</span>)</span></code> +<br /> +Write private key contents into a file.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>msg</span>=<span class=sig-default>None</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new instance of this public key type. If <code>msg</code> + is given, the key's public part(s) will be filled in from the message. + If <code>data</code> is given, the key's public part(s) will be filled + in from the string. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>msg</b></code> - + an optional SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing a public key of + this type. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + <dd><code><b>data</b></code> - + an optional string containing a public key of this type + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if a key cannot be created from the <code>data</code> or + <code>msg</code> given, or no key was passed in. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + Return a string of an SSH <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> made up of the public part(s) of + this key. This string is suitable for passing to <a + href="../private/paramiko.PKey-class.html#__init__" + class="link"><code>__init__</code></a> to re-create the key object + later. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + string representation of an SSH key message. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="can_sign"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if this key has the private part necessary + for signing data. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if this is a private key. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_bits"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + bits in the key. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_name"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the name of this private key implementation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + name of this private key type, in SSH terminology (for + example, <code>"ssh-rsa"</code>). + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="verify_ssh_sig"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>data</span>, + <span class=sig-arg>msg</span>)</span> + </h3> + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>data</b></code> - + the data that was signed. + <br /><i> + (type=str)</i> + <dd><code><b>msg</b></code> - + an SSH signature message + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if the signature verifies correctly; + <code>False</code> otherwise. + <br /><i> + (type=boolean)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write_private_key_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span> + </h3> + Write private key contents into a file. If the password is not + <code>None</code>, the key is encrypted before writing. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to write. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + an optional password to use to encrypt the key file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if there was an error writing the file. + <dd><code><b>SSHException</b></code> - + if the key is invalid. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="generate"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>, + <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span> + </h3> + Generate a new private RSA key. This factory function can be used to + generate a new host key or authentication key. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bits</b></code> - + number of bits the generated key should be. + <br /><i> + (type=int)</i> + <dd><code><b>progress_func</b></code> - + an optional function to call at key points in key generation + (used by <code>pyCrypto.PublicKey</code>). + <br /><i> + (type=function)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new private key + <br /><i> + (type=<a href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTP-class.html b/docs/public/paramiko.SFTP-class.html new file mode 100644 index 0000000..72ebc70 --- /dev/null +++ b/docs/public/paramiko.SFTP-class.html @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTP</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTP + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTP-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTP-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTP</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a> --+ + | + <b>SFTP</b> +</pre><br /> + +<hr/> + +an alias for <a href="paramiko.SFTPClient-class.html" +class="link"><code>SFTPClient</code></a> for backwards compatability +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from SFTPClient</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create an SFTP client from an existing <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Change the "current directory" of this SFTP session.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Change the mode (permissions) of a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>uid</span>, + <span class=summary-sig-arg>gid</span>)</span></code> +<br /> +Change the owner (<code>uid</code>) and group (<code>gid</code>) of a +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SFTP session and its underlying channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>, + <span class=summary-sig-arg>t</span>)</span></code> +<br /> +Create an SFTP client channel from an open <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>remotepath</span>, + <span class=summary-sig-arg>localpath</span>)</span></code> +<br /> +Copy a remote file (<code>remotepath</code>) from the SFTP server to +the local host as <code>localpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the "current working directory" for this SFTP +session, as emulated by paramiko.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing the names of the entries in the given +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> objects corresponding to +files in the given <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system, without +following symbolic links (shortcuts).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Create a folder (directory) named <code>path</code> with numeric mode +<code>mode</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the normalized path (on the server) of a given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>localpath</span>, + <span class=summary-sig-arg>remotepath</span>)</span></code> +<br /> +Copy a local file (<code>localpath</code>) to the SFTP server as +<code>remotepath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the target of a symbolic link (shortcut).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>oldpath</span>, + <span class=summary-sig-arg>newpath</span>)</span></code> +<br /> +Rename a file or folder from <code>oldpath</code> to +<code>newpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the folder named <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>source</span>, + <span class=summary-sig-arg>dest</span>)</span></code> +<br /> +Create a symbolic link (shortcut) of the <code>source</code> path at +<code>destination</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>times</span>)</span></code> +<br /> +Set the access and modified times of the file specified by +<code>path</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPAttributes-class.html b/docs/public/paramiko.SFTPAttributes-class.html new file mode 100644 index 0000000..c3cc57c --- /dev/null +++ b/docs/public/paramiko.SFTPAttributes-class.html @@ -0,0 +1,360 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPAttributes</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPAttributes + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPAttributes-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPAttributes-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPAttributes</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SFTPAttributes</b> +</pre><br /> + +<hr/> + +Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode. It attemps to mirror the object returned by +<code>os.stat</code> as closely as possible, so it may have the following +fields, with the same meanings as those returned by an +<code>os.stat</code> object: +<ul> + <li> + st_size + </li> + <li> + st_uid + </li> + <li> + st_gid + </li> + <li> + st_mode + </li> + <li> + st_atime + </li> + <li> + st_mtime + </li> +</ul> +Because SFTP allows flags to have other arbitrary named attributes, +these are stored in a dict named <code>attr</code>. Occasionally, the +filename is also stored, in <code>filename</code>. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Create a new (empty) SFTPAttributes object.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +create a unix-style long description of the file (like ls -l)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#from_stat" class="summary-sig-name"><code>from_stat</code></a>(<span class=summary-sig-arg>cls</span>, + <span class=summary-sig-arg>obj</span>, + <span class=summary-sig-arg>filename</span>)</span></code> +<br /> +Create an SFTPAttributes object from an existing <code>stat</code> +object (an object returned by <code>os.stat</code>). <i>(Class method)</i> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></b> = <span title="2147483648L"><code>2147483648L </code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></b> = <span title="2">2 </span></td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new (empty) SFTPAttributes object. All fields will be + empty. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__str__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Informal representation operator)</i> + </h3> + create a unix-style long description of the file (like ls -l) + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Method Details</th></tr> +</table> + +<a name="from_stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">from_stat</span>(<span class=sig-arg>cls</span>, + <span class=sig-arg>obj</span>, + <span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span> + </h3> + Create an SFTPAttributes object from an existing <code>stat</code> + object (an object returned by <code>os.stat</code>). + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>obj</b></code> - + an object returned by <code>os.stat</code> (or + equivalent). + <br /><i> + (type=object)</i> + <dd><code><b>filename</b></code> - + the filename associated with this file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + new <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object with the same + attribute fields. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_AMTIME"></a> +<h3>FLAG_AMTIME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_EXTENDED"></a> +<h3>FLAG_EXTENDED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>long</code> + + </dd> +<span title="2147483648L"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2147483648L </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_PERMISSIONS"></a> +<h3>FLAG_PERMISSIONS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_SIZE"></a> +<h3>FLAG_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="FLAG_UIDGID"></a> +<h3>FLAG_UIDGID</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPClient-class.html b/docs/public/paramiko.SFTPClient-class.html new file mode 100644 index 0000000..d691c5e --- /dev/null +++ b/docs/public/paramiko.SFTPClient-class.html @@ -0,0 +1,1009 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPClient</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPClient + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPClient-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPClient-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPClient</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <b>SFTPClient</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTP-class.html"><code>SFTP</code></a></dd></dl> + +<hr/> + +SFTP client object. <code>SFTPClient</code> is used to open an sftp +session across an open ssh <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> and do remote file +operations. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create an SFTP client from an existing <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Change the "current directory" of this SFTP session.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Change the mode (permissions) of a file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>uid</span>, + <span class=summary-sig-arg>gid</span>)</span></code> +<br /> +Change the owner (<code>uid</code>) and group (<code>gid</code>) of a +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the SFTP session and its underlying channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>, + <span class=summary-sig-arg>t</span>)</span></code> +<br /> +Create an SFTP client channel from an open <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>. <i>(Class method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>remotepath</span>, + <span class=summary-sig-arg>localpath</span>)</span></code> +<br /> +Copy a remote file (<code>remotepath</code>) from the SFTP server to +the local host as <code>localpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the "current working directory" for this SFTP +session, as emulated by paramiko.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing the names of the entries in the given +<code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return a list containing <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> objects corresponding to +files in the given <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system, without +following symbolic links (shortcuts).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>mode</span>)</span></code> +<br /> +Create a folder (directory) named <code>path</code> with numeric mode +<code>mode</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the normalized path (on the server) of a given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +<br /> +Open a file on the remote server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>localpath</span>, + <span class=summary-sig-arg>remotepath</span>)</span></code> +<br /> +Copy a local file (<code>localpath</code>) to the SFTP server as +<code>remotepath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Return the target of a symbolic link (shortcut).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>oldpath</span>, + <span class=summary-sig-arg>newpath</span>)</span></code> +<br /> +Rename a file or folder from <code>oldpath</code> to +<code>newpath</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the folder named <code>path</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Retrieve information about a file on the remote system.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>source</span>, + <span class=summary-sig-arg>dest</span>)</span></code> +<br /> +Create a symbolic link (shortcut) of the <code>source</code> path at +<code>destination</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>)</span></code> +<br /> +Remove the file at the given path.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>path</span>, + <span class=summary-sig-arg>times</span>)</span></code> +<br /> +Set the access and modified times of the file specified by +<code>path</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sock</span>)</span> + <br /><i>(Constructor)</i> + </h3> + <p>Create an SFTP client from an existing <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. The channel should already have + requested the <code>"sftp"</code> subsystem.</p> + An alternate way to create an SFTP client context is by using <a + href="paramiko.SFTPClient-class.html#from_transport" + class="link"><code>from_transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sock</b></code> - + an open <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> using the + <code>"sftp"</code> subsystem. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="chdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + new current working directory + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the requested path doesn't exist on the server + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="chmod"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chmod</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>mode</span>)</span> + </h3> + Change the mode (permissions) of a file. The permissions are + unix-style and identical to those used by python's + <code>os.chmod</code> function. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to change the permissions of. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + new permissions. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="chown"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chown</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>uid</span>, + <span class=sig-arg>gid</span>)</span> + </h3> + Change the owner (<code>uid</code>) and group (<code>gid</code>) of + a file. As with python's <code>os.chown</code> function, you must pass + both arguments, so if you only want to change one, use <a + href="paramiko.SFTPClient-class.html#stat" + class="link"><code>stat</code></a> first to retrieve the current owner + and group. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to change the owner and group of. + <br /><i> + (type=string)</i> + <dd><code><b>uid</b></code> - + new owner's uid + <br /><i> + (type=int)</i> + <dd><code><b>gid</b></code> - + new group id + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close the SFTP session and its underlying channel. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">file</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>, + <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span> + </h3> + <p>Open a file on the remote server. The arguments are the same as for + python's built-in <code>file</code> (aka <code>open</code>). A + file-like object is returned, which closely mimics the behavior of a + normal python file object.</p> + <p>The mode indicates how the file is to be opened: <code>'r'</code> + for reading, <code>'w'</code> for writing (truncating an existing + file), <code>'a'</code> for appending, <code>'r+'</code> for + reading/writing, <code>'w+'</code> for reading/writing (truncating an + existing file), <code>'a+'</code> for reading/appending. The python + <code>'b'</code> flag is ignored, since SSH treats all files as binary. + The <code>'U'</code> flag is supported in a compatible way.</p> + <p>Since 1.5.2, an <code>'x'</code> 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 <code>O_EXCL</code> flag in posix.</p> + The file will be buffered in standard python style by default, but + can be altered with the <code>bufsize</code> parameter. <code>0</code> + turns off buffering, <code>1</code> uses line buffering, and any number + greater than 1 (<code>>1</code>) uses that specific buffer size. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to open. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + mode (python-style) to open in. + <br /><i> + (type=string)</i> + <dd><code><b>bufsize</b></code> - + desired buffering (-1 = default buffer size) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a file object representing the open file. + <br /><i> + (type=SFTPFile)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file could not be opened. + </dl> + </dd></dl> +</td></tr></table> + +<a name="get"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>remotepath</span>, + <span class=sig-arg>localpath</span>)</span> + </h3> + Copy a remote file (<code>remotepath</code>) from the SFTP server to + the local host as <code>localpath</code>. Any exception raised by + operations will be passed through. This method is primarily provided as + a convenience. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>remotepath</b></code> - + the remote file to copy + <br /><i> + (type=str)</i> + <dd><code><b>localpath</b></code> - + the destination path on the local host + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="getcwd"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">getcwd</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the "current working directory" for this SFTP + session, as emulated by paramiko. If no directory has been set with <a + href="paramiko.SFTPClient-class.html#chdir" + class="link"><code>chdir</code></a>, this method will return + <code>None</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + the current working directory on the server, or + <code>None</code> + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="listdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">listdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span> + </h3> + Return a list containing the names of the entries in the given + <code>path</code>. The list is in arbitrary order. It does not include + the special entries <code>'.'</code> and <code>'..'</code> even if they + are present in the folder. This method is meant to mirror + <code>os.listdir</code> as closely as possible. For a list of full <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects, see <a + href="paramiko.SFTPClient-class.html#listdir_attr" + class="link"><code>listdir_attr</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to list (defaults to <code>'.'</code>) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of filenames + <br /><i> + (type=list of str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="listdir_attr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">listdir_attr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span> + </h3> + Return a list containing <a + href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> objects corresponding to + files in the given <code>path</code>. The list is in arbitrary order. + It does not include the special entries <code>'.'</code> and + <code>'..'</code> even if they are present in the folder. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to list (defaults to <code>'.'</code>) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of attributes + <br /><i> + (type=list of <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="lstat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Retrieve information about a file on the remote system, without + following symbolic links (shortcuts). This otherwise behaves exactly + the same as <a href="paramiko.SFTPClient-class.html#stat" + class="link"><code>stat</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the filename to stat. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about the given file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="mkdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>511</span>)</span> + </h3> + Create a folder (directory) named <code>path</code> with numeric + mode <code>mode</code>. The default mode is 0777 (octal). On some + systems, mode is ignored. Where it is used, the current umask value is + first masked out. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + name of the folder to create. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + permissions (posix-style) for the newly-created folder. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="normalize"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">normalize</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return the normalized path (on the server) of a given path. This can + be used to quickly resolve symbolic links or determine what the server + is considering to be the "current folder" (by passing + <code>'.'</code> as <code>path</code>). + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path to be normalized. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + normalized form of the given path. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path can't be resolved on the server + </dl> + </dd></dl> +</td></tr></table> + +<a name="file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>filename</span>, + <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>, + <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span> + </h3> + <p>Open a file on the remote server. The arguments are the same as for + python's built-in <code>file</code> (aka <code>open</code>). A + file-like object is returned, which closely mimics the behavior of a + normal python file object.</p> + <p>The mode indicates how the file is to be opened: <code>'r'</code> + for reading, <code>'w'</code> for writing (truncating an existing + file), <code>'a'</code> for appending, <code>'r+'</code> for + reading/writing, <code>'w+'</code> for reading/writing (truncating an + existing file), <code>'a+'</code> for reading/appending. The python + <code>'b'</code> flag is ignored, since SSH treats all files as binary. + The <code>'U'</code> flag is supported in a compatible way.</p> + <p>Since 1.5.2, an <code>'x'</code> 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 <code>O_EXCL</code> flag in posix.</p> + The file will be buffered in standard python style by default, but + can be altered with the <code>bufsize</code> parameter. <code>0</code> + turns off buffering, <code>1</code> uses line buffering, and any number + greater than 1 (<code>>1</code>) uses that specific buffer size. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to open. + <br /><i> + (type=string)</i> + <dd><code><b>mode</b></code> - + mode (python-style) to open in. + <br /><i> + (type=string)</i> + <dd><code><b>bufsize</b></code> - + desired buffering (-1 = default buffer size) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a file object representing the open file. + <br /><i> + (type=SFTPFile)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file could not be opened. + </dl> + </dd></dl> +</td></tr></table> + +<a name="put"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">put</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>localpath</span>, + <span class=sig-arg>remotepath</span>)</span> + </h3> + <p>Copy a local file (<code>localpath</code>) to the SFTP server as + <code>remotepath</code>. Any exception raised by operations will be + passed through. This method is primarily provided as a convenience.</p> + The SFTP operations use pipelining for speed. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>localpath</b></code> - + the local file to copy + <br /><i> + (type=str)</i> + <dd><code><b>remotepath</b></code> - + the destination path on the SFTP server + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="readlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Return the target of a symbolic link (shortcut). You can use <a + href="paramiko.SFTPClient-class.html#symlink" + class="link"><code>symlink</code></a> to create these. The result may + be either an absolute or relative pathname. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the symbolic link file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + target path. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="remove"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the file at the given path. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path (absolute or relative) of the file to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path refers to a folder (directory). Use <a + href="paramiko.SFTPClient-class.html#rmdir" + class="link"><code>rmdir</code></a> to remove a folder. + </dl> + </dd></dl> +</td></tr></table> + +<a name="rename"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>oldpath</span>, + <span class=sig-arg>newpath</span>)</span> + </h3> + Rename a file or folder from <code>oldpath</code> to + <code>newpath</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>oldpath</b></code> - + existing name of the file or folder. + <br /><i> + (type=string)</i> + <dd><code><b>newpath</b></code> - + new name for the file or folder. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if <code>newpath</code> is a folder, or something else goes + wrong. + </dl> + </dd></dl> +</td></tr></table> + +<a name="rmdir"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the folder named <code>path</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + name of the folder to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + <p>Retrieve information about a file on the remote system. The return + value is an object whose attributes correspond to the attributes of + python's <code>stat</code> structure as returned by + <code>os.stat</code>, except that it contains fewer fields. An SFTP + server may return as much or as little info as it wants, so the results + may vary from server to server.</p> + <p>Unlike a python <code>stat</code> object, the result may not be + accessed as a tuple. This is mostly due to the author's slack + factor.</p> + The fields supported are: <code>st_mode</code>, + <code>st_size</code>, <code>st_uid</code>, <code>st_gid</code>, + <code>st_atime</code>, and <code>st_mtime</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + the filename to stat. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about the given file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="symlink"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>source</span>, + <span class=sig-arg>dest</span>)</span> + </h3> + Create a symbolic link (shortcut) of the <code>source</code> path at + <code>destination</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>source</b></code> - + path of the original file. + <br /><i> + (type=string)</i> + <dd><code><b>dest</b></code> - + path of the newly created symlink. + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="remove"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">unlink</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>)</span> + </h3> + Remove the file at the given path. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path (absolute or relative) of the file to remove. + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the path refers to a folder (directory). Use <a + href="paramiko.SFTPClient-class.html#rmdir" + class="link"><code>rmdir</code></a> to remove a folder. + </dl> + </dd></dl> +</td></tr></table> + +<a name="utime"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">utime</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>path</span>, + <span class=sig-arg>times</span>)</span> + </h3> + Set the access and modified times of the file specified by + <code>path</code>. If <code>times</code> is <code>None</code>, then the + file's access and modified times are set to the current time. + Otherwise, <code>times</code> must be a 2-tuple of numbers, of the form + <code>(atime, mtime)</code>, which is used to set the access and + modified times, respectively. This bizarre API is mimicked from python + for the sake of consistency -- I apologize. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>path</b></code> - + path of the file to modify. + <br /><i> + (type=string)</i> + <dd><code><b>times</b></code> - + <code>None</code> or a tuple of (access time, modified time) + in standard internet epoch time (seconds since 01 January 1970 + GMT). + <br /><i> + (type=tuple of int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Method Details</th></tr> +</table> + +<a name="from_transport"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">from_transport</span>(<span class=sig-arg>selfclass</span>, + <span class=sig-arg>t</span>)</span> + </h3> + Create an SFTP client channel from an open <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>t</b></code> - + an open <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> which is already + authenticated. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> object, referring to an + sftp session (channel) across the transport. + <br /><i> + (type=<a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPError-class.html b/docs/public/paramiko.SFTPError-class.html new file mode 100644 index 0000000..ed3a76d --- /dev/null +++ b/docs/public/paramiko.SFTPError-class.html @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPError</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPError + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPError-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPError-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class SFTPError</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>SFTPError</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPFile-class.html b/docs/public/paramiko.SFTPFile-class.html new file mode 100644 index 0000000..6425f07 --- /dev/null +++ b/docs/public/paramiko.SFTPFile-class.html @@ -0,0 +1,560 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPFile</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPFile + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPFile-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPFile-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPFile</h2> + +<pre class="base-tree"> + <a href="__builtin__.object-class.html"><code>object</code></a> --+ + | +<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+ + | + <b>SFTPFile</b> +</pre><br /> + +<hr/> + +Proxy object for a file on the remote server, in client mode SFTP. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sftp</span>, + <span class=summary-sig-arg>handle</span>, + <span class=summary-sig-arg>mode</span>, + <span class=summary-sig-arg>bufsize</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hash_algorithm</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>length</span>, + <span class=summary-sig-arg>block_size</span>)</span></code> +<br /> +Ask the server for a hash of a section of this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> float +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the timeout in seconds (as a float) associated with the socket +or ssh <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a> used for this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#prefetch" class="summary-sig-name"><code>prefetch</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Pre-fetch the remaining contents of this file in anticipation of +future <a href="paramiko.BufferedFile-class.html#read" +class="link"><code>read</code></a> calls.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>whence</span>)</span></code> +<br /> +Set the file's current position, like stdio's <code>fseek</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#set_pipelined" class="summary-sig-name"><code>set_pipelined</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>pipelined</span>)</span></code> +<br /> +Turn on/off the pipelining of write operations to this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>blocking</span>)</span></code> +<br /> +Set blocking or non-blocking mode on the underiying socket or ssh <a +href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Set a timeout on read/write operations on the underlying socket or ssh +<a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Retrieve information about this file from the remote system.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns an iterator that can be used to iterate over the lines in this +file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Write out any data in the write buffer.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns the next line from the input, or raises +<code>StopIteration</code> when EOF is hit.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read at most <code>size</code> bytes from the file (less if we hit the +end of the file first).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>size</span>)</span></code> +<br /> +Read one entire line from the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sizehint</span>)</span></code> +<br /> +Read all remaining lines using <a +href="paramiko.BufferedFile-class.html#readline" +class="link"><code>readline</code></a> and return them as a list.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the file's current position.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write data to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sequence</span>)</span></code> +<br /> +Write a sequence of strings to the file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Identical to <code>iter(f)</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></b> = <span title="32768">32768 </span></td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from BufferedFile</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0 </span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="check"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">check</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hash_algorithm</span>, + <span class=sig-arg>offset</span>=<span class=sig-default>0</span>, + <span class=sig-arg>length</span>=<span class=sig-default>0</span>, + <span class=sig-arg>block_size</span>=<span class=sig-default>0</span>)</span> + </h3> + <p>Ask the server for a hash of a section of this file. This can be + used to verify a successful upload or download, or for various + rsync-like operations.</p> + <p>The file is hashed from <code>offset</code>, for <code>length</code> + bytes. If <code>length</code> is 0, the remainder of the file is + hashed. Thus, if both <code>offset</code> and <code>length</code> are + zero, the entire file is hashed.</p> + <p>Normally, <code>block_size</code> will be 0 (the default), and this + method will return a byte string representing the requested hash (for + example, a string of length 16 for MD5, or 20 for SHA-1). If a non-zero + <code>block_size</code> is given, each chunk of the file (from + <code>offset</code> to <code>offset + length</code>) of + <code>block_size</code> bytes is computed as a separate hash. The hash + results are all concatenated and returned as a single string.</p> + For example, <code>check('sha1', 0, 1024, 512)</code> will return a + string of length 40. The first 20 bytes will be the SHA-1 of the first + 512 bytes of the file, and the last 20 bytes will be the SHA-1 of the + next 512 bytes. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hash_algorithm</b></code> - + the name of the hash algorithm to use (normally + <code>"sha1"</code> or + <code>"md5"</code>) + <br /><i> + (type=str)</i> + <dd><code><b>offset</b></code> - + offset into the file to begin hashing (0 means to start from + the beginning) + <br /><i> + (type=int or long)</i> + <dd><code><b>length</b></code> - + number of bytes to hash (0 means continue to the end of the + file) + <br /><i> + (type=int or long)</i> + <dd><code><b>block_size</b></code> - + number of bytes to hash per result (must not be less than 256; + 0 means to compute only one hash of the entire segment) + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + string of bytes representing the hash of each block, + concatenated together + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the server doesn't support the "check-file" + extension, or possibly doesn't support the hash algorithm + requested + </dl> +<p><b>Note:</b> Many (most?) servers don't support this extension yet. +</p> + +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>_async</span>=<span class=sig-default>False</span>)</span> + </h3> + Close the file. Future read and write operations will fail. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.BufferedFile-class.html#close"><code>paramiko.BufferedFile.close</code></a> <i>(inherited documentation)</i> +</dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="gettimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span> + </h3> + Returns the timeout in seconds (as a float) associated with the + socket or ssh <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> used for this file. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + float + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#gettimeout" +class="link"><code>Channel.gettimeout</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="prefetch"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">prefetch</span>(<span class=sig-arg>self</span>)</span> + </h3> + Pre-fetch the remaining contents of this file in anticipation of + future <a href="paramiko.BufferedFile-class.html#read" + class="link"><code>read</code></a> calls. If reading the entire file, + pre-fetching can dramatically improve the download speed by avoiding + roundtrip latency. The file's contents are incrementally buffered in a + background thread. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.5.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="seek"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span> + </h3> + Set the file's current position, like stdio's <code>fseek</code>. + Not all file objects support seeking. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position to move to within the file, relative to + <code>whence</code>. + <br /><i> + (type=int)</i> + <dd><code><b>whence</b></code> - + type of movement: 0 = absolute; 1 = relative to the current + position; 2 = relative to the end of the file. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>IOError</b></code> - + if the file doesn't support random access. + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.BufferedFile-class.html#seek"><code>paramiko.BufferedFile.seek</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or +<code>'a+'</code>), any seek operations will be undone at the next write +(as the file position will move back to the end of the file). +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_pipelined"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_pipelined</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>pipelined</span>=<span class=sig-default>True</span>)</span> + </h3> + <p>Turn on/off the pipelining of write operations to this file. When + pipelining is on, paramiko won't wait for the server response after + each write operation. Instead, they're collected as they come in. At + the first non-write operation (including <a + href="paramiko.SFTPFile-class.html#close" + class="link"><code>close</code></a>), all remaining server responses + are collected. This means that if there was an error with one of your + later writes, an exception might be thrown from within <a + href="paramiko.SFTPFile-class.html#close" + class="link"><code>close</code></a> instead of <a + href="paramiko.BufferedFile-class.html#write" + class="link"><code>write</code></a>.</p> + By default, files are <i>not</i> pipelined. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>pipelined</b></code> - + <code>True</code> if pipelining should be turned on for this + file; <code>False</code> otherwise + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="setblocking"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>blocking</span>)</span> + </h3> + Set blocking or non-blocking mode on the underiying socket or ssh <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>blocking</b></code> - + 0 to set non-blocking mode; non-0 to set blocking mode. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#setblocking" +class="link"><code>Channel.setblocking</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="settimeout"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>)</span> + </h3> + Set a timeout on read/write operations on the underlying socket or + ssh <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a pending read/write operation before + raising <code>socket.timeout</code>, or <code>None</code> for no + timeout + <br /><i> + (type=float)</i> + </dd> + </dl> +<p><b>See Also:</b> <a href="paramiko.Channel-class.html#settimeout" +class="link"><code>Channel.settimeout</code></a> +</p> + + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span> + </h3> + Retrieve information about this file from the remote system. This is + exactly like <a href="paramiko.SFTP-class.html#stat" + class="link"><code>SFTP.stat</code></a>, except that it operates on an + already-open file. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an object containing attributes about this file. + <br /><i> + (type=SFTPAttributes)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="MAX_REQUEST_SIZE"></a> +<h3>MAX_REQUEST_SIZE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32768"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32768 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPHandle-class.html b/docs/public/paramiko.SFTPHandle-class.html new file mode 100644 index 0000000..662ee6a --- /dev/null +++ b/docs/public/paramiko.SFTPHandle-class.html @@ -0,0 +1,325 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPHandle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPHandle + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPHandle-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPHandle-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPHandle</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SFTPHandle</b> +</pre><br /> + +<hr/> + +<p>Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation. Each handle has a string representation +used by the client to refer to the underlying file.</p> +Server implementations can (and should) subclass SFTPHandle to +implement features of a file handle, like <a +href="paramiko.SFTPHandle-class.html#stat" +class="link"><code>stat</code></a> or <a +href="paramiko.SFTPHandle-class.html#chattr" +class="link"><code>chattr</code></a>. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Change the attributes of this file.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +When a client closes a file, this method is called on the handle.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>length</span>)</span></code> +<br /> +Read up to <code>length</code> bytes from this file, starting at +position <code>offset</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return an <a href="paramiko.SFTPAttributes-class.html" +class="link"><code>SFTPAttributes</code></a> object referring to this +open file, or an error code.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>offset</span>, + <span class=summary-sig-arg>data</span>)</span></code> +<br /> +Write <code>data</code> into this file at position +<code>offset</code>.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="chattr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + Change the attributes of this file. The <code>attr</code> object + will contain only those fields provided by the client in its request, + so you should check for the presence of fields before using them. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>attr</b></code> - + the attributes to change on this file. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + <p>When a client closes a file, this method is called on the handle. + Normally you would use this method to close the underlying OS level + file object(s).</p> + The default implementation checks for attributes on + <code>self</code> named <code>readfile</code> and/or + <code>writefile</code>, and if either or both are present, their + <code>close()</code> methods are called. This means that if you are + using the default implementations of <a + href="paramiko.SFTPHandle-class.html#read" + class="link"><code>read</code></a> and <a + href="paramiko.SFTPHandle-class.html#write" + class="link"><code>write</code></a>, this method's default + implementation should be fine also. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="read"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>length</span>)</span> + </h3> + <p>Read up to <code>length</code> bytes from this file, starting at + position <code>offset</code>. The offset may be a python long, since + SFTP allows it to be 64 bits.</p> + <p>If the end of the file has been reached, this method may return an + empty string to signify EOF, or it may also return <a + href="../private/paramiko-module.html#SFTP_EOF" + class="link"><code>SFTP_EOF</code></a>.</p> + The default implementation checks for an attribute on + <code>self</code> named <code>readfile</code>, and if present, performs + the read operation on the python file-like object found there. (This is + meant as a time saver for the common case where you are wrapping a + python file object.) + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position in the file to start reading from. + <br /><i> + (type=int or long)</i> + <dd><code><b>length</b></code> - + number of bytes to attempt to read. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + data read from the file, or an SFTP error code. + <br /><i> + (type=str)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="stat"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return an <a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> object referring to this + open file, or an error code. This is equivalent to <a + href="../private/paramiko.SFTPServerInterface-class.html#stat" + class="link"><code>SFTPServerInterface.stat</code></a>, except it's + called on an open file instead of a path. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an attributes object for the given file, or an SFTP error code + (like <a + href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED" + class="link"><code>SFTP_PERMISSION_DENIED</code></a>). + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a> <i>or error + code</i>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="write"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>offset</span>, + <span class=sig-arg>data</span>)</span> + </h3> + <p>Write <code>data</code> into this file at position + <code>offset</code>. Extending the file past its original end is + expected. Unlike python's normal <code>write()</code> methods, this + method cannot do a partial write: it must write all of + <code>data</code> or else return an error.</p> + The default implementation checks for an attribute on + <code>self</code> named <code>writefile</code>, and if present, + performs the write operation on the python file-like object found + there. The attribute is named differently from <code>readfile</code> to + make it easy to implement read-only (or write-only) files, but if both + attributes are present, they should refer to the same file. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>offset</b></code> - + position in the file to start reading from. + <br /><i> + (type=int or long)</i> + <dd><code><b>data</b></code> - + data to write into the file. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_OK" + class="link"><code>SFTP_OK</code></a>. + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SFTPServer-class.html b/docs/public/paramiko.SFTPServer-class.html new file mode 100644 index 0000000..4d4e827 --- /dev/null +++ b/docs/public/paramiko.SFTPServer-class.html @@ -0,0 +1,403 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SFTPServer</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SFTPServer + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPServer-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SFTPServer-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SFTPServer</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a> --+ + | + <a href="__builtin__.object-class.html"><code>object</code></a> --+ | + | | + <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+ + | + <b>SFTPServer</b> +</pre><br /> + +<hr/> + +Server-side SFTP subsystem support. Since this is a <a +href="paramiko.SubsystemHandler-class.html" +class="link"><code>SubsystemHandler</code></a>, it can be (and is meant +to be) set as the handler for <code>"sftp"</code> requests. Use +<a href="paramiko.Transport-class.html#set_subsystem_handler" +class="link"><code>Transport.set_subsystem_handler</code></a> to activate +this class. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>server</span>, + <span class=summary-sig-arg>sftp_si</span>, + <span class="summary-sig-vararg">*largs</span>, + <span class="summary-sig-kwarg">**kwargs</span>)</span></code> +<br /> +The constructor for SFTPServer is meant to be called from within the +<a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> as a subsystem handler.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> int +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#convert_errno" class="summary-sig-name"><code>convert_errno</code></a>(<span class=summary-sig-arg>e</span>)</span></code> +<br /> +Convert an errno value (as from an <code>OSError</code> or +<code>IOError</code>) into a standard SFTP result code. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Perform any cleanup at the end of a subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#set_file_attr" class="summary-sig-name"><code>set_file_attr</code></a>(<span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>attr</span>)</span></code> +<br /> +Change a file's attributes on the local filesystem. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>transport</span>, + <span class=summary-sig-arg>channel</span>)</span></code> +<br /> +Process an ssh subsystem in server mode.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from SubsystemHandler</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> object associated with this +channel and subsystem.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>server</span>, + <span class=sig-arg>sftp_si</span>=<span class=sig-default><class 'paramiko.SFTPServerInterface'></span>, + <span class="sig-vararg">*largs</span>, + <span class="sig-kwarg">**kwargs</span>)</span> + <br /><i>(Constructor)</i> + </h3> + The constructor for SFTPServer is meant to be called from within the + <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> as a subsystem handler. + <code>server</code> and any additional parameters or keyword parameters + are passed from the original call to <a + href="paramiko.Transport-class.html#set_subsystem_handler" + class="link"><code>Transport.set_subsystem_handler</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + channel passed from the <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>server</b></code> - + the server object associated with this channel and + subsystem + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a>)</i> + <dd><code><b>sftp_si</b></code> - + a subclass of <a + href="../private/paramiko.SFTPServerInterface-class.html" + class="link"><code>SFTPServerInterface</code></a> to use for + handling individual requests. + <br /><i> + (type=class)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="finish_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span> + </h3> + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + <dl><dt></dt><dd> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>paramiko.SubsystemHandler.finish_subsystem</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="start_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>transport</span>, + <span class=sig-arg>channel</span>)</span> + </h3> + <p>Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed.</p> + The combination of <code>transport</code> and <code>channel</code> + are unique; this handler corresponds to exactly one <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on one <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>transport</b></code> - + the server-mode <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>paramiko.SubsystemHandler.start_subsystem</code></a> <i>(inherited documentation)</i> +</dd> + </dl> +<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> is closed. This can be done by +checking <a href="paramiko.Transport-class.html#is_active" +class="link"><code>Transport.is_active</code></a> or noticing an EOF on +the <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>. If this method loops forever +without checking for this case, your python interpreter may refuse to +exit because this thread will still be running. +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="convert_errno"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">convert_errno</span>(<span class=sig-arg>e</span>)</span> + </h3> + Convert an errno value (as from an <code>OSError</code> or + <code>IOError</code>) into a standard SFTP result code. This is a + convenience function for trapping exceptions in server code and + returning an appropriate result. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>e</b></code> - + an errno code, as from <code>OSError.errno</code>. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + an SFTP error code like <a + href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE" + class="link"><code>SFTP_NO_SUCH_FILE</code></a>. + <br /><i> + (type=int)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="set_file_attr"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_file_attr</span>(<span class=sig-arg>filename</span>, + <span class=sig-arg>attr</span>)</span> + </h3> + <p>Change a file's attributes on the local filesystem. The contents of + <code>attr</code> are used to change the permissions, owner, group + ownership, and/or modification & access time of the file, depending + on which attributes are present in <code>attr</code>.</p> + This is meant to be a handy helper function for translating SFTP + file requests into local file operations. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to alter (should usually be an absolute + path). + <br /><i> + (type=str)</i> + <dd><code><b>attr</b></code> - + attributes to change. + <br /><i> + (type=<a href="paramiko.SFTPAttributes-class.html" + class="link"><code>SFTPAttributes</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SSHException-class.html b/docs/public/paramiko.SSHException-class.html new file mode 100644 index 0000000..a628f2f --- /dev/null +++ b/docs/public/paramiko.SSHException-class.html @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SSHException</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SSHException + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SSHException-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SSHException-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Class SSHException</h2> + +<pre class="base-tree"> +<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+ + | + <b>SSHException</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a>, + <a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></dd></dl> + +<hr/> + +Exception raised by failures in SSH2 protocol negotiation or logic +errors. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Exception</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SecurityOptions-class.html b/docs/public/paramiko.SecurityOptions-class.html new file mode 100644 index 0000000..a9ca4be --- /dev/null +++ b/docs/public/paramiko.SecurityOptions-class.html @@ -0,0 +1,274 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SecurityOptions</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SecurityOptions + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SecurityOptions-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SecurityOptions-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SecurityOptions</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>SecurityOptions</b> +</pre><br /> + +<hr/> + +<p>Simple object containing the security preferences of an ssh transport. +These are tuples of acceptable ciphers, digests, key types, and key +exchange algorithms, listed in order of preference.</p> +Changing the contents and/or order of these fields affects the +underlying <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> (but only if you change them +before starting the session). If you try to add an algorithm that +paramiko doesn't recognize, <code>ValueError</code> will be raised. If +you try to assign something besides a tuple to one of the fields, +<code>TypeError</code> will be raised. +<hr/> + +<p><b>Since:</b> ivysaur +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>transport</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SecurityOptions-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF PROPERTY SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Property Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></b>: Symmetric encryption ciphers</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></b>: Compression algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></b>: Digest (one-way hash) algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></b>: Key exchange algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><b><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></b>: Public-key algorithms</td></tr></table><br /> + + +<!-- =========== START OF CLASS VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Class Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></b> = <span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"><code>['ciphers', 'digests', 'key_types', 'kex', '<span class="variable-ellipsis">...</span></code> +</span></td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF PROPERTY DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Property Details</th></tr> +</table> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="ciphers"></a> +<h3>ciphers</h3> +Symmetric encryption ciphers +<dl> + <dt></dt> + <dd> + <dl> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="compression"></a> +<h3>compression</h3> +Compression algorithms +<dl> + <dt></dt> + <dd> + <dl> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="digests"></a> +<h3>digests</h3> +Digest (one-way hash) algorithms +<dl> + <dt></dt> + <dd> + <dl> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="kex"></a> +<h3>kex</h3> +Key exchange algorithms +<dl> + <dt></dt> + <dd> + <dl> + </dl> + </dd> +</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + +<a name="key_types"></a> +<h3>key_types</h3> +Public-key algorithms +<dl> + <dt></dt> + <dd> + <dl> + </dl> + </dd> +</dl></td></tr></table><br /> + + +<!-- =========== START OF CLASS VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Class Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="__slots__"></a> +<h3>__slots__</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport'<span class="variable-linewrap">\</span> +] </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.SubsystemHandler-class.html b/docs/public/paramiko.SubsystemHandler-class.html new file mode 100644 index 0000000..05c7bdb --- /dev/null +++ b/docs/public/paramiko.SubsystemHandler-class.html @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.SubsystemHandler</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class SubsystemHandler + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SubsystemHandler-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.SubsystemHandler-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type SubsystemHandler</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <b>SubsystemHandler</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl> + +<hr/> + +<p>Handler for a subsytem in server mode. If you create a subclass of +this class and pass it to <a +href="paramiko.Transport-class.html#set_subsystem_handler" +class="link"><code>Transport.set_subsystem_handler</code></a>, an object +of this class will be created for each request for this subsystem. Each +new object will be executed within its own new thread by calling <a +href="paramiko.SubsystemHandler-class.html#start_subsystem" +class="link"><code>start_subsystem</code></a>. When that method +completes, the channel is closed.</p> +For example, if you made a subclass <code>MP3Handler</code> and +registered it as the handler for subsystem <code>"mp3"</code>, +then whenever a client has successfully authenticated and requests +subsytem <code>"mp3"</code>, an object of class +<code>MP3Handler</code> will be created, and <a +href="paramiko.SubsystemHandler-class.html#start_subsystem" +class="link"><code>start_subsystem</code></a> will be called on it from a +new thread. +<hr/> + +<p><b>Since:</b> ivysaur +</p> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>channel</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>server</span>)</span></code> +<br /> +Create a new handler for a channel.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Perform any cleanup at the end of a subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the <a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> object associated with this +channel and subsystem.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>transport</span>, + <span class=summary-sig-arg>channel</span>)</span></code> +<br /> +Process an ssh subsystem in server mode.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>channel</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>server</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new handler for a channel. This is used by <a + href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> to start up a new handler + when a channel requests this subsystem. You don't need to override this + method, but if you do, be sure to pass the <code>channel</code> and + <code>name</code> parameters through to the original + <code>__init__</code> method here. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>server</b></code> - + the server object for the session that started this + subsystem + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="finish_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span> + </h3> + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + <dl><dt></dt><dd> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_server"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_server</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> object associated with + this channel and subsystem. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>ServerInterface</code></a> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="start_subsystem"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>transport</span>, + <span class=sig-arg>channel</span>)</span> + </h3> + <p>Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed.</p> + The combination of <code>transport</code> and <code>channel</code> + are unique; this handler corresponds to exactly one <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on one <a + href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the requested subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>transport</b></code> - + the server-mode <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. + <br /><i> + (type=<a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>)</i> + <dd><code><b>channel</b></code> - + the channel associated with this subsystem request. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> +<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a +href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> is closed. This can be done by +checking <a href="paramiko.Transport-class.html#is_active" +class="link"><code>Transport.is_active</code></a> or noticing an EOF on +the <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>. If this method loops forever +without checking for this case, your python interpreter may refuse to +exit because this thread will still be running. +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.Transport-class.html b/docs/public/paramiko.Transport-class.html new file mode 100644 index 0000000..562982b --- /dev/null +++ b/docs/public/paramiko.Transport-class.html @@ -0,0 +1,1524 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.Transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Class Transport + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Transport-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.Transport-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Transport</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <a href="threading.Thread-class.html"><code>Thread</code></a> --+ + | + <b>Transport</b> +</pre><br /> + +<hr/> + +An SSH Transport attaches to a stream (usually a socket), negotiates +an encrypted session, authenticates, and then creates stream tunnels, +called <a href="paramiko.Channel-class.html" +class="link"><code>Channel</code></a>s, across the session. Multiple +channels can be multiplexed across a single session (and often are, in +the case of port forwardings). +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>sock</span>)</span></code> +<br /> +Create a new SSH session over an existing socket, or socket-like +object.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Returns a string representation of this object, for debugging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#accept" class="summary-sig-name"><code>accept</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +<br /> +Return the next channel opened by the client over this transport, in +server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#add_server_key" class="summary-sig-name"><code>add_server_key</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>key</span>)</span></code> +<br /> +Add a host key to the list of keys used for server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>handler</span>, + <span class=summary-sig-arg>submethods</span>)</span></code> +<br /> +Authenticate to the server interactively.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_none" class="summary-sig-name"><code>auth_none</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>)</span></code> +<br /> +Try to authenticate to the server using no authentication at all.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_password" class="summary-sig-name"><code>auth_password</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>, + <span class=summary-sig-arg>event</span>, + <span class=summary-sig-arg>fallback</span>)</span></code> +<br /> +Authenticate to the server using a password.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> list +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_publickey" class="summary-sig-name"><code>auth_publickey</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>event</span>)</span></code> +<br /> +Authenticate to the server using a private key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Close this session, and any open channels that are tied to it.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#connect" class="summary-sig-name"><code>connect</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hostkey</span>, + <span class=summary-sig-arg>username</span>, + <span class=summary-sig-arg>password</span>, + <span class=summary-sig-arg>pkey</span>)</span></code> +<br /> +Negotiate an SSH2 session, and optionally verify the server's host key +and authenticate using a password or private key.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> Exception +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_exception" class="summary-sig-name"><code>get_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return any exception that happened during the last server request.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_hexdump" class="summary-sig-name"><code>get_hexdump</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return <code>True</code> if the transport is currently logging hex +dumps of protocol traffic.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> str +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_log_channel" class="summary-sig-name"><code>get_log_channel</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the channel name used for this transport's logging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_remote_server_key" class="summary-sig-name"><code>get_remote_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the host key of the server (in client mode).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_security_options" class="summary-sig-name"><code>get_security_options</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return a <a href="paramiko.SecurityOptions-class.html" +class="link"><code>SecurityOptions</code></a> object which can be used to +tweak the encryption algorithms this transport will permit, and the order +of preference for them.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_server_key" class="summary-sig-name"><code>get_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the active host key, in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_username" class="summary-sig-name"><code>get_username</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return the username this connection is authenticated for.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#global_request" class="summary-sig-name"><code>global_request</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>wait</span>)</span></code> +<br /> +Make a global request to the remote host.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_active" class="summary-sig-name"><code>is_active</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return true if this session is active (open).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_authenticated" class="summary-sig-name"><code>is_authenticated</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Return true if this session is active and authenticated.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#load_server_moduli" class="summary-sig-name"><code>load_server_moduli</code></a>(<span class=summary-sig-arg>filename</span>)</span></code> +<br /> +<i>(optional)</i> Load a file of prime moduli for use in doing +group-exchange key negotiation in server mode. <i>(Static method)</i> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_channel" class="summary-sig-name"><code>open_channel</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>kind</span>, + <span class=summary-sig-arg>dest_addr</span>, + <span class=summary-sig-arg>src_addr</span>)</span></code> +<br /> +Request a new channel to the server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_session" class="summary-sig-name"><code>open_session</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Request a new channel to the server, of type +<code>"session"</code>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_sftp_client" class="summary-sig-name"><code>open_sftp_client</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Create an SFTP client channel from an open transport.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> bool +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#renegotiate_keys" class="summary-sig-name"><code>renegotiate_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +<br /> +Force this session to switch to new keys.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#send_ignore" class="summary-sig-name"><code>send_ignore</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>bytes</span>)</span></code> +<br /> +Send a junk packet across the encrypted link.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_hexdump" class="summary-sig-name"><code>set_hexdump</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>hexdump</span>)</span></code> +<br /> +Turn on/off logging a hex dump of protocol traffic at DEBUG level in +the logs.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>interval</span>)</span></code> +<br /> +Turn on/off keepalive packets (default is off).</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_log_channel" class="summary-sig-name"><code>set_log_channel</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +<br /> +Set the channel for this transport's logging.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_subsystem_handler" class="summary-sig-name"><code>set_subsystem_handler</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>handler</span>, + <span class="summary-sig-vararg">*larg</span>, + <span class="summary-sig-kwarg">**kwarg</span>)</span></code> +<br /> +Set the handler class for a subsystem in server mode.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_client" class="summary-sig-name"><code>start_client</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>event</span>)</span></code> +<br /> +Negotiate a new SSH2 session as a client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_server" class="summary-sig-name"><code>start_server</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>event</span>, + <span class=summary-sig-arg>server</span>)</span></code> +<br /> +Negotiate a new SSH2 session as a server.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="stop_thread"></a><span class="summary-sig"><span class="summary-sig-name">stop_thread</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#use_compression" class="summary-sig-name"><code>use_compression</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>compress</span>)</span></code> +<br /> +Turn on/off compression.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from Thread</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF INSTANCE METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Instance Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>sock</span>)</span> + <br /><i>(Constructor)</i> + </h3> + <p>Create a new SSH session over an existing socket, or socket-like + object. This only creates the Transport object; it doesn't begin the + SSH session yet. Use <a href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a> or <a + href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a> to begin a client session, + or <a href="paramiko.Transport-class.html#start_server" + class="link"><code>start_server</code></a> to begin a server + session.</p> + If the object is not actually a socket, it must have the following + methods: + <ul> + <li> + <code>send(str)</code>: Writes from 1 to <code>len(str)</code> + bytes, and returns an int representing the number of bytes written. + Returns 0 or raises <code>EOFError</code> if the stream has been + closed. + </li> + <li> + <code>recv(int)</code>: Reads from 1 to <code>int</code> bytes + and returns them as a string. Returns 0 or raises + <code>EOFError</code> if the stream has been closed. + </li> + <li> + <code>close()</code>: Closes the socket. + </li> + <li> + <code>settimeout(n)</code>: Sets a (float) timeout on I/O + operations. + </li> + </ul> + For ease of use, you may also pass in an address (as a tuple) or a + host string as the <code>sock</code> argument. (A host string is a + hostname with an optional port (separated by + <code>":"</code>) which will be converted into a tuple of + <code>(hostname, port)</code>.) A socket will be connected to this + address and used for communication. Exceptions from the + <code>socket</code> call may be thrown in this case. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>sock</b></code> - + a socket or socket-like object to create the session over. + <br /><i> + (type=socket)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="__repr__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span> + <br /><i>(Representation operator)</i> + </h3> + Returns a string representation of this object, for debugging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + str + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="threading.Thread-class.html#__repr__"><code>threading.Thread.__repr__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="accept"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">accept</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>timeout</span>=<span class=sig-default>None</span>)</span> + </h3> + Return the next channel opened by the client over this transport, in + server mode. If no channel is opened before the given timeout, + <code>None</code> is returned. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>timeout</b></code> - + seconds to wait for a channel, or <code>None</code> to wait + forever + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new Channel opened by the client + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_server_key</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>key</span>)</span> + </h3> + Add a host key to the list of keys used for server mode. When + behaving as a server, the host key is used to sign certain packets + during the SSH2 negotiation, so that the client can trust that we are + who we say 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>key</b></code> - + the host key to add, usually an <a + href="paramiko.RSAKey-class.html" + class="link"><code>RSAKey</code></a> or <a + href="paramiko.DSSKey-class.html" + class="link"><code>DSSKey</code></a>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="auth_interactive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>handler</span>, + <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span> + </h3> + <p>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.</p> + <p>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.</p> + <p>The handler is expected to be a callable that will handle calls of + the form: <code>handler(title, instructions, prompt_list)</code>. The + <code>title</code> is meant to be a dialog-window title, and the + <code>instructions</code> are user instructions (both are strings). + <code>prompt_list</code> will be a list of prompts, each prompt being a + tuple of <code>(str, bool)</code>. The string is the prompt and the + boolean indicates whether the user text should be echoed.</p> + <p>A sample call would thus be: <code>handler('title', 'instructions', + [('Password:', False)])</code>.</p> + <p>The handler should return a list or tuple of answers to the server's + questions.</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>handler</b></code> - + a handler for responding to server questions + <br /><i> + (type=callable)</i> + <dd><code><b>submethods</b></code> - + a string list of desired submethods (optional) + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty). + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if public-key authentication isn't allowed by the server for + this user + <dd><code><b>SSHException</b></code> - + if the authentication failed + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="auth_none"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_none</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>)</span> + </h3> + Try to authenticate to the server using no authentication at all. + This will almost always fail. It may be useful for determining the list + of authentication types supported by the server, by catching the <a + href="paramiko.BadAuthenticationType-class.html" + class="link"><code>BadAuthenticationType</code></a> exception + raised. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty) + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if "none" authentication isn't allowed by the server + for this user + <dd><code><b>SSHException</b></code> - + if the authentication failed due to a network error + </dl> +<p><b>Since:</b> 1.5 +</p> + + </dd></dl> +</td></tr></table> + +<a name="auth_password"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_password</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>password</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>, + <span class=sig-arg>fallback</span>=<span class=sig-default>True</span>)</span> + </h3> + <p>Authenticate to the server using a password. The username and + password are sent over an encrypted link.</p> + <p>If an <code>event</code> is passed in, this method will return + immediately, and the event will be triggered once authentication + succeeds or fails. On success, <a + href="paramiko.Transport-class.html#is_authenticated" + class="link"><code>is_authenticated</code></a> will return + <code>True</code>. On failure, you may use <a + href="paramiko.Transport-class.html#get_exception" + class="link"><code>get_exception</code></a> to get more detailed error + information.</p> + <p>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.</p> + <p>Since 1.5, if no event is passed and <code>fallback</code> is + <code>True</code> (the default), if the server doesn't support plain + password authentication but does support so-called + "keyboard-interactive" mode, an attempt will be made to + authenticate using this interactive mode. If it fails, the normal + exception will be thrown as if the attempt had never been 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.)</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>password</b></code> - + the password to authenticate with + <br /><i> + (type=string)</i> + <dd><code><b>event</b></code> - + an event to trigger when the authentication attempt is + complete (whether it was successful or not) + <br /><i> + (type=threading.Event)</i> + <dd><code><b>fallback</b></code> - + <code>True</code> if an attempt at an automated + "interactive" password auth should be made if the + server doesn't support normal password auth + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty) + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if password authentication isn't allowed by the server for + this user (and no event was passed in) + <dd><code><b>SSHException</b></code> - + if the authentication failed (and no event was passed in) + </dl> + </dd></dl> +</td></tr></table> + +<a name="auth_publickey"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">auth_publickey</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>username</span>, + <span class=sig-arg>key</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>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.</p> + <p>If an <code>event</code> is passed in, this method will return + immediately, and the event will be triggered once authentication + succeeds or fails. On success, <a + href="paramiko.Transport-class.html#is_authenticated" + class="link"><code>is_authenticated</code></a> will return + <code>True</code>. On failure, you may use <a + href="paramiko.Transport-class.html#get_exception" + class="link"><code>get_exception</code></a> to get more detailed error + information.</p> + <p>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.</p> + 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>username</b></code> - + the username to authenticate as + <br /><i> + (type=string)</i> + <dd><code><b>key</b></code> - + the private key to authenticate with + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + <dd><code><b>event</b></code> - + an event to trigger when the authentication attempt is + complete (whether it was successful or not) + <br /><i> + (type=threading.Event)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + list of auth types permissible for the next stage of + authentication (normally empty). + <br /><i> + (type=list)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>BadAuthenticationType</b></code> - + if public-key authentication isn't allowed by the server for + this user (and no event was passed in). + <dd><code><b>SSHException</b></code> - + if the authentication failed (and no event was passed in). + </dl> + </dd></dl> +</td></tr></table> + +<a name="close"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span> + </h3> + Close this session, and any open channels that are tied to it. + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="connect"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">connect</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hostkey</span>=<span class=sig-default>None</span>, + <span class=sig-arg>username</span>=<span class=sig-default>''</span>, + <span class=sig-arg>password</span>=<span class=sig-default>None</span>, + <span class=sig-arg>pkey</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate an SSH2 session, and optionally verify the server's host + key and authenticate using a password or private key. This is a + shortcut for <a href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>, <a + href="paramiko.Transport-class.html#get_remote_server_key" + class="link"><code>get_remote_server_key</code></a>, and <a + href="paramiko.Transport-class.html#auth_password" + class="link"><code>Transport.auth_password</code></a> or <a + href="paramiko.Transport-class.html#auth_publickey" + class="link"><code>Transport.auth_publickey</code></a>. Use those + methods if you want more control.</p> + You can use this method immediately after creating a Transport to + negotiate encryption with a server. If it fails, an exception will be + thrown. On success, the method will return cleanly, and an encrypted + session exists. You may immediately call <a + href="paramiko.Transport-class.html#open_channel" + class="link"><code>open_channel</code></a> or <a + href="paramiko.Transport-class.html#open_session" + class="link"><code>open_session</code></a> to get a <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> object, which is used for data + transfer. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hostkey</b></code> - + the host key expected from the server, or <code>None</code> if + you don't want to do host key verification. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + <dd><code><b>username</b></code> - + the username to authenticate as. + <br /><i> + (type=str)</i> + <dd><code><b>password</b></code> - + a password to use for authentication, if you want to use + password authentication; otherwise <code>None</code>. + <br /><i> + (type=str)</i> + <dd><code><b>pkey</b></code> - + a private key to use for authentication, if you want to use + private key authentication; otherwise <code>None</code>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if the SSH2 negotiation fails, the host key supplied by the + server is incorrect, or authentication fails. + </dl> +<p><b>Note:</b> If you fail to supply a password or private key, this method may +succeed, but a subsequent <a +href="paramiko.Transport-class.html#open_channel" +class="link"><code>open_channel</code></a> or <a +href="paramiko.Transport-class.html#open_session" +class="link"><code>open_session</code></a> call may fail because you +haven't authenticated yet. +</p> + +<p><b>Since:</b> doduo +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_exception"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_exception</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return any exception that happened during the last server request. + This can be used to fetch more specific error information after using + calls like <a href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>. The exception (if any) is + cleared after this call. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an exception, or <code>None</code> if there is no stored + exception. + <br /><i> + (type=Exception)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_hexdump"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_hexdump</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return <code>True</code> if the transport is currently logging hex + dumps of protocol traffic. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + <code>True</code> if hex dumps are being logged + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.4 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_log_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_log_channel</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the channel name used for this transport's logging. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + channel name. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.2 +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_remote_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_remote_server_key</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the host key of the server (in client mode). + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + public key of the remote server. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if no session is currently active. + </dl> +<p><b>Note:</b> Previously this call returned a tuple of (key type, key string). You +can get the same effect by calling <a +href="../private/paramiko.PKey-class.html#get_name" +class="link"><code>PKey.get_name</code></a> for the key type, and +<code>str(key)</code> for the key string. +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_security_options"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_security_options</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return a <a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a> object which can be used + to tweak the encryption algorithms this transport will permit, and the + order of preference for them. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + an object that can be used to change the preferred algorithms + for encryption, digest (hash), public key, and key exchange. + <br /><i> + (type=<a href="paramiko.SecurityOptions-class.html" + class="link"><code>SecurityOptions</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> ivysaur +</p> + + </dd></dl> +</td></tr></table> + +<a name="get_server_key"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_server_key</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the active host key, in server mode. After negotiating with + the client, this method will return the negotiated host key. If only + one type of host key was set with <a + href="paramiko.Transport-class.html#add_server_key" + class="link"><code>add_server_key</code></a>, that's the only key that + will ever be returned. But in cases where you have set more than one + type of host key (for example, an RSA key and a DSS key), the key type + will be negotiated by the client, and this method will return the key + of the type agreed on. If the host key has not been negotiated yet, + <code>None</code> is returned. In client mode, the behavior is + undefined. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + host key of the type negotiated by the client, or + <code>None</code>. + <br /><i> + (type=<a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="get_username"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">get_username</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return the username this connection is authenticated for. If the + session is not authenticated (or authentication failed), this method + returns <code>None</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + username that was authenticated, or <code>None</code>. + <br /><i> + (type=string)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="global_request"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">global_request</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>data</span>=<span class=sig-default>None</span>, + <span class=sig-arg>wait</span>=<span class=sig-default>True</span>)</span> + </h3> + Make a global request to the remote host. These are normally + extensions to the SSH2 protocol. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + name of the request. + <br /><i> + (type=str)</i> + <dd><code><b>data</b></code> - + an optional tuple containing additional data to attach to the + request. + <br /><i> + (type=tuple)</i> + <dd><code><b>wait</b></code> - + <code>True</code> if this method should not return until a + response is received; <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a <a href="paramiko.Message-class.html" + class="link"><code>Message</code></a> containing possible + additional data if the request was successful (or an empty <a + href="paramiko.Message-class.html" + class="link"><code>Message</code></a> if <code>wait</code> was + <code>False</code>); <code>None</code> if the request was + denied. + <br /><i> + (type=<a href="paramiko.Message-class.html" + class="link"><code>Message</code></a>)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="is_active"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">is_active</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return true if this session is active (open). + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the session is still active (open); False if the + session is closed. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="is_authenticated"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">is_authenticated</span>(<span class=sig-arg>self</span>)</span> + </h3> + Return true if this session is active and authenticated. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the session is still open and has been authenticated + successfully; False if authentication failed and/or the session + is closed. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_channel</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>kind</span>, + <span class=sig-arg>dest_addr</span>=<span class=sig-default>None</span>, + <span class=sig-arg>src_addr</span>=<span class=sig-default>None</span>)</span> + </h3> + Request a new channel to the server. <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>s are socket-like objects used for + the actual transfer of data across the session. You may only request a + channel after negotiating encryption (using <a + href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a> or <a + href="paramiko.Transport-class.html#start_client" + class="link"><code>start_client</code></a>) and authenticating. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>kind</b></code> - + the kind of channel requested (usually + <code>"session"</code>, + <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code>). + <br /><i> + (type=str)</i> + <dd><code><b>dest_addr</b></code> - + the destination address of this port forwarding, if + <code>kind</code> is <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code> (ignored for other channel + types). + <br /><i> + (type=(str, int))</i> + <dd><code><b>src_addr</b></code> - + the source address of this port forwarding, if + <code>kind</code> is <code>"forwarded-tcpip"</code> or + <code>"direct-tcpip"</code>. + <br /><i> + (type=(str, int))</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on success, or + <code>None</code> if the request is rejected or the session ends + prematurely. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_session"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_session</span>(<span class=sig-arg>self</span>)</span> + </h3> + Request a new channel to the server, of type + <code>"session"</code>. This is just an alias for + <code>open_channel('session')</code>. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a> on success, or + <code>None</code> if the request is rejected or the session ends + prematurely. + <br /><i> + (type=<a href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="open_sftp_client"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">open_sftp_client</span>(<span class=sig-arg>self</span>)</span> + </h3> + Create an SFTP client channel from an open transport. On success, an + SFTP session will be opened with the remote host, and a new SFTPClient + object will be returned. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + a new <a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a> object, referring to an + sftp session (channel) across this transport + <br /><i> + (type=<a href="paramiko.SFTPClient-class.html" + class="link"><code>SFTPClient</code></a>)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="renegotiate_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">renegotiate_keys</span>(<span class=sig-arg>self</span>)</span> + </h3> + Force this session to switch to new keys. Normally this is done + automatically after the session hits a certain number of packets or + bytes sent or received, but this method gives you the option of forcing + new keys whenever you want. Negotiating new keys causes a pause in + traffic both ways as the two sides swap keys and do computations. This + method returns when the session has switched to new keys, or the + session has died mid-negotiation. + <dl><dt></dt><dd> + <dl><dt><b>Returns:</b></dt> + <dd> + True if the renegotiation was successful, and the link is + using new keys; False if the session dropped during + renegotiation. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="send_ignore"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">send_ignore</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>bytes</span>=<span class=sig-default>None</span>)</span> + </h3> + Send a junk packet across the encrypted link. This is sometimes used + to add "noise" to a connection to confuse would-be attackers. + It can also be used as a keep-alive for long lived connections + traversing firewalls. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>bytes</b></code> - + the number of random bytes to send in the payload of the + ignored packet -- defaults to a random number from 10 to 41. + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_hexdump"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_hexdump</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>hexdump</span>)</span> + </h3> + Turn on/off logging a hex dump of protocol traffic at DEBUG level in + the logs. Normally you would want this off (which is the default), but + if you are debugging something, it may be useful. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hexdump</b></code> - + <code>True</code> to log protocol traffix (in hex) to the log; + <code>False</code> otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="set_keepalive"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>interval</span>)</span> + </h3> + Turn on/off keepalive packets (default is off). If this is set, + after <code>interval</code> 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. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>interval</b></code> - + seconds to wait before sending a keepalive packet (or 0 to + disable keepalives). + <br /><i> + (type=int)</i> + </dd> + </dl> +<p><b>Since:</b> fearow +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_log_channel"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_log_channel</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>)</span> + </h3> + Set the channel for this transport's logging. The default is + <code>"paramiko.transport"</code> but it can be set to + anything you want. (See the <code>logging</code> module for more info.) + SSH Channels will log to a sub-channel of the one specified. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + new channel name for logging. + <br /><i> + (type=str)</i> + </dd> + </dl> +<p><b>Since:</b> 1.1 +</p> + + </dd></dl> +</td></tr></table> + +<a name="set_subsystem_handler"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">set_subsystem_handler</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>, + <span class=sig-arg>handler</span>, + <span class="sig-vararg">*larg</span>, + <span class="sig-kwarg">**kwarg</span>)</span> + </h3> + <p>Set the handler class for a subsystem in server mode. If a request + for this subsystem is made on an open ssh channel later, this handler + will be constructed and called -- see <a + href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> for more detailed + documentation.</p> + Any extra parameters (including keyword arguments) are saved and + passed to the <a href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> constructor later. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of the subsystem. + <br /><i> + (type=str)</i> + <dd><code><b>handler</b></code> - + subclass of <a href="paramiko.SubsystemHandler-class.html" + class="link"><code>SubsystemHandler</code></a> that handles this + subsystem. + <br /><i> + (type=class)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="start_client"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_client</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate a new SSH2 session as a client. This is the first step + after creating a new <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a>. A separate thread is created + for protocol negotiation.</p> + <p>If an event is passed in, this method returns immediately. When + negotiation is done (successful or not), the given <code>Event</code> + will be triggered. On failure, <a + href="paramiko.Transport-class.html#is_active" + class="link"><code>is_active</code></a> will return + <code>False</code>.</p> + <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method + will not return until negotation is done. On success, the method + returns normally. Otherwise an SSHException is raised.</p> + After a successful negotiation, you will usually want to + authenticate, calling <a + href="paramiko.Transport-class.html#auth_password" + class="link"><code>auth_password</code></a> or <a + href="paramiko.Transport-class.html#auth_publickey" + class="link"><code>auth_publickey</code></a>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>event</b></code> - + an event to trigger when negotiation is complete + (optional) + <br /><i> + (type=threading.Event)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if negotiation fails (and no <code>event</code> was passed + in) + </dl> +<p><b>Notes:</b> +<ul> + <li><a href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a> is a simpler method for connecting +as a client. +</li> + <li>After calling this method (or <a +href="paramiko.Transport-class.html#start_server" +class="link"><code>start_server</code></a> or <a +href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a>), you should no longer directly +read from or write to the original socket object. + + </li> +</ul></p> + + </dd></dl> +</td></tr></table> + +<a name="start_server"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">start_server</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>event</span>=<span class=sig-default>None</span>, + <span class=sig-arg>server</span>=<span class=sig-default>None</span>)</span> + </h3> + <p>Negotiate a new SSH2 session as a server. This is the first step + after creating a new <a href="paramiko.Transport-class.html" + class="link"><code>Transport</code></a> and setting up your server host + key(s). A separate thread is created for protocol negotiation.</p> + <p>If an event is passed in, this method returns immediately. When + negotiation is done (successful or not), the given <code>Event</code> + will be triggered. On failure, <a + href="paramiko.Transport-class.html#is_active" + class="link"><code>is_active</code></a> will return + <code>False</code>.</p> + <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method + will not return until negotation is done. On success, the method + returns normally. Otherwise an SSHException is raised.</p> + <p>After a successful negotiation, the client will need to + authenticate. Override the methods <a + href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" + class="link"><code>get_allowed_auths</code></a>, <a + href="../private/paramiko.ServerInterface-class.html#check_auth_none" + class="link"><code>check_auth_none</code></a>, <a + href="../private/paramiko.ServerInterface-class.html#check_auth_password" + class="link"><code>check_auth_password</code></a>, and <a + href="../private/paramiko.ServerInterface-class.html#check_auth_publickey" + class="link"><code>check_auth_publickey</code></a> in the given + <code>server</code> object to control the authentication process.</p> + After a successful authentication, the client should request to open + a channel. Override <a + href="../private/paramiko.ServerInterface-class.html#check_channel_request" + class="link"><code>check_channel_request</code></a> in the given + <code>server</code> object to allow channels to be opened. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>event</b></code> - + an event to trigger when negotiation is complete. + <br /><i> + (type=threading.Event)</i> + <dd><code><b>server</b></code> - + an object used to perform authentication and create <a + href="paramiko.Channel-class.html" + class="link"><code>Channel</code></a>s. + <br /><i> + (type=<a href="../private/paramiko.ServerInterface-class.html" + class="link"><code>server.ServerInterface</code></a>)</i> + </dd> + </dl> + <dl><dt><b>Raises:</b></dt> + <dd><code><b>SSHException</b></code> - + if negotiation fails (and no <code>event</code> was passed + in) + </dl> +<p><b>Note:</b> After calling this method (or <a +href="paramiko.Transport-class.html#start_client" +class="link"><code>start_client</code></a> or <a +href="paramiko.Transport-class.html#connect" +class="link"><code>connect</code></a>), you should no longer directly +read from or write to the original socket object. +</p> + + </dd></dl> +</td></tr></table> + +<a name="use_compression"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">use_compression</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>compress</span>=<span class=sig-default>True</span>)</span> + </h3> + Turn on/off compression. This will only have an affect before + starting the transport (ie before calling <a + href="paramiko.Transport-class.html#connect" + class="link"><code>connect</code></a>, etc). By default, compression is + off since it negatively affects interactive sessions and is not fully + tested. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>compress</b></code> - + <code>True</code> to ask the remote client/server to compress + traffic; <code>False</code> to refuse compression + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Since:</b> 1.5.2 +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF STATIC METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Static Method Details</th></tr> +</table> + +<a name="load_server_moduli"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">load_server_moduli</span>(<span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span> + </h3> + <p><i>(optional)</i> Load a file of prime moduli for use in doing + group-exchange key negotiation in server mode. It's a rather obscure + option and can be safely ignored.</p> + In server mode, the remote client may request + "group-exchange" key negotiation, which asks the server to + send a random prime number that fits certain criteria. These primes are + pretty difficult to compute, so they can't be generated on demand. But + many systems contain a file of suitable primes (usually named something + like <code>/etc/ssh/moduli</code>). If you call + <code>load_server_moduli</code> and it returns <code>True</code>, then + this file of primes has been loaded and we will support + "group-exchange" in server mode. Otherwise server mode will + just claim that it doesn't support that method of key negotiation. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + optional path to the moduli file, if you happen to know that + it's not in a standard location. + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + True if a moduli file was successfully loaded; False + otherwise. + <br /><i> + (type=bool)</i> + </dd> + </dl> +<p><b>Note:</b> This has no effect when used in client mode. +</p> + +<p><b>Since:</b> doduo +</p> + + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.agent-module.html b/docs/public/paramiko.agent-module.html new file mode 100644 index 0000000..560432a --- /dev/null +++ b/docs/public/paramiko.agent-module.html @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module agent + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.agent-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.agent-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.agent</h2> + +SSH Agent interface for Unix clients. +<hr/> + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></b> = <span title="12">12 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></b> = <span title="14">14 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></b> = <span title="11">11 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></b> = <span title="13">13 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENT_IDENTITIES_ANSWER"></a> +<h3>SSH2_AGENT_IDENTITIES_ANSWER</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="12"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +12 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENT_SIGN_RESPONSE"></a> +<h3>SSH2_AGENT_SIGN_RESPONSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="14"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +14 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENTC_REQUEST_IDENTITIES"></a> +<h3>SSH2_AGENTC_REQUEST_IDENTITIES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="11"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +11 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SSH2_AGENTC_SIGN_REQUEST"></a> +<h3>SSH2_AGENTC_SIGN_REQUEST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="13"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +13 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.dsskey-module.html b/docs/public/paramiko.dsskey-module.html new file mode 100644 index 0000000..f600c89 --- /dev/null +++ b/docs/public/paramiko.dsskey-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.dsskey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module dsskey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.dsskey-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.dsskey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.dsskey</h2> + +<a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.file-module.html b/docs/public/paramiko.file-module.html new file mode 100644 index 0000000..4cb6c90 --- /dev/null +++ b/docs/public/paramiko.file-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module file + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.file-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.file-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.file</h2> + +BufferedFile. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.message-module.html b/docs/public/paramiko.message-module.html new file mode 100644 index 0000000..2ccf4d9 --- /dev/null +++ b/docs/public/paramiko.message-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module message + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.message-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.message-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.message</h2> + +Implementation of an SSH2 "message". +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.pkey-module.html b/docs/public/paramiko.pkey-module.html new file mode 100644 index 0000000..e7aac95 --- /dev/null +++ b/docs/public/paramiko.pkey-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pkey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module pkey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.pkey-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.pkey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.pkey</h2> + +Common API for all public keys. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.rsakey-module.html b/docs/public/paramiko.rsakey-module.html new file mode 100644 index 0000000..b287187 --- /dev/null +++ b/docs/public/paramiko.rsakey-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.rsakey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module rsakey + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.rsakey-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.rsakey-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.rsakey</h2> + +<a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.server-module.html b/docs/public/paramiko.server-module.html new file mode 100644 index 0000000..b283866 --- /dev/null +++ b/docs/public/paramiko.server-module.html @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module server + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.server-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.server-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.server</h2> + +<a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></b></td> + <td>A query (set of prompts) for a user during interactive +authentication.</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.server.InteractiveQuery-class.html b/docs/public/paramiko.server.InteractiveQuery-class.html new file mode 100644 index 0000000..6a96be3 --- /dev/null +++ b/docs/public/paramiko.server.InteractiveQuery-class.html @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server.InteractiveQuery</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="paramiko.server-module.html">Module server</a> :: + Class InteractiveQuery + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.server.InteractiveQuery-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.server.InteractiveQuery-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type InteractiveQuery</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>InteractiveQuery</b> +</pre><br /> + +<hr/> + +A query (set of prompts) for a user during interactive +authentication. +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>instructions</span>, + <span class="summary-sig-vararg">*prompts</span>)</span></code> +<br /> +Create a new interactive query to send to the client.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt" class="summary-sig-name"><code>add_prompt</code></a>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>prompt</span>, + <span class=summary-sig-arg>echo</span>)</span></code> +<br /> +Add a prompt to this query.</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF METHOD DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Method Details</th></tr> +</table> + +<a name="__init__"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>name</span>=<span class=sig-default>''</span>, + <span class=sig-arg>instructions</span>=<span class=sig-default>''</span>, + <span class="sig-vararg">*prompts</span>)</span> + <br /><i>(Constructor)</i> + </h3> + Create a new interactive query to send to the client. The name and + instructions are optional, but are generally displayed to the end user. + A list of prompts may be included, or they may be added via the <a + href="paramiko.server.InteractiveQuery-class.html#add_prompt" + class="link"><code>add_prompt</code></a> method. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>name</b></code> - + name of this query + <br /><i> + (type=str)</i> + <dd><code><b>instructions</b></code> - + user instructions (usually short) about this query + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Overrides:</b></dt> + <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="add_prompt"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">add_prompt</span>(<span class=sig-arg>self</span>, + <span class=sig-arg>prompt</span>, + <span class=sig-arg>echo</span>=<span class=sig-default>True</span>)</span> + </h3> + Add a prompt to this query. The prompt should be a (reasonably + short) string. Multiple prompts can be added to the same query. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>prompt</b></code> - + the user prompt + <br /><i> + (type=str)</i> + <dd><code><b>echo</b></code> - + <code>True</code> (default) if the user's response should be + echoed; <code>False</code> if not (for a password or similar) + <br /><i> + (type=bool)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp-module.html b/docs/public/paramiko.sftp-module.html new file mode 100644 index 0000000..66fb99e --- /dev/null +++ b/docs/public/paramiko.sftp-module.html @@ -0,0 +1,1060 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp</h2> + + +<!-- =========== START OF VARIABLE SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Variable Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></b> = <span title="105">105 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></b> = <span title="103">103 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></b> = <span title="200">200 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></b> = <span title="201">201 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></b> = <span title="10">10 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></b> = <span title="102">102 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></b> = <span title="7">7 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></b> = <span title="14">14 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></b> = <span title="104">104 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></b> = <span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"><code>{1: 'init', 2: 'version', 3: 'open', 4: 'clo<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></b> = <span title="3">3 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></b> = <span title="11">11 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></b> = <span title="5">5 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></b> = <span title="12">12 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></b> = <span title="19">19 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></b> = <span title="16">16 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></b> = <span title="13">13 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></b> = <span title="18">18 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></b> = <span title="15">15 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></b> = <span title="9">9 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></b> = <span title="17">17 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></b> = <span title="101">101 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></b> = <span title="20">20 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></b> = <span title="6">6 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></b> = <span title="5">5 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></b> = <span title="7">7 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></b> = <span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"><code>['Success', 'End of file', 'No such file', '<span class="variable-ellipsis">...</span></code> +</span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></b> = <span title="4">4 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></b> = <span title="32">32 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></b> = <span title="1">1 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></b> = <span title="16">16 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></b> = <span title="6">6 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></b> = <span title="2">2 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></b> = <span title="0">0 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></b> = <span title="8">8 </span></td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td> +<td><b><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></b> = <span title="3">3 </span></td></tr> +</table><br /> + + +<!-- =========== START OF VARIABLE DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Variable Details</th></tr> +</table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_ATTRS"></a> +<h3>CMD_ATTRS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="105"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +105 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_CLOSE"></a> +<h3>CMD_CLOSE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_DATA"></a> +<h3>CMD_DATA</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="103"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +103 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_EXTENDED"></a> +<h3>CMD_EXTENDED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="200"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +200 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_EXTENDED_REPLY"></a> +<h3>CMD_EXTENDED_REPLY</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="201"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +201 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_FSETSTAT"></a> +<h3>CMD_FSETSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="10"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +10 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_FSTAT"></a> +<h3>CMD_FSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_HANDLE"></a> +<h3>CMD_HANDLE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="102"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +102 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_INIT"></a> +<h3>CMD_INIT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_LSTAT"></a> +<h3>CMD_LSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="7"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +7 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_MKDIR"></a> +<h3>CMD_MKDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="14"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +14 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_NAME"></a> +<h3>CMD_NAME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="104"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +104 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_NAMES"></a> +<h3>CMD_NAMES</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>dict</code> + + </dd> +<span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +{1: 'init', + 2: 'version', + 3: 'open', + 4: 'close', + 5: 'read', + 6: 'write', + 7: 'lstat', + 8: 'fstat', +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_OPEN"></a> +<h3>CMD_OPEN</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_OPENDIR"></a> +<h3>CMD_OPENDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="11"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +11 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READ"></a> +<h3>CMD_READ</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="5"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +5 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READDIR"></a> +<h3>CMD_READDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="12"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +12 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_READLINK"></a> +<h3>CMD_READLINK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="19"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +19 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_REALPATH"></a> +<h3>CMD_REALPATH</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="16"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +16 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_REMOVE"></a> +<h3>CMD_REMOVE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="13"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +13 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_RENAME"></a> +<h3>CMD_RENAME</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="18"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +18 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_RMDIR"></a> +<h3>CMD_RMDIR</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="15"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +15 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_SETSTAT"></a> +<h3>CMD_SETSTAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="9"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +9 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_STAT"></a> +<h3>CMD_STAT</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="17"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +17 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_STATUS"></a> +<h3>CMD_STATUS</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="101"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +101 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_SYMLINK"></a> +<h3>CMD_SYMLINK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="20"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +20 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_VERSION"></a> +<h3>CMD_VERSION</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="CMD_WRITE"></a> +<h3>CMD_WRITE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="6"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +6 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_BAD_MESSAGE"></a> +<h3>SFTP_BAD_MESSAGE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="5"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +5 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_CONNECTION_LOST"></a> +<h3>SFTP_CONNECTION_LOST</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="7"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +7 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_DESC"></a> +<h3>SFTP_DESC</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>list</code> + + </dd> +<span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +['Success', + 'End of file', + 'No such file', + 'Permission denied', + 'Failure', + 'Bad message', + 'No connection', + 'Connection lost', +<span class="variable-ellipsis">...</span> </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_EOF"></a> +<h3>SFTP_EOF</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FAILURE"></a> +<h3>SFTP_FAILURE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_APPEND"></a> +<h3>SFTP_FLAG_APPEND</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="4"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +4 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_CREATE"></a> +<h3>SFTP_FLAG_CREATE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_EXCL"></a> +<h3>SFTP_FLAG_EXCL</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="32"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +32 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_READ"></a> +<h3>SFTP_FLAG_READ</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="1"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +1 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_TRUNC"></a> +<h3>SFTP_FLAG_TRUNC</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="16"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +16 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_FLAG_WRITE"></a> +<h3>SFTP_FLAG_WRITE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_NO_CONNECTION"></a> +<h3>SFTP_NO_CONNECTION</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="6"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +6 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_NO_SUCH_FILE"></a> +<h3>SFTP_NO_SUCH_FILE</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="2"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +2 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_OK"></a> +<h3>SFTP_OK</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="0"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +0 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_OP_UNSUPPORTED"></a> +<h3>SFTP_OP_UNSUPPORTED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="8"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +8 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td> +<a name="SFTP_PERMISSION_DENIED"></a> +<h3>SFTP_PERMISSION_DENIED</h3> +<dl> + <dt></dt> + <dd> + <dl> + <dt><b>Type:</b></dt> + <dd> + <code>int</code> + + </dd> +<span title="3"> <dt><b>Value:</b></dt> + <dd><table><tr><td> +<pre class="variable"> +3 </pre> + </td></tr></table></dd> +</span> </dl> + </dd> +</dl></td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_attr-module.html b/docs/public/paramiko.sftp_attr-module.html new file mode 100644 index 0000000..7ff2add --- /dev/null +++ b/docs/public/paramiko.sftp_attr-module.html @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_attr</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_attr + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_attr-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_attr-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_attr</h2> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_client-module.html b/docs/public/paramiko.sftp_client-module.html new file mode 100644 index 0000000..a82e15f --- /dev/null +++ b/docs/public/paramiko.sftp_client-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_client</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_client + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_client-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_client-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_client</h2> + +Client-mode SFTP support. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_file-module.html b/docs/public/paramiko.sftp_file-module.html new file mode 100644 index 0000000..3d2f402 --- /dev/null +++ b/docs/public/paramiko.sftp_file-module.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_file + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_file-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_file-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_file</h2> + +<a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a> +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_handle-module.html b/docs/public/paramiko.sftp_handle-module.html new file mode 100644 index 0000000..2a75e59 --- /dev/null +++ b/docs/public/paramiko.sftp_handle-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_handle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_handle + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_handle-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_handle-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_handle</h2> + +Abstraction of an SFTP file handle (for server mode). +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_server-module.html b/docs/public/paramiko.sftp_server-module.html new file mode 100644 index 0000000..06183af --- /dev/null +++ b/docs/public/paramiko.sftp_server-module.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_server + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_server-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_server-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_server</h2> + +Server-mode SFTP support. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.sftp_si-module.html b/docs/public/paramiko.sftp_si-module.html new file mode 100644 index 0000000..121d97e --- /dev/null +++ b/docs/public/paramiko.sftp_si-module.html @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_si</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module sftp_si + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_si-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.sftp_si-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.sftp_si</h2> + +<a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.transport-module.html b/docs/public/paramiko.transport-module.html new file mode 100644 index 0000000..42d378f --- /dev/null +++ b/docs/public/paramiko.transport-module.html @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module transport + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.transport-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.transport-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.transport</h2> + +<a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol. +<hr/> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.util-module.html b/docs/public/paramiko.util-module.html new file mode 100644 index 0000000..a7ad4cd --- /dev/null +++ b/docs/public/paramiko.util-module.html @@ -0,0 +1,369 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + Module util + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.util-module.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.util-module.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE DESCRIPTION =========== --> +<h2 class="module">Module paramiko.util</h2> + +Useful functions used by the rest of paramiko. +<hr/> + +<!-- =========== START OF CLASSES =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Classes</th></tr> +<tr><td width="15%"> + <b><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></b></td> + <td> </td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Function Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="bit_length"></a><span class="summary-sig"><span class="summary-sig-name">bit_length</span>(<span class=summary-sig-arg>n</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#deflate_long" class="summary-sig-name"><code>deflate_long</code></a>(<span class=summary-sig-arg>n</span>, + <span class=summary-sig-arg>add_sign_padding</span>)</span></code> +<br /> +turns a long-int into a normalized byte string (adapted from +Crypto.Util.number)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary"></a><span class="summary-sig"><span class="summary-sig-name">format_binary</span>(<span class=summary-sig-arg>data</span>, + <span class=summary-sig-arg>prefix</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary_line"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_line</span>(<span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="format_binary_weird"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_weird</span>(<span class=summary-sig-arg>data</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> string +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#generate_key_bytes" class="summary-sig-name"><code>generate_key_bytes</code></a>(<span class=summary-sig-arg>hashclass</span>, + <span class=summary-sig-arg>salt</span>, + <span class=summary-sig-arg>key</span>, + <span class=summary-sig-arg>nbytes</span>)</span></code> +<br /> +Given a password, passphrase, or other human-source key, scramble it +through a secure hash into some keyworthy bytes.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_logger"></a><span class="summary-sig"><span class="summary-sig-name">get_logger</span>(<span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="get_thread_id"></a><span class="summary-sig"><span class="summary-sig-name">get_thread_id</span>()</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#hexify" class="summary-sig-name"><code>hexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code> +<br /> +turn a string into a hex sequence</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#inflate_long" class="summary-sig-name"><code>inflate_long</code></a>(<span class=summary-sig-arg>s</span>, + <span class=summary-sig-arg>always_positive</span>)</span></code> +<br /> +turns a normalized byte string into a long-int (adapted from +Crypto.Util.number)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> dict(hostname, dict(keytype, <a + href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)) +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#load_host_keys" class="summary-sig-name"><code>load_host_keys</code></a>(<span class=summary-sig-arg>filename</span>)</span></code> +<br /> +Read a file of known SSH host keys, in the format used by openssh, and +return a compound dict of <code>hostname -> keytype -></code> <a +href="../private/paramiko.PKey-class.html" +class="link"><code>PKey</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#log_to_file" class="summary-sig-name"><code>log_to_file</code></a>(<span class=summary-sig-arg>filename</span>, + <span class=summary-sig-arg>level</span>)</span></code> +<br /> +send paramiko logs to a logfile, if they're not already going +somewhere</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#lookup_ssh_host_config" class="summary-sig-name"><code>lookup_ssh_host_config</code></a>(<span class=summary-sig-arg>hostname</span>, + <span class=summary-sig-arg>config</span>)</span></code> +<br /> +Return a dict of config options for a given hostname.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="mod_inverse"></a><span class="summary-sig"><span class="summary-sig-name">mod_inverse</span>(<span class=summary-sig-arg>x</span>, + <span class=summary-sig-arg>m</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> object +</font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#parse_ssh_config" class="summary-sig-name"><code>parse_ssh_config</code></a>(<span class=summary-sig-arg>file_obj</span>)</span></code> +<br /> +Parse a config file of the format used by OpenSSH, and return an +object that can be used to make queries to <a +href="paramiko.util-module.html#lookup_ssh_host_config" +class="link"><code>lookup_ssh_host_config</code></a>.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="safe_string"></a><span class="summary-sig"><span class="summary-sig-name">safe_string</span>(<span class=summary-sig-arg>s</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="tb_strings"></a><span class="summary-sig"><span class="summary-sig-name">tb_strings</span>()</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="paramiko.util-module.html#unhexify" class="summary-sig-name"><code>unhexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code> +<br /> +turn a hex sequence back into a string</td></tr> +</table><br /> + + +<!-- =========== START OF FUNCTION DETAILS =========== --> +<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="details"> + <th colspan="2">Function Details</th></tr> +</table> + +<a name="deflate_long"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">deflate_long</span>(<span class=sig-arg>n</span>, + <span class=sig-arg>add_sign_padding</span>=<span class=sig-default>True</span>)</span> + </h3> + turns a long-int into a normalized byte string (adapted from + Crypto.Util.number) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="generate_key_bytes"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">generate_key_bytes</span>(<span class=sig-arg>hashclass</span>, + <span class=sig-arg>salt</span>, + <span class=sig-arg>key</span>, + <span class=sig-arg>nbytes</span>)</span> + </h3> + Given a password, passphrase, or other human-source key, scramble it + through a secure hash into some keyworthy bytes. This specific + algorithm is used for encrypting/decrypting private key files. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hashclass</b></code> - + class from <code>Crypto.Hash</code> that can be used as a + secure hashing function (like <code>MD5</code> or + <code>SHA</code>). + <br /><i> + (type=<code>Crypto.Hash</code>)</i> + <dd><code><b>salt</b></code> - + data to salt the hash with. + <br /><i> + (type=string)</i> + <dd><code><b>key</b></code> - + human-entered password or passphrase. + <br /><i> + (type=string)</i> + <dd><code><b>nbytes</b></code> - + number of bytes to generate. + <br /><i> + (type=int)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + key data + <br /><i> + (type=string)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="hexify"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">hexify</span>(<span class=sig-arg>s</span>)</span> + </h3> + turn a string into a hex sequence + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="inflate_long"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">inflate_long</span>(<span class=sig-arg>s</span>, + <span class=sig-arg>always_positive</span>=<span class=sig-default>False</span>)</span> + </h3> + turns a normalized byte string into a long-int (adapted from + Crypto.Util.number) + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="load_host_keys"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">load_host_keys</span>(<span class=sig-arg>filename</span>)</span> + </h3> + <p>Read a file of known SSH host keys, in the format used by openssh, + and return a compound dict of <code>hostname -> keytype -></code> + <a href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>. The hostname may be an IP address + or DNS name. The keytype will be either + <code>"ssh-rsa"</code> or + <code>"ssh-dss"</code>.</p> + This type of file unfortunately doesn't exist on Windows, but on + posix, it will usually be stored in + <code>os.path.expanduser("~/.ssh/known_hosts")</code>. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>filename</b></code> - + name of the file to read host keys from + <br /><i> + (type=str)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + dict of host keys, indexed by hostname and then keytype + <br /><i> + (type=dict(hostname, dict(keytype, <a + href="../private/paramiko.PKey-class.html" + class="link"><code>PKey</code></a>)))</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="log_to_file"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">log_to_file</span>(<span class=sig-arg>filename</span>, + <span class=sig-arg>level</span>=<span class=sig-default>10</span>)</span> + </h3> + send paramiko logs to a logfile, if they're not already going + somewhere + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> + +<a name="lookup_ssh_host_config"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">lookup_ssh_host_config</span>(<span class=sig-arg>hostname</span>, + <span class=sig-arg>config</span>)</span> + </h3> + <p>Return a dict of config options for a given hostname. The + <code>config</code> object must come from <a + href="paramiko.util-module.html#parse_ssh_config" + class="link"><code>parse_ssh_config</code></a>.</p> + <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 + *.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> + The keys in the returned dict are all normalized to lowercase (look + for <code>"port"</code>, not <code>"Port"</code>. + No other processing is done to the keys or values. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>hostname</b></code> - + the hostname to lookup + <br /><i> + (type=str)</i> + <dd><code><b>config</b></code> - + the config object to search + <br /><i> + (type=object)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="parse_ssh_config"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">parse_ssh_config</span>(<span class=sig-arg>file_obj</span>)</span> + </h3> + <p>Parse a config file of the format used by OpenSSH, and return an + object that can be used to make queries to <a + href="paramiko.util-module.html#lookup_ssh_host_config" + class="link"><code>lookup_ssh_host_config</code></a>. The format is + described in OpenSSH's <code>ssh_config</code> man page. This method 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> + The return value is currently a list of dictionaries, each + containing host-specific configuration, but this is considered an + implementation detail and may be subject to change in later + versions. + <dl><dt></dt><dd> + <dl><dt><b>Parameters:</b></dt> + <dd><code><b>file_obj</b></code> - + a file-like object to read the config file from + <br /><i> + (type=file)</i> + </dd> + </dl> + <dl><dt><b>Returns:</b></dt> + <dd> + opaque configuration object + <br /><i> + (type=object)</i> + </dd> + </dl> + </dd></dl> +</td></tr></table> + +<a name="unhexify"></a> +<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td> + <h3><span class="sig"><span class="sig-name">unhexify</span>(<span class=sig-arg>s</span>)</span> + </h3> + turn a hex sequence back into a string + <dl><dt></dt><dd> + </dd></dl> +</td></tr></table> +<br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/paramiko.util.PFilter-class.html b/docs/public/paramiko.util.PFilter-class.html new file mode 100644 index 0000000..f1e8059 --- /dev/null +++ b/docs/public/paramiko.util.PFilter-class.html @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.PFilter</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + <a href="paramiko-module.html">Package paramiko</a> :: + <a href="paramiko.util-module.html">Module util</a> :: + Class PFilter + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/paramiko.util.PFilter-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="paramiko.util.PFilter-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type PFilter</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <b>PFilter</b> +</pre><br /> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="filter"></a><span class="summary-sig"><span class="summary-sig-name">filter</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>record</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__init__(...) initializes x; see x.__class__.__doc__ for +signature</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__repr__() <==> repr(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/threading.Thread-class.html b/docs/public/threading.Thread-class.html new file mode 100644 index 0000000..951099e --- /dev/null +++ b/docs/public/threading.Thread-class.html @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>threading.Thread</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + <font size="-1"><b class="breadcrumbs"> + Module threading :: + Class Thread + </b></font></br> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/threading.Thread-class.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="threading.Thread-class.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF CLASS DESCRIPTION =========== --> +<h2 class="class">Type Thread</h2> + +<pre class="base-tree"> +<a href="__builtin__.object-class.html"><code>object</code></a> --+ + | + <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+ + | + <b>Thread</b> +</pre><br /> + +<dl><dt><b>Known Subclasses:</b></dt> +<dd> + <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a>, + <a href="paramiko.Transport-class.html"><code>Transport</code></a></dd></dl> + +<hr/> + + +<!-- =========== START OF METHOD SUMMARY =========== --> +<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="summary"> + <th colspan="2">Method Summary</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>group</span>, + <span class=summary-sig-arg>target</span>, + <span class=summary-sig-arg>name</span>, + <span class=summary-sig-arg>args</span>, + <span class=summary-sig-arg>kwargs</span>, + <span class=summary-sig-arg>verbose</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1">(type, value, traceback)</font></td> + <td><code><span class="summary-sig"><code>__exc_info</code>()</span></code> +<br /> +Return information about the most recent exception caught by an except +clause in the current stack frame or in an older stack frame.</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="getName"></a><span class="summary-sig"><span class="summary-sig-name">getName</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="isAlive"></a><span class="summary-sig"><span class="summary-sig-name">isAlive</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="isDaemon"></a><span class="summary-sig"><span class="summary-sig-name">isDaemon</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="join"></a><span class="summary-sig"><span class="summary-sig-name">join</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>timeout</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setDaemon"></a><span class="summary-sig"><span class="summary-sig-name">setDaemon</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>daemonic</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="setName"></a><span class="summary-sig"><span class="summary-sig-name">setName</span>(<span class=summary-sig-arg>self</span>, + <span class=summary-sig-arg>name</span>)</span></code> +</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><a name="start"></a><span class="summary-sig"><span class="summary-sig-name">start</span>(<span class=summary-sig-arg>self</span>)</span></code> +</td></tr> +<tr bgcolor="#e8f0f8" class="group"> + <th colspan="2"> Inherited from object</th></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__delattr__('name') <==> del x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__getattribute__('name') <==> x.name</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__hash__() <==> hash(x)</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>, + <span class=summary-sig-arg>S</span>, + <span class="summary-sig-vararg">...</span>)</span></code> +<br /> +T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +helper for pickle</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code> +<br /> +x.__setattr__('name', value) <==> x.name = value</td></tr> +<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td> + <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code> +<br /> +x.__str__() <==> str(x)</td></tr> +</table><br /> + + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/docs/public/toc-everything.html b/docs/public/toc-everything.html new file mode 100644 index 0000000..e699f06 --- /dev/null +++ b/docs/public/toc-everything.html @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Everything</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b>Everything</b></font></center> +<hr> + +<!-- =========== START OF ALL CLASSES =========== --> +<font size="+1"><b>All Classes</b></font><br /> +<a target="mainFrame" href="paramiko.Agent-class.html">paramiko.Agent</a><br /> +<a target="mainFrame" href="paramiko.AgentKey-class.html">paramiko.AgentKey</a><br /> +<a target="mainFrame" href="paramiko.BufferedFile-class.html">paramiko.BufferedFile</a><br /> +<a target="mainFrame" href="paramiko.Channel-class.html">paramiko.Channel</a><br /> +<a target="mainFrame" href="paramiko.DSSKey-class.html">paramiko.DSSKey</a><br /> +<a target="mainFrame" href="paramiko.Message-class.html">paramiko.Message</a><br /> +<a target="mainFrame" href="paramiko.RSAKey-class.html">paramiko.RSAKey</a><br /> +<a target="mainFrame" href="paramiko.SecurityOptions-class.html">paramiko.SecurityOptions</a><br /> +<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">paramiko.server.InteractiveQuery</a><br /> +<a target="mainFrame" href="paramiko.SFTP-class.html">paramiko.SFTP</a><br /> +<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">paramiko.SFTPAttributes</a><br /> +<a target="mainFrame" href="paramiko.SFTPClient-class.html">paramiko.SFTPClient</a><br /> +<a target="mainFrame" href="paramiko.SFTPFile-class.html">paramiko.SFTPFile</a><br /> +<a target="mainFrame" href="paramiko.SFTPHandle-class.html">paramiko.SFTPHandle</a><br /> +<a target="mainFrame" href="paramiko.SFTPServer-class.html">paramiko.SFTPServer</a><br /> +<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">paramiko.SubsystemHandler</a><br /> +<a target="mainFrame" href="paramiko.Transport-class.html">paramiko.Transport</a><br /> +<a target="mainFrame" href="paramiko.util.PFilter-class.html">paramiko.util.PFilter</a><br /> +<br /> + +<!-- =========== START OF ALL EXCEPTIONS =========== --> +<font size="+1"><b>All Exceptions</b></font><br /> +<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">paramiko.BadAuthenticationType</a><br /> +<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">paramiko.PasswordRequiredException</a><br /> +<a target="mainFrame" href="paramiko.SFTPError-class.html">paramiko.SFTPError</a><br /> +<a target="mainFrame" href="paramiko.SSHException-class.html">paramiko.SSHException</a><br /> +<br /> + +<!-- =========== START OF ALL FUNCTIONS =========== --> +<font size="+1"><b>All Functions</b></font><br /> +<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br /> +<br /> + +<!-- =========== START OF ALL VARIABLES =========== --> +<font size="+1"><b>All Variables</b></font><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-everything.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko-module.html b/docs/public/toc-paramiko-module.html new file mode 100644 index 0000000..7353601 --- /dev/null +++ b/docs/public/toc-paramiko-module.html @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko-module.html">paramiko</a></b></font></center> +<hr> + +<!-- =========== START OF MODULES =========== --> +<font size="+1"><b>Modules</b></font><br /> +<a target="mainFrame" href="paramiko.agent-module.html">agent</a><br /> +<a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a><br /> +<a target="mainFrame" href="paramiko.file-module.html">file</a><br /> +<a target="mainFrame" href="paramiko.message-module.html">message</a><br /> +<a target="mainFrame" href="paramiko.pkey-module.html">pkey</a><br /> +<a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a><br /> +<a target="mainFrame" href="paramiko.server-module.html">server</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html">sftp</a><br /> +<a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a><br /> +<a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a><br /> +<a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a><br /> +<a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a><br /> +<a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a><br /> +<a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a><br /> +<a target="mainFrame" href="paramiko.transport-module.html">transport</a><br /> +<a target="mainFrame" href="paramiko.util-module.html">util</a><br /> +<br /> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.Agent-class.html">Agent</a><br /> +<a target="mainFrame" href="paramiko.AgentKey-class.html">AgentKey</a><br /> +<a target="mainFrame" href="paramiko.BufferedFile-class.html">BufferedFile</a><br /> +<a target="mainFrame" href="paramiko.Channel-class.html">Channel</a><br /> +<a target="mainFrame" href="paramiko.DSSKey-class.html">DSSKey</a><br /> +<a target="mainFrame" href="paramiko.Message-class.html">Message</a><br /> +<a target="mainFrame" href="paramiko.RSAKey-class.html">RSAKey</a><br /> +<a target="mainFrame" href="paramiko.SecurityOptions-class.html">SecurityOptions</a><br /> +<a target="mainFrame" href="paramiko.SFTP-class.html">SFTP</a><br /> +<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a><br /> +<a target="mainFrame" href="paramiko.SFTPClient-class.html">SFTPClient</a><br /> +<a target="mainFrame" href="paramiko.SFTPFile-class.html">SFTPFile</a><br /> +<a target="mainFrame" href="paramiko.SFTPHandle-class.html">SFTPHandle</a><br /> +<a target="mainFrame" href="paramiko.SFTPServer-class.html">SFTPServer</a><br /> +<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br /> +<a target="mainFrame" href="paramiko.Transport-class.html">Transport</a><br /> +<br /> + +<!-- =========== START OF EXCEPTIONS =========== --> +<font size="+1"><b>Exceptions</b></font><br /> +<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a><br /> +<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">PasswordRequiredException</a><br /> +<a target="mainFrame" href="paramiko.SFTPError-class.html">SFTPError</a><br /> +<a target="mainFrame" href="paramiko.SSHException-class.html">SSHException</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.agent-module.html b/docs/public/toc-paramiko.agent-module.html new file mode 100644 index 0000000..543e5af --- /dev/null +++ b/docs/public/toc-paramiko.agent-module.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.agent</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.agent-module.html">agent</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br /> +<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.agent-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.dsskey-module.html b/docs/public/toc-paramiko.dsskey-module.html new file mode 100644 index 0000000..7f5fddb --- /dev/null +++ b/docs/public/toc-paramiko.dsskey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.dsskey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.dsskey-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.file-module.html b/docs/public/toc-paramiko.file-module.html new file mode 100644 index 0000000..9c02537 --- /dev/null +++ b/docs/public/toc-paramiko.file-module.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.file-module.html">file</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.file-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.message-module.html b/docs/public/toc-paramiko.message-module.html new file mode 100644 index 0000000..14ecd78 --- /dev/null +++ b/docs/public/toc-paramiko.message-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.message</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.message-module.html">message</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.message-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.pkey-module.html b/docs/public/toc-paramiko.pkey-module.html new file mode 100644 index 0000000..a2c0c5b --- /dev/null +++ b/docs/public/toc-paramiko.pkey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.pkey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.pkey-module.html">pkey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.pkey-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.rsakey-module.html b/docs/public/toc-paramiko.rsakey-module.html new file mode 100644 index 0000000..ceceb19 --- /dev/null +++ b/docs/public/toc-paramiko.rsakey-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.rsakey</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.rsakey-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.server-module.html b/docs/public/toc-paramiko.server-module.html new file mode 100644 index 0000000..c01d6d6 --- /dev/null +++ b/docs/public/toc-paramiko.server-module.html @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.server-module.html">server</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">InteractiveQuery</a><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.server-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp-module.html b/docs/public/toc-paramiko.sftp-module.html new file mode 100644 index 0000000..52f03a3 --- /dev/null +++ b/docs/public/toc-paramiko.sftp-module.html @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp-module.html">sftp</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br /> +<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_attr-module.html b/docs/public/toc-paramiko.sftp_attr-module.html new file mode 100644 index 0000000..080044e --- /dev/null +++ b/docs/public/toc-paramiko.sftp_attr-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_attr</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_attr-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_client-module.html b/docs/public/toc-paramiko.sftp_client-module.html new file mode 100644 index 0000000..7bf1ad8 --- /dev/null +++ b/docs/public/toc-paramiko.sftp_client-module.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_client</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a></b></font></center> +<hr> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_client-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_file-module.html b/docs/public/toc-paramiko.sftp_file-module.html new file mode 100644 index 0000000..aee1350 --- /dev/null +++ b/docs/public/toc-paramiko.sftp_file-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_file</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_file-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_handle-module.html b/docs/public/toc-paramiko.sftp_handle-module.html new file mode 100644 index 0000000..fc8b60a --- /dev/null +++ b/docs/public/toc-paramiko.sftp_handle-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_handle</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_handle-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_server-module.html b/docs/public/toc-paramiko.sftp_server-module.html new file mode 100644 index 0000000..93677ba --- /dev/null +++ b/docs/public/toc-paramiko.sftp_server-module.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_server</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a></b></font></center> +<hr> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_server-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.sftp_si-module.html b/docs/public/toc-paramiko.sftp_si-module.html new file mode 100644 index 0000000..58a1d30 --- /dev/null +++ b/docs/public/toc-paramiko.sftp_si-module.html @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.sftp_si</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a></b></font></center> +<hr> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.sftp_si-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.transport-module.html b/docs/public/toc-paramiko.transport-module.html new file mode 100644 index 0000000..14e73b4 --- /dev/null +++ b/docs/public/toc-paramiko.transport-module.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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.transport</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.transport-module.html">transport</a></b></font></center> +<hr> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.transport-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc-paramiko.util-module.html b/docs/public/toc-paramiko.util-module.html new file mode 100644 index 0000000..1224321 --- /dev/null +++ b/docs/public/toc-paramiko.util-module.html @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b><a target="mainFrame" href="paramiko.util-module.html">util</a></b></font></center> +<hr> + +<!-- =========== START OF CLASSES =========== --> +<font size="+1"><b>Classes</b></font><br /> +<a target="mainFrame" href="paramiko.util.PFilter-class.html">PFilter</a><br /> +<br /> + +<!-- =========== START OF FUNCTIONS =========== --> +<font size="+1"><b>Functions</b></font><br /> +<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br /> +<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br /> +<br /> + +<!-- =========== START OF VARIABLES =========== --> +<font size="+1"><b>Variables</b></font><br /> +<br /> + +<hr> +<font size="-2">[<a href="../private/toc-paramiko.util-module.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/toc.html b/docs/public/toc.html new file mode 100644 index 0000000..a99a3d0 --- /dev/null +++ b/docs/public/toc.html @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Table of Contents</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<center><font size="+1"><b>Table of Contents</b></font></center> +<hr> +<a target="moduleFrame" href="toc-everything.html">Everything</a><br /> + +<!-- =========== START OF PACKAGES =========== --> +<br /><font size="+1"><b>Packages</b></font><br /> +<a target="moduleFrame" href="toc-paramiko-module.html">paramiko</a><br /> + +<!-- =========== START OF MODULES =========== --> +<br /><font size="+1"><b>Modules</b></font><br /> +<a target="moduleFrame" href="toc-paramiko.agent-module.html">paramiko.agent</a><br /> +<a target="moduleFrame" href="toc-paramiko.dsskey-module.html">paramiko.dsskey</a><br /> +<a target="moduleFrame" href="toc-paramiko.file-module.html">paramiko.file</a><br /> +<a target="moduleFrame" href="toc-paramiko.message-module.html">paramiko.message</a><br /> +<a target="moduleFrame" href="toc-paramiko.pkey-module.html">paramiko.pkey</a><br /> +<a target="moduleFrame" href="toc-paramiko.rsakey-module.html">paramiko.rsakey</a><br /> +<a target="moduleFrame" href="toc-paramiko.server-module.html">paramiko.server</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp-module.html">paramiko.sftp</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_attr-module.html">paramiko.sftp_attr</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_client-module.html">paramiko.sftp_client</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_file-module.html">paramiko.sftp_file</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_handle-module.html">paramiko.sftp_handle</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_server-module.html">paramiko.sftp_server</a><br /> +<a target="moduleFrame" href="toc-paramiko.sftp_si-module.html">paramiko.sftp_si</a><br /> +<a target="moduleFrame" href="toc-paramiko.transport-module.html">paramiko.transport</a><br /> +<a target="moduleFrame" href="toc-paramiko.util-module.html">paramiko.util</a><br /> + +<br /><hr> +<font size="-2">[<a href="../private/toc.html">show private</a> | hide private]</font> +</body> +</html> diff --git a/docs/public/trees.html b/docs/public/trees.html new file mode 100644 index 0000000..6c85192 --- /dev/null +++ b/docs/public/trees.html @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!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>Module and Class Hierarchies</title> + <link rel="stylesheet" href="epydoc.css" type="text/css"></link> +</head> +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th bgcolor="#70b0f0" class="navselect"> Trees </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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%"> + </td> + <td><table cellpadding="0" cellspacing="0"> + <tr><td align="right"><font size="-2">[<a href="../private/trees.html">show private</a> | hide private]</font></td></tr> + <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="trees.html" target="_top">no frames</a>]</font></td></tr> + </table></td> +</tr></table> + +<!-- =========== START OF MODULE HIERARCHY =========== --> +<h2>Module Hierarchy</h2> +<ul> +<li> <b><a href="paramiko-module.html"><code>paramiko</code></a></b>: <i><i>Paramiko</i> (a combination of the esperanto words for +"paranoid" and "friend") is a module for python 2.3 +or greater that implements the SSH2 protocol for secure (encrypted and +authenticated) connections to remote machines.</i> + <ul> + <li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i> + <li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html" +class="link"><code>DSSKey</code></a></i> + <li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i> + <li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 "message".</i> + <li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i> + <li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html" +class="link"><code>RSAKey</code></a></i> + <li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html" +class="link"><code>ServerInterface</code></a> is an interface to override +for server support.</i> + <li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b> + <li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b> + <li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i> + <li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html" +class="link"><code>SFTPFile</code></a></i> + <li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i> + <li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i> + <li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html" +class="link"><code>SFTPServerInterface</code></a> is an interface to +override for SFTP server support.</i> + <li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a> handles the core SSH2 +protocol.</i> + <li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i> + </ul> +</ul> + +<!-- =========== START OF CLASS HIERARCHY =========== --> +<h2>Class Hierarchy</h2> +<ul> + <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i> +The most base type</i> + <ul> + <li> <b><a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></b>: <i> +Reusable base class to implement python-style file buffering around a +simpler stream.</i> + <ul> + <li> <b><a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></b>: <i> +Proxy object for a file on the remote server, in client mode SFTP.</i> + </ul> + <li> <b><a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></b>: <i> +A secure tunnel across an SSH <a href="paramiko.Transport-class.html" +class="link"><code>Transport</code></a>.</i> + <li> <b><a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></b>: <i> +A query (set of prompts) for a user during interactive +authentication.</i> + <li> <b><a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></b>: <i> +An SSH2 <i>Message</i> is a stream of bytes that encodes some +combination of strings, integers, bools, and infinite-precision integers +(known in python as <i>long</i>s).</i> + <li> <b><a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></b> + <li> <b><a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></b>: <i> +Simple object containing the security preferences of an ssh +transport.</i> + <li> <b><a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></b>: <i> +Representation of the attributes of a file (or proxied file) for SFTP +in client or server mode.</i> + <li> <b><a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></b>: <i> +Abstract object representing a handle to an open file (or folder) in +an SFTP server implementation.</i> + <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i> +type(object) -> the object's type type(name, bases, dict) -> a +new type</i> + <ul> + </ul> + <ul> + </ul> + <ul> + </ul> + </ul> + <li> <b><a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></b>: <i> +Common base class for all exceptions.</i> + <ul> + <li> <b><a href="paramiko.SFTPError-class.html"><code>paramiko.SFTPError</code></a></b> + <li> <b><a href="paramiko.SSHException-class.html"><code>paramiko.SSHException</code></a></b>: <i> +Exception raised by failures in SSH2 protocol negotiation or logic +errors.</i> + <ul> + <li> <b><a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></b>: <i> +Exception raised when an authentication type (like password) is used, +but the server isn't allowing that type.</i> + <li> <b><a href="paramiko.PasswordRequiredException-class.html"><code>paramiko.PasswordRequiredException</code></a></b>: <i> +Exception raised when a password is needed to unlock a private key +file.</i> + </ul> + </ul> + <li> <b><a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></b>: <i> +Client interface for using private keys from an SSH agent running on +the local machine.</i> +</ul> + +<!-- =========== START OF NAVBAR =========== --> +<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="center"> + <th class="navbar"> <a class="navbar" href="paramiko-module.html">Home</a> </th> + <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th> + <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th> + <th class="navbar"> <a class="navbar" 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"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td> + <td align="right"><a href="http://epydoc.sourceforge.net" + ><font size="-2">http://epydoc.sf.net</font></a></td> + </tr> +</table> +</body> +</html> diff --git a/forward.py b/forward.py new file mode 100644 index 0000000..f91e969 --- /dev/null +++ b/forward.py @@ -0,0 +1,219 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Sample script showing how to do local port forwarding over paramiko. + +This script connects to the requested SSH server and sets up local port +forwarding (the openssh -L option) from a local port through a tunneled +connection to a destination reachable from the SSH server machine. +""" + +import sys +import os +import socket +import select +import SocketServer +import getpass +import base64 +from optparse import OptionParser + +import paramiko + +DEFAULT_PORT = 4000 +SSH_PORT = 22 +VERBOSE = True +READPASS = False + + +class ForwardServer (SocketServer.ThreadingTCPServer): + daemon_threads = True + allow_reuse_address = True + + +class Handler (SocketServer.BaseRequestHandler): + + def handle(self): + try: + chan = self.ssh_transport.open_channel('direct-tcpip', + (self.chain_host, self.chain_port), + self.request.getpeername()) + except Exception, e: + verbose('Incoming request to %s:%d failed: %s' % (self.chain_host, + self.chain_port, + repr(e))) + return + + verbose('Connected! Tunnel open.') + while True: + r, w, x = select.select([self.request, chan], [], []) + if self.request in r: + data = self.request.recv(1024) + if len(data) == 0: + break + chan.send(data) + if chan in r: + data = chan.recv(1024) + if len(data) == 0: + break + self.request.send(data) + chan.close() + self.request.close() + verbose('Tunnel closed.') + + +def forward_tunnel(local_port, remote_host, remote_port, transport): + # this is a little convoluted, but lets me configure things for the Handler + # object. (SocketServer doesn't give Handlers any way to access the outer + # server normally.) + class SubHander (Handler): + chain_host = remote_host + chain_port = remote_port + ssh_transport = transport + ForwardServer(('', local_port), SubHander).serve_forever() + +def find_default_key_file(): + filename = os.path.expanduser('~/.ssh/id_rsa') + if os.access(filename, os.R_OK): + return filename + filename = os.path.expanduser('~/ssh/id_rsa') + if os.access(filename, os.R_OK): + return filename + filename = os.path.expanduser('~/.ssh/id_dsa') + if os.access(filename, os.R_OK): + return filename + filename = os.path.expanduser('~/ssh/id_dsa') + if os.access(filename, os.R_OK): + return filename + return '' + +def verbose(s): + if VERBOSE: + print s + + +##### + + +parser = OptionParser(usage='usage: %prog [options] <remote-addr>:<remote-port>', + version='%prog 1.0') +parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=VERBOSE, + help='squelch all informational output') +parser.add_option('-l', '--local-port', action='store', type='int', dest='port', + default=DEFAULT_PORT, + help='local port to forward (default: %d)' % DEFAULT_PORT) +parser.add_option('-r', '--host', action='store', type='string', dest='ssh_host', + help='SSH host to tunnel through (required)') +parser.add_option('-p', '--port', action='store', type='int', dest='ssh_port', default=SSH_PORT, + help='SSH port to tunnel through (default: %d)' % SSH_PORT) +parser.add_option('-u', '--user', action='store', type='string', dest='user', + default=getpass.getuser(), + help='username for SSH authentication (default: %s)' % getpass.getuser()) +parser.add_option('-K', '--key', action='store', type='string', dest='keyfile', + default=find_default_key_file(), + help='private key file to use for SSH authentication') +parser.add_option('', '--no-key', action='store_false', dest='use_key', default=True, + help='don\'t look for or use a private key file') +parser.add_option('-P', '--password', action='store_true', dest='readpass', default=READPASS, + help='read password (for key or password auth) from stdin') +options, args = parser.parse_args() + +VERBOSE = options.verbose +READPASS = options.readpass + + +if len(args) != 1: + parser.error('Incorrect number of arguments.') +remote_host = args[0] +if ':' not in remote_host: + parser.error('Remote port missing.') +remote_host, remote_port = remote_host.split(':', 1) +try: + remote_port = int(remote_port) +except: + parser.error('Remote port must be a number.') + +if not options.ssh_host: + parser.error('SSH host is required.') +if ':' in options.ssh_host: + options.ssh_host, options.ssh_port = options.ssh_host.split(':', 1) + try: + options.ssh_port = int(options.ssh_port) + except: + parser.error('SSH port must be a number.') + +try: + host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts')) +except IOError: + try: + 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 not host_keys.has_key(options.ssh_host): + print '*** Warning: no host key for %s' % options.ssh_host + expected_host_key_type = None + expected_host_key = None +else: + expected_host_key_type = host_keys[options.ssh_host].keys()[0] + expected_host_key = host_keys[options.ssh_host][expected_host_key_type] + +key = None +password = None +if options.use_key: + try: + key = paramiko.RSAKey.from_private_key_file(options.keyfile) + except paramiko.PasswordRequiredException: + if not READPASS: + print '*** Password needed for keyfile (use -P): %s' % options.keyfile + sys.exit(1) + key_password = getpass.getpass('Enter password for key: ') + try: + key = paramiko.RSAKey.from_private_key_file(options.keyfile, key_password) + except: + print '*** Unable to read keyfile: %s' % options.keyfile + sys.exit(1) + except: + pass + +if key is None: + # try reading a password then + if not READPASS: + print '*** Either a valid private key or password is required (use -K or -P).' + sys.exit(1) + password = getpass.getpass('Enter password: ') + +verbose('Connecting to ssh host %s:%d ...' % (options.ssh_host, options.ssh_port)) + +transport = paramiko.Transport((options.ssh_host, options.ssh_port)) +transport.connect(hostkeytype=expected_host_key_type, + hostkey=expected_host_key, + username=options.user, + password=password, + pkey=key) + +verbose('Now forwarding port %d to %s:%d ...' % (options.port, remote_host, remote_port)) + +try: + forward_tunnel(options.port, remote_host, remote_port, transport) +except KeyboardInterrupt: + print 'Port forwarding stopped.' + sys.exit(0) diff --git a/paramiko/__init__.py b/paramiko/__init__.py new file mode 100644 index 0000000..0a312cb --- /dev/null +++ b/paramiko/__init__.py @@ -0,0 +1,146 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +I{Paramiko} (a combination of the esperanto words for "paranoid" and "friend") +is a module for python 2.3 or greater that implements the SSH2 protocol for +secure (encrypted and authenticated) connections to remote machines. Unlike +SSL (aka TLS), the SSH2 protocol does not require heirarchical certificates +signed by a powerful central authority. You may know SSH2 as the protocol that +replaced C{telnet} and C{rsh} for secure access to remote shells, but the +protocol also includes the ability to open arbitrary channels to remote +services across an encrypted tunnel. (This is how C{sftp} works, for example.) + +To use this package, pass a socket (or socket-like object) to a L{Transport}, +and use L{start_server <Transport.start_server>} or +L{start_client <Transport.start_client>} to negoatite +with the remote host as either a server or client. As a client, you are +responsible for authenticating using a password or private key, and checking +the server's host key. I{(Key signature and verification is done by paramiko, +but you will need to provide private keys and check that the content of a +public key matches what you expected to see.)} As a server, you are +responsible for deciding which users, passwords, and keys to allow, and what +kind of channels to allow. + +Once you have finished, either side may request flow-controlled L{Channel}s to +the other side, which are python objects that act like sockets, but send and +receive data over the encrypted session. + +Paramiko is written entirely in python (no C or platform-dependent code) and is +released under the GNU Lesser General Public License (LGPL). + +Website: U{http://www.lag.net/paramiko/} + +@version: 1.5.2 (rhydon) +@author: Robey Pointer +@contact: robey@lag.net +@license: GNU Lesser General Public License (LGPL) +""" + +import sys + +if sys.version_info < (2, 2): + raise RuntimeError('You need python 2.2 for this module.') + + +__author__ = "Robey Pointer <robey@lag.net>" +__date__ = "04 Dec 2005" +__version__ = "1.5.2 (rhydon)" +__version_info__ = (1, 5, 2) +__license__ = "GNU Lesser General Public License (LGPL)" + + +import transport, auth_handler, channel, rsakey, dsskey, message +import ssh_exception, file, packet, agent, server, util +import sftp_client, sftp_attr, sftp_handle, sftp_server, sftp_si + +from transport import randpool, SecurityOptions, Transport +from auth_handler import AuthHandler +from channel import Channel, ChannelFile +from ssh_exception import SSHException, PasswordRequiredException, BadAuthenticationType +from server import ServerInterface, SubsystemHandler, InteractiveQuery +from rsakey import RSAKey +from dsskey import DSSKey +from sftp import SFTPError, BaseSFTP +from sftp_client import SFTP, SFTPClient +from sftp_server import SFTPServer +from sftp_attr import SFTPAttributes +from sftp_handle import SFTPHandle +from sftp_si import SFTPServerInterface +from sftp_file import SFTPFile +from message import Message +from packet import Packetizer +from file import BufferedFile +from agent import Agent, AgentKey +from pkey import PKey + +# fix module names for epydoc +for x in [Transport, SecurityOptions, Channel, SFTPServer, SSHException, \ + PasswordRequiredException, BadAuthenticationType, ChannelFile, \ + SubsystemHandler, AuthHandler, RSAKey, DSSKey, SFTPError, \ + SFTP, SFTPClient, SFTPServer, Message, Packetizer, SFTPAttributes, \ + SFTPHandle, SFTPServerInterface, BufferedFile, Agent, AgentKey, \ + PKey, BaseSFTP, SFTPFile, ServerInterface]: + x.__module__ = 'paramiko' + +from common import AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED, \ + OPEN_SUCCEEDED, OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, OPEN_FAILED_CONNECT_FAILED, \ + OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, OPEN_FAILED_RESOURCE_SHORTAGE + +from sftp import SFTP_OK, SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, \ + SFTP_BAD_MESSAGE, SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED + +__all__ = [ 'Transport', + 'SecurityOptions', + 'SubsystemHandler', + 'Channel', + 'RSAKey', + 'DSSKey', + 'Agent', + 'Message', + 'SSHException', + 'PasswordRequiredException', + 'BadAuthenticationType', + 'SFTP', + 'SFTPFile', + 'SFTPHandle', + 'SFTPClient', + 'SFTPServer', + 'SFTPError', + 'SFTPAttributes', + 'SFTPServerInterface' + 'ServerInterface', + 'BufferedFile', + 'Agent', + 'AgentKey', + 'rsakey', + 'dsskey', + 'pkey', + 'message', + 'transport', + 'sftp', + 'sftp_client', + 'sftp_server', + 'sftp_attr', + 'sftp_file', + 'sftp_si', + 'sftp_handle', + 'server', + 'file', + 'agent', + 'util' ] diff --git a/paramiko/agent.py b/paramiko/agent.py new file mode 100644 index 0000000..3555512 --- /dev/null +++ b/paramiko/agent.py @@ -0,0 +1,138 @@ +# Copyright (C) 2003-2005 John Rochester <john@jrochester.org> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +SSH Agent interface for Unix clients. +""" + +import os +import socket +import struct +import sys + +from paramiko.ssh_exception import SSHException +from paramiko.message import Message +from paramiko.pkey import PKey + + +SSH2_AGENTC_REQUEST_IDENTITIES, SSH2_AGENT_IDENTITIES_ANSWER, \ + SSH2_AGENTC_SIGN_REQUEST, SSH2_AGENT_SIGN_RESPONSE = range(11, 15) + + +class Agent: + """ + Client interface for using private keys from an SSH agent running on the + local machine. If an SSH agent is running, this class can be used to + connect to it and retreive L{PKey} objects which can be used when + attempting to authenticate to remote SSH servers. + + Because the SSH agent protocol uses environment variables and unix-domain + sockets, this probably doesn't work on Windows. It does work on most + posix platforms though (Linux and MacOS X, for example). + """ + + def __init__(self): + """ + Open a session with the local machine's SSH agent, if one is running. + If no agent is running, initialization will succeed, but L{get_keys} + will return an empty tuple. + + @raise SSHException: if an SSH agent is found, but speaks an + incompatible protocol + """ + if ('SSH_AUTH_SOCK' in os.environ) and (sys.platform != 'win32'): + conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + conn.connect(os.environ['SSH_AUTH_SOCK']) + self.conn = conn + type, result = self._send_message(chr(SSH2_AGENTC_REQUEST_IDENTITIES)) + if type != SSH2_AGENT_IDENTITIES_ANSWER: + raise SSHException('could not get keys from ssh-agent') + keys = [] + for i in range(result.get_int()): + keys.append(AgentKey(self, result.get_string())) + result.get_string() + self.keys = tuple(keys) + else: + self.keys = () + + def close(self): + """ + Close the SSH agent connection. + """ + self.conn.close() + self.conn = None + self.keys = () + + def get_keys(self): + """ + Return the list of keys available through the SSH agent, if any. If + no SSH agent was running (or it couldn't be contacted), an empty list + will be returned. + + @return: a list of keys available on the SSH agent + @rtype: tuple of L{AgentKey} + """ + return self.keys + + def _send_message(self, msg): + msg = str(msg) + self.conn.send(struct.pack('>I', len(msg)) + msg) + l = self._read_all(4) + msg = Message(self._read_all(struct.unpack('>I', l)[0])) + return ord(msg.get_byte()), msg + + def _read_all(self, wanted): + result = self.conn.recv(wanted) + while len(result) < wanted: + if len(result) == 0: + raise SSHException('lost ssh-agent') + extra = self.conn.recv(wanted - len(result)) + if len(extra) == 0: + raise SSHException('lost ssh-agent') + result += extra + return result + + +class AgentKey(PKey): + """ + Private key held in a local SSH agent. This type of key can be used for + authenticating to a remote server (signing). Most other key operations + work as expected. + """ + + def __init__(self, agent, blob): + self.agent = agent + self.blob = blob + self.name = Message(blob).get_string() + + def __str__(self): + return self.blob + + def get_name(self): + return self.name + + def sign_ssh_data(self, randpool, data): + msg = Message() + msg.add_byte(chr(SSH2_AGENTC_SIGN_REQUEST)) + msg.add_string(self.blob) + msg.add_string(data) + msg.add_int(0) + type, result = self.agent._send_message(msg) + if type != SSH2_AGENT_SIGN_RESPONSE: + raise SSHException('key cannot be used for signing') + return result.get_string() diff --git a/paramiko/auth_handler.py b/paramiko/auth_handler.py new file mode 100644 index 0000000..59aa376 --- /dev/null +++ b/paramiko/auth_handler.py @@ -0,0 +1,410 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{AuthHandler} +""" + +import threading + +# this helps freezing utils +import encodings.utf_8 + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ssh_exception import SSHException, BadAuthenticationType, PartialAuthentication +from paramiko.server import InteractiveQuery + + +class AuthHandler (object): + """ + Internal class to handle the mechanics of authentication. + """ + + def __init__(self, transport): + self.transport = transport + self.username = None + self.authenticated = False + self.auth_event = None + self.auth_method = '' + self.password = None + self.private_key = None + # for server mode: + self.auth_username = None + self.auth_fail_count = 0 + + def is_authenticated(self): + return self.authenticated + + def get_username(self): + if self.transport.server_mode: + return self.auth_username + else: + return self.username + + def auth_none(self, username, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = 'none' + self.username = username + self._request_auth() + finally: + self.transport.lock.release() + + def auth_publickey(self, username, key, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = 'publickey' + self.username = username + self.private_key = key + self._request_auth() + finally: + self.transport.lock.release() + + def auth_password(self, username, password, event): + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = 'password' + self.username = username + self.password = password + self._request_auth() + finally: + self.transport.lock.release() + + def auth_interactive(self, username, handler, event, submethods=''): + """ + response_list = handler(title, instructions, prompt_list) + """ + self.transport.lock.acquire() + try: + self.auth_event = event + self.auth_method = 'keyboard-interactive' + self.username = username + self.interactive_handler = handler + self.submethods = submethods + self._request_auth() + finally: + self.transport.lock.release() + + def abort(self): + if self.auth_event is not None: + self.auth_event.set() + + + ### internals... + + + def _request_auth(self): + m = Message() + m.add_byte(chr(MSG_SERVICE_REQUEST)) + m.add_string('ssh-userauth') + self.transport._send_message(m) + + def _disconnect_service_not_available(self): + m = Message() + m.add_byte(chr(MSG_DISCONNECT)) + m.add_int(DISCONNECT_SERVICE_NOT_AVAILABLE) + m.add_string('Service not available') + m.add_string('en') + self.transport._send_message(m) + self.transport.close() + + def _disconnect_no_more_auth(self): + m = Message() + m.add_byte(chr(MSG_DISCONNECT)) + m.add_int(DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE) + m.add_string('No more auth methods available') + m.add_string('en') + self.transport._send_message(m) + self.transport.close() + + def _get_session_blob(self, key, service, username): + m = Message() + m.add_string(self.transport.session_id) + m.add_byte(chr(MSG_USERAUTH_REQUEST)) + m.add_string(username) + m.add_string(service) + m.add_string('publickey') + m.add_boolean(1) + m.add_string(key.get_name()) + m.add_string(str(key)) + return str(m) + + def wait_for_response(self, event): + while True: + event.wait(0.1) + if not self.transport.is_active(): + e = self.transport.get_exception() + if e is None: + e = SSHException('Authentication failed.') + raise e + if event.isSet(): + break + if not self.is_authenticated(): + e = self.transport.get_exception() + if e is None: + e = SSHException('Authentication failed.') + # this is horrible. python Exception isn't yet descended from + # object, so type(e) won't work. :( + if issubclass(e.__class__, PartialAuthentication): + return e.allowed_types + raise e + return [] + + def _parse_service_request(self, m): + service = m.get_string() + if self.transport.server_mode and (service == 'ssh-userauth'): + # accepted + m = Message() + m.add_byte(chr(MSG_SERVICE_ACCEPT)) + m.add_string(service) + self.transport._send_message(m) + return + # dunno this one + self._disconnect_service_not_available() + + def _parse_service_accept(self, m): + service = m.get_string() + if service == 'ssh-userauth': + self.transport._log(DEBUG, 'userauth is OK') + m = Message() + m.add_byte(chr(MSG_USERAUTH_REQUEST)) + m.add_string(self.username) + m.add_string('ssh-connection') + m.add_string(self.auth_method) + if self.auth_method == 'password': + m.add_boolean(False) + m.add_string(self.password.encode('UTF-8')) + elif self.auth_method == 'publickey': + m.add_boolean(True) + m.add_string(self.private_key.get_name()) + m.add_string(str(self.private_key)) + blob = self._get_session_blob(self.private_key, 'ssh-connection', self.username) + sig = self.private_key.sign_ssh_data(self.transport.randpool, blob) + m.add_string(str(sig)) + elif self.auth_method == 'keyboard-interactive': + m.add_string('') + m.add_string(self.submethods) + elif self.auth_method == 'none': + pass + else: + raise SSHException('Unknown auth method "%s"' % self.auth_method) + self.transport._send_message(m) + else: + self.transport._log(DEBUG, 'Service request "%s" accepted (?)' % service) + + def _send_auth_result(self, username, method, result): + # okay, send result + m = Message() + if result == AUTH_SUCCESSFUL: + self.transport._log(INFO, 'Auth granted (%s).' % method) + m.add_byte(chr(MSG_USERAUTH_SUCCESS)) + self.authenticated = True + else: + self.transport._log(INFO, 'Auth rejected (%s).' % method) + m.add_byte(chr(MSG_USERAUTH_FAILURE)) + m.add_string(self.transport.server_object.get_allowed_auths(username)) + if result == AUTH_PARTIALLY_SUCCESSFUL: + m.add_boolean(1) + else: + m.add_boolean(0) + self.auth_fail_count += 1 + self.transport._send_message(m) + if self.auth_fail_count >= 10: + self._disconnect_no_more_auth() + if result == AUTH_SUCCESSFUL: + self.transport._auth_trigger() + + def _interactive_query(self, q): + # make interactive query instead of response + m = Message() + m.add_byte(chr(MSG_USERAUTH_INFO_REQUEST)) + m.add_string(q.name) + m.add_string(q.instructions) + m.add_string('') + m.add_int(len(q.prompts)) + for p in q.prompts: + m.add_string(p[0]) + m.add_boolean(p[1]) + self.transport._send_message(m) + + def _parse_userauth_request(self, m): + if not self.transport.server_mode: + # er, uh... what? + m = Message() + m.add_byte(chr(MSG_USERAUTH_FAILURE)) + m.add_string('none') + m.add_boolean(0) + self.transport._send_message(m) + return + if self.authenticated: + # ignore + return + username = m.get_string() + service = m.get_string() + method = m.get_string() + self.transport._log(DEBUG, 'Auth request (type=%s) service=%s, username=%s' % (method, service, username)) + if service != 'ssh-connection': + self._disconnect_service_not_available() + return + if (self.auth_username is not None) and (self.auth_username != username): + self.transport._log(WARNING, 'Auth rejected because the client attempted to change username in mid-flight') + self._disconnect_no_more_auth() + return + self.auth_username = username + + if method == 'none': + result = self.transport.server_object.check_auth_none(username) + elif method == 'password': + changereq = m.get_boolean() + password = m.get_string().decode('UTF-8', 'replace') + if changereq: + # always treated as failure, since we don't support changing passwords, but collect + # the list of valid auth types from the callback anyway + self.transport._log(DEBUG, 'Auth request to change passwords (rejected)') + newpassword = m.get_string().decode('UTF-8', 'replace') + result = AUTH_FAILED + else: + result = self.transport.server_object.check_auth_password(username, password) + elif method == 'publickey': + sig_attached = m.get_boolean() + keytype = m.get_string() + keyblob = m.get_string() + try: + key = self.transport._key_info[keytype](Message(keyblob)) + except SSHException, e: + self.transport._log(INFO, 'Auth rejected: public key: %s' % str(e)) + key = None + except: + self.transport._log(INFO, 'Auth rejected: unsupported or mangled public key') + key = None + if key is None: + self._disconnect_no_more_auth() + return + # first check if this key is okay... if not, we can skip the verify + result = self.transport.server_object.check_auth_publickey(username, key) + if result != AUTH_FAILED: + # key is okay, verify it + if not sig_attached: + # client wants to know if this key is acceptable, before it + # signs anything... send special "ok" message + m = Message() + m.add_byte(chr(MSG_USERAUTH_PK_OK)) + m.add_string(keytype) + m.add_string(keyblob) + self.transport._send_message(m) + return + sig = Message(m.get_string()) + blob = self._get_session_blob(key, service, username) + if not key.verify_ssh_sig(blob, sig): + self.transport._log(INFO, 'Auth rejected: invalid signature') + result = AUTH_FAILED + elif method == 'keyboard-interactive': + lang = m.get_string() + submethods = m.get_string() + result = self.transport.server_object.check_auth_interactive(username, submethods) + if isinstance(result, InteractiveQuery): + # make interactive query instead of response + self._interactive_query(result) + return + else: + result = self.transport.server_object.check_auth_none(username) + # okay, send result + self._send_auth_result(username, method, result) + + def _parse_userauth_success(self, m): + self.transport._log(INFO, 'Authentication successful!') + self.authenticated = True + self.transport._auth_trigger() + if self.auth_event != None: + self.auth_event.set() + + def _parse_userauth_failure(self, m): + authlist = m.get_list() + partial = m.get_boolean() + if partial: + self.transport._log(INFO, 'Authentication continues...') + 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 not permitted.') + self.transport._log(DEBUG, 'Allowed methods: ' + str(authlist)) + self.transport.saved_exception = BadAuthenticationType('Bad authentication type', authlist) + else: + self.transport._log(INFO, 'Authentication failed.') + self.authenticated = False + self.username = None + if self.auth_event != None: + self.auth_event.set() + + def _parse_userauth_banner(self, m): + banner = m.get_string() + lang = m.get_string() + self.transport._log(INFO, 'Auth banner: ' + banner) + # who cares. + + def _parse_userauth_info_request(self, m): + if self.auth_method != 'keyboard-interactive': + raise SSHException('Illegal info request from server') + title = m.get_string() + instructions = m.get_string() + m.get_string() # lang + prompts = m.get_int() + prompt_list = [] + for i in range(prompts): + prompt_list.append((m.get_string(), m.get_boolean())) + response_list = self.interactive_handler(title, instructions, prompt_list) + + m = Message() + m.add_byte(chr(MSG_USERAUTH_INFO_RESPONSE)) + m.add_int(len(response_list)) + for r in response_list: + m.add_string(r) + self.transport._send_message(m) + + def _parse_userauth_info_response(self, m): + if not self.transport.server_mode: + raise SSHException('Illegal info response from server') + n = m.get_int() + responses = [] + for i in range(n): + responses.append(m.get_string()) + result = self.transport.server_object.check_auth_interactive_response(responses) + if isinstance(type(result), InteractiveQuery): + # make interactive query instead of response + self._interactive_query(result) + return + self._send_auth_result(self.auth_username, 'keyboard-interactive', result) + + + _handler_table = { + MSG_SERVICE_REQUEST: _parse_service_request, + MSG_SERVICE_ACCEPT: _parse_service_accept, + MSG_USERAUTH_REQUEST: _parse_userauth_request, + MSG_USERAUTH_SUCCESS: _parse_userauth_success, + MSG_USERAUTH_FAILURE: _parse_userauth_failure, + MSG_USERAUTH_BANNER: _parse_userauth_banner, + MSG_USERAUTH_INFO_REQUEST: _parse_userauth_info_request, + MSG_USERAUTH_INFO_RESPONSE: _parse_userauth_info_response, + } + + diff --git a/paramiko/ber.py b/paramiko/ber.py new file mode 100644 index 0000000..6a7823d --- /dev/null +++ b/paramiko/ber.py @@ -0,0 +1,128 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +import struct +import util + + +class BERException (Exception): + pass + + +class BER(object): + """ + Robey's tiny little attempt at a BER decoder. + """ + + def __init__(self, content=''): + self.content = content + self.idx = 0 + + def __str__(self): + return self.content + + def __repr__(self): + return 'BER(\'' + repr(self.content) + '\')' + + def decode(self): + return self.decode_next() + + def decode_next(self): + if self.idx >= len(self.content): + return None + ident = ord(self.content[self.idx]) + self.idx += 1 + if (ident & 31) == 31: + # identifier > 30 + ident = 0 + while self.idx < len(self.content): + t = ord(self.content[self.idx]) + self.idx += 1 + ident = (ident << 7) | (t & 0x7f) + if not (t & 0x80): + break + if self.idx >= len(self.content): + return None + # now fetch length + size = ord(self.content[self.idx]) + self.idx += 1 + if size & 0x80: + # more complimicated... + # FIXME: theoretically should handle indefinite-length (0x80) + t = size & 0x7f + if self.idx + t > len(self.content): + return None + size = util.inflate_long(self.content[self.idx : self.idx + t], True) + self.idx += t + if self.idx + size > len(self.content): + # can't fit + return None + data = self.content[self.idx : self.idx + size] + self.idx += size + # now switch on id + if ident == 0x30: + # sequence + return self.decode_sequence(data) + elif ident == 2: + # int + return util.inflate_long(data) + else: + # 1: boolean (00 false, otherwise true) + raise BERException('Unknown ber encoding type %d (robey is lazy)' % ident) + + def decode_sequence(data): + out = [] + b = BER(data) + while True: + x = b.decode_next() + if x is None: + return out + out.append(x) + decode_sequence = staticmethod(decode_sequence) + + def encode_tlv(self, ident, val): + # no need to support ident > 31 here + self.content += chr(ident) + if len(val) > 0x7f: + lenstr = util.deflate_long(len(val)) + self.content += chr(0x80 + len(lenstr)) + lenstr + else: + self.content += chr(len(val)) + self.content += val + + def encode(self, x): + if type(x) is bool: + if x: + self.encode_tlv(1, '\xff') + else: + self.encode_tlv(1, '\x00') + elif (type(x) is int) or (type(x) is long): + self.encode_tlv(2, util.deflate_long(x)) + elif type(x) is str: + self.encode_tlv(4, x) + elif (type(x) is list) or (type(x) is tuple): + self.encode_tlv(0x30, self.encode_sequence(x)) + else: + raise BERException('Unknown type for encoding: %s' % repr(type(x))) + + def encode_sequence(data): + b = BER() + for item in data: + b.encode(item) + return str(b) + encode_sequence = staticmethod(encode_sequence) diff --git a/paramiko/channel.py b/paramiko/channel.py new file mode 100644 index 0000000..8a00233 --- /dev/null +++ b/paramiko/channel.py @@ -0,0 +1,1174 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Abstraction for an SSH2 channel. +""" + +import sys +import time +import threading +import socket +import os + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ssh_exception import SSHException +from paramiko.file import BufferedFile +from paramiko import pipe + + +class Channel (object): + """ + A secure tunnel across an SSH L{Transport}. A Channel is meant to behave + like a socket, and has an API that should be indistinguishable from the + python socket API. + + Because SSH2 has a windowing kind of flow control, if you stop reading data + from a Channel and its buffer fills up, the server will be unable to send + you any more data until you read some of it. (This won't affect other + channels on the same transport -- all channels on a single transport are + flow-controlled independently.) Similarly, if the server isn't reading + data you send, calls to L{send} may block, unless you set a timeout. This + is exactly like a normal network socket, so it shouldn't be too surprising. + """ + + # lower bound on the max packet size we'll accept from the remote host + MIN_PACKET_SIZE = 1024 + + def __init__(self, chanid): + """ + Create a new channel. The channel is not associated with any + particular session or L{Transport} until the Transport attaches it. + Normally you would only call this method from the constructor of a + subclass of L{Channel}. + + @param chanid: the ID of this channel, as passed by an existing + L{Transport}. + @type chanid: int + """ + self.chanid = chanid + self.remote_chanid = 0 + self.transport = None + self.active = False + self.eof_received = 0 + self.eof_sent = 0 + self.in_buffer = '' + self.in_stderr_buffer = '' + self.timeout = None + self.closed = False + self.ultra_debug = False + self.lock = threading.Lock() + self.in_buffer_cv = threading.Condition(self.lock) + self.in_stderr_buffer_cv = threading.Condition(self.lock) + self.out_buffer_cv = threading.Condition(self.lock) + self.in_window_size = 0 + self.out_window_size = 0 + self.in_max_packet_size = 0 + self.out_max_packet_size = 0 + self.in_window_threshold = 0 + self.in_window_sofar = 0 + self.status_event = threading.Event() + self.name = str(chanid) + self.logger = util.get_logger('paramiko.chan.' + str(chanid)) + self.pipe = None + self.event = threading.Event() + self.combine_stderr = False + self.exit_status = -1 + + def __del__(self): + self.close() + + def __repr__(self): + """ + Return a string representation of this object, for debugging. + + @rtype: str + """ + out = '<paramiko.Channel %d' % self.chanid + if self.closed: + out += ' (closed)' + elif self.active: + if self.eof_received: + out += ' (EOF received)' + if self.eof_sent: + out += ' (EOF sent)' + out += ' (open) window=%d' % (self.out_window_size) + if len(self.in_buffer) > 0: + out += ' in-buffer=%d' % (len(self.in_buffer),) + out += ' -> ' + repr(self.transport) + out += '>' + return out + + def get_pty(self, term='vt100', width=80, height=24): + """ + Request a pseudo-terminal from the server. This is usually used right + after creating a client channel, to ask the server to provide some + basic terminal semantics for a shell invoked with L{invoke_shell}. + It isn't necessary (or desirable) to call this method if you're going + to exectue a single command with L{exec_command}. + + @param term: the terminal type to emulate (for example, C{'vt100'}). + @type term: str + @param width: width (in characters) of the terminal screen + @type width: int + @param height: height (in characters) of the terminal screen + @type height: int + @return: C{True} if the operation succeeded; C{False} if not. + @rtype: bool + """ + if self.closed or self.eof_received or self.eof_sent or not self.active: + raise SSHException('Channel is not open') + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('pty-req') + m.add_boolean(True) + m.add_string(term) + m.add_int(width) + m.add_int(height) + # pixel height, width (usually useless) + m.add_int(0).add_int(0) + m.add_string('') + self.event.clear() + self.transport._send_user_message(m) + while True: + self.event.wait(0.1) + if self.closed: + return False + if self.event.isSet(): + return True + + def invoke_shell(self): + """ + Request an interactive shell session on this channel. If the server + allows it, the channel will then be directly connected to the stdin, + stdout, and stderr of the shell. + + Normally you would call L{get_pty} before this, in which case the + shell will operate through the pty, and the channel will be connected + to the stdin and stdout of the pty. + + When the shell exits, the channel will be closed and can't be reused. + You must open a new channel if you wish to open another shell. + + @return: C{True} if the operation succeeded; C{False} if not. + @rtype: bool + """ + if self.closed or self.eof_received or self.eof_sent or not self.active: + raise SSHException('Channel is not open') + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('shell') + m.add_boolean(1) + self.event.clear() + self.transport._send_user_message(m) + while True: + self.event.wait(0.1) + if self.closed: + return False + if self.event.isSet(): + return True + + def exec_command(self, command): + """ + Execute a command on the server. If the server allows it, the channel + will then be directly connected to the stdin, stdout, and stderr of + the command being executed. + + When the command finishes executing, the channel will be closed and + can't be reused. You must open a new channel if you wish to execute + another command. + + @param command: a shell command to execute. + @type command: str + @return: C{True} if the operation succeeded; C{False} if not. + @rtype: bool + """ + if self.closed or self.eof_received or self.eof_sent or not self.active: + raise SSHException('Channel is not open') + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('exec') + m.add_boolean(1) + m.add_string(command) + self.event.clear() + self.transport._send_user_message(m) + while True: + self.event.wait(0.1) + if self.closed: + return False + if self.event.isSet(): + return True + + def invoke_subsystem(self, subsystem): + """ + Request a subsystem on the server (for example, C{sftp}). If the + server allows it, the channel will then be directly connected to the + requested subsystem. + + When the subsystem finishes, the channel will be closed and can't be + reused. + + @param subsystem: name of the subsystem being requested. + @type subsystem: str + @return: C{True} if the operation succeeded; C{False} if not. + @rtype: bool + """ + if self.closed or self.eof_received or self.eof_sent or not self.active: + raise SSHException('Channel is not open') + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('subsystem') + m.add_boolean(1) + m.add_string(subsystem) + self.event.clear() + self.transport._send_user_message(m) + while True: + self.event.wait(0.1) + if self.closed: + return False + if self.event.isSet(): + return True + + def resize_pty(self, width=80, height=24): + """ + Resize the pseudo-terminal. This can be used to change the width and + height of the terminal emulation created in a previous L{get_pty} call. + + @param width: new width (in characters) of the terminal screen + @type width: int + @param height: new height (in characters) of the terminal screen + @type height: int + @return: C{True} if the operation succeeded; C{False} if not. + @rtype: bool + """ + if self.closed or self.eof_received or self.eof_sent or not self.active: + raise SSHException('Channel is not open') + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('window-change') + m.add_boolean(1) + m.add_int(width) + m.add_int(height) + m.add_int(0).add_int(0) + self.event.clear() + self.transport._send_user_message(m) + while True: + self.event.wait(0.1) + if self.closed: + return False + if self.event.isSet(): + return True + + def recv_exit_status(self): + """ + Return the exit status from the process on the server. This is + mostly useful for retrieving the reults of an L{exec_command}. + If the command hasn't finished yet, this method will wait until + it does, or until the channel is closed. If no exit status is + provided by the server, -1 is returned. + + @return: the exit code of the process on the server. + @rtype: int + + @since: 1.2 + """ + while True: + if self.closed or self.status_event.isSet(): + return self.exit_status + self.status_event.wait(0.1) + + def send_exit_status(self, status): + """ + Send the exit status of an executed command to the client. (This + really only makes sense in server mode.) Many clients expect to + get some sort of status code back from an executed command after + it completes. + + @param status: the exit code of the process + @type status: int + + @since: 1.2 + """ + # in many cases, the channel will not still be open here. + # that's fine. + m = Message() + m.add_byte(chr(MSG_CHANNEL_REQUEST)) + m.add_int(self.remote_chanid) + m.add_string('exit-status') + m.add_boolean(0) + m.add_int(status) + self.transport._send_user_message(m) + + def get_transport(self): + """ + Return the L{Transport} associated with this channel. + + @return: the L{Transport} that was used to create this channel. + @rtype: L{Transport} + """ + return self.transport + + def set_name(self, name): + """ + Set a name for this channel. Currently it's only used to set the name + of the log level used for debugging. The name can be fetched with the + L{get_name} method. + + @param name: new channel name. + @type name: str + """ + self.name = name + self.logger = util.get_logger(self.transport.get_log_channel() + '.' + self.name) + + def get_name(self): + """ + Get the name of this channel that was previously set by L{set_name}. + + @return: the name of this channel. + @rtype: str + """ + return self.name + + def get_id(self): + """ + Return the ID # for this channel. The channel ID is unique across + a L{Transport} and usually a small number. It's also the number + passed to L{ServerInterface.check_channel_request} when determining + whether to accept a channel request in server mode. + + @return: the ID of this channel. + @rtype: int + + @since: ivysaur + """ + return self.chanid + + def set_combine_stderr(self, combine): + """ + Set whether stderr should be combined into stdout on this channel. + The default is C{False}, but in some cases it may be convenient to + have both streams combined. + + If this is C{False}, and L{exec_command} is called (or C{invoke_shell} + with no pty), output to stderr will not show up through the L{recv} + and L{recv_ready} calls. You will have to use L{recv_stderr} and + L{recv_stderr_ready} to get stderr output. + + If this is C{True}, data will never show up via L{recv_stderr} or + L{recv_stderr_ready}. + + @param combine: C{True} if stderr output should be combined into + stdout on this channel. + @type combine: bool + @return: previous setting. + @rtype: bool + + @since: 1.1 + """ + data = '' + self.lock.acquire() + try: + old = self.combine_stderr + self.combine_stderr = combine + if combine and not old: + # copy old stderr buffer into primary buffer + data = self.in_stderr_buffer + self.in_stderr_buffer = '' + finally: + self.lock.release() + if len(data) > 0: + self._feed(data) + return old + + + ### socket API + + + def settimeout(self, timeout): + """ + Set a timeout on blocking read/write operations. The C{timeout} + argument can be a nonnegative float expressing seconds, or C{None}. If + a float is given, subsequent channel read/write operations will raise + a timeout exception if the timeout period value has elapsed before the + operation has completed. Setting a timeout of C{None} disables + timeouts on socket operations. + + C{chan.settimeout(0.0)} is equivalent to C{chan.setblocking(0)}; + C{chan.settimeout(None)} is equivalent to C{chan.setblocking(1)}. + + @param timeout: seconds to wait for a pending read/write operation + before raising C{socket.timeout}, or C{None} for no timeout. + @type timeout: float + """ + self.timeout = timeout + + def gettimeout(self): + """ + Returns the timeout in seconds (as a float) associated with socket + operations, or C{None} if no timeout is set. This reflects the last + call to L{setblocking} or L{settimeout}. + + @return: timeout in seconds, or C{None}. + @rtype: float + """ + return self.timeout + + def setblocking(self, blocking): + """ + Set blocking or non-blocking mode of the channel: if C{blocking} is 0, + the channel is set to non-blocking mode; otherwise it's set to blocking + mode. Initially all channels are in blocking mode. + + In non-blocking mode, if a L{recv} call doesn't find any data, or if a + L{send} call can't immediately dispose of the data, an error exception + is raised. In blocking mode, the calls block until they can proceed. + + C{chan.setblocking(0)} is equivalent to C{chan.settimeout(0)}; + C{chan.setblocking(1)} is equivalent to C{chan.settimeout(None)}. + + @param blocking: 0 to set non-blocking mode; non-0 to set blocking + mode. + @type blocking: int + """ + if blocking: + self.settimeout(None) + else: + self.settimeout(0.0) + + def close(self): + """ + Close the channel. All future read/write operations on the channel + will fail. The remote end will receive no more data (after queued data + is flushed). Channels are automatically closed when their L{Transport} + is closed or when they are garbage collected. + """ + self.lock.acquire() + try: + if not self.active or self.closed: + return + msgs = self._close_internal() + + # only close the pipe when the user explicitly closes the channel. + # otherwise they will get unpleasant surprises. + if self.pipe is not None: + self.pipe.close() + self.pipe = None + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + def recv_ready(self): + """ + Returns true if data is buffered and ready to be read from this + channel. A C{False} result does not mean that the channel has closed; + it means you may need to wait before more data arrives. + + @return: C{True} if a L{recv} call on this channel would immediately + return at least one byte; C{False} otherwise. + @rtype: boolean + """ + self.lock.acquire() + try: + if len(self.in_buffer) == 0: + return False + return True + finally: + self.lock.release() + + def recv(self, nbytes): + """ + Receive data from the channel. The return value is a string + representing the data received. The maximum amount of data to be + received at once is specified by C{nbytes}. If a string of length zero + is returned, the channel stream has closed. + + @param nbytes: maximum number of bytes to read. + @type nbytes: int + @return: data. + @rtype: str + + @raise socket.timeout: if no data is ready before the timeout set by + L{settimeout}. + """ + out = '' + self.lock.acquire() + try: + if len(self.in_buffer) == 0: + if self.closed or self.eof_received: + return out + # should we block? + if self.timeout == 0.0: + raise socket.timeout() + # loop here in case we get woken up but a different thread has grabbed everything in the buffer + timeout = self.timeout + while (len(self.in_buffer) == 0) and not self.closed and not self.eof_received: + then = time.time() + self.in_buffer_cv.wait(timeout) + if timeout != None: + timeout -= time.time() - then + if timeout <= 0.0: + raise socket.timeout() + # something in the buffer and we have the lock + if len(self.in_buffer) <= nbytes: + out = self.in_buffer + self.in_buffer = '' + if self.pipe is not None: + # clear the pipe, since no more data is buffered + self.pipe.clear() + else: + out = self.in_buffer[:nbytes] + self.in_buffer = self.in_buffer[nbytes:] + ack = self._check_add_window(len(out)) + finally: + self.lock.release() + + # no need to hold the channel lock when sending this + if ack > 0: + m = Message() + m.add_byte(chr(MSG_CHANNEL_WINDOW_ADJUST)) + m.add_int(self.remote_chanid) + m.add_int(ack) + self.transport._send_user_message(m) + + return out + + def recv_stderr_ready(self): + """ + Returns true if data is buffered and ready to be read from this + channel's stderr stream. Only channels using L{exec_command} or + L{invoke_shell} without a pty will ever have data on the stderr + stream. + + @return: C{True} if a L{recv_stderr} call on this channel would + immediately return at least one byte; C{False} otherwise. + @rtype: boolean + + @since: 1.1 + """ + self.lock.acquire() + try: + if len(self.in_stderr_buffer) == 0: + return False + return True + finally: + self.lock.release() + + def recv_stderr(self, nbytes): + """ + Receive data from the channel's stderr stream. Only channels using + L{exec_command} or L{invoke_shell} without a pty will ever have data + on the stderr stream. The return value is a string representing the + data received. The maximum amount of data to be received at once is + specified by C{nbytes}. If a string of length zero is returned, the + channel stream has closed. + + @param nbytes: maximum number of bytes to read. + @type nbytes: int + @return: data. + @rtype: str + + @raise socket.timeout: if no data is ready before the timeout set by + L{settimeout}. + + @since: 1.1 + """ + out = '' + self.lock.acquire() + try: + if len(self.in_stderr_buffer) == 0: + if self.closed or self.eof_received: + return out + # should we block? + if self.timeout == 0.0: + raise socket.timeout() + # loop here in case we get woken up but a different thread has grabbed everything in the buffer + timeout = self.timeout + while (len(self.in_stderr_buffer) == 0) and not self.closed and not self.eof_received: + then = time.time() + self.in_stderr_buffer_cv.wait(timeout) + if timeout != None: + timeout -= time.time() - then + if timeout <= 0.0: + raise socket.timeout() + # something in the buffer and we have the lock + if len(self.in_stderr_buffer) <= nbytes: + out = self.in_stderr_buffer + self.in_stderr_buffer = '' + else: + out = self.in_stderr_buffer[:nbytes] + self.in_stderr_buffer = self.in_stderr_buffer[nbytes:] + self._check_add_window(len(out)) + finally: + self.lock.release() + return out + + def send(self, s): + """ + Send data to the channel. Returns the number of bytes sent, or 0 if + the channel stream is closed. Applications are responsible for + checking that all data has been sent: if only some of the data was + transmitted, the application needs to attempt delivery of the remaining + data. + + @param s: data to send. + @type s: str + @return: number of bytes actually sent. + @rtype: int + + @raise socket.timeout: if no data could be sent before the timeout set + by L{settimeout}. + """ + size = len(s) + self.lock.acquire() + try: + size = self._wait_for_send_window(size) + if size == 0: + # eof or similar + return 0 + m = Message() + m.add_byte(chr(MSG_CHANNEL_DATA)) + m.add_int(self.remote_chanid) + m.add_string(s[:size]) + self.transport._send_user_message(m) + finally: + self.lock.release() + return size + + def send_stderr(self, s): + """ + Send data to the channel on the "stderr" stream. This is normally + only used by servers to send output from shell commands -- clients + won't use this. Returns the number of bytes sent, or 0 if the channel + stream is closed. Applications are responsible for checking that all + data has been sent: if only some of the data was transmitted, the + application needs to attempt delivery of the remaining data. + + @param s: data to send. + @type s: str + @return: number of bytes actually sent. + @rtype: int + + @raise socket.timeout: if no data could be sent before the timeout set + by L{settimeout}. + + @since: 1.1 + """ + size = len(s) + self.lock.acquire() + try: + size = self._wait_for_send_window(size) + if size == 0: + # eof or similar + return 0 + m = Message() + m.add_byte(chr(MSG_CHANNEL_EXTENDED_DATA)) + m.add_int(self.remote_chanid) + m.add_int(1) + m.add_string(s[:size]) + self.transport._send_user_message(m) + finally: + self.lock.release() + return size + + def sendall(self, s): + """ + Send data to the channel, without allowing partial results. Unlike + L{send}, this method continues to send data from the given string until + either all data has been sent or an error occurs. Nothing is returned. + + @param s: data to send. + @type s: str + + @raise socket.timeout: if sending stalled for longer than the timeout + set by L{settimeout}. + @raise socket.error: if an error occured before the entire string was + sent. + + @note: If the channel is closed while only part of the data hase been + sent, there is no way to determine how much data (if any) was sent. + This is irritating, but identically follows python's API. + """ + while s: + if self.closed: + # this doesn't seem useful, but it is the documented behavior of Socket + raise socket.error('Socket is closed') + sent = self.send(s) + s = s[sent:] + return None + + def sendall_stderr(self, s): + """ + Send data to the channel's "stderr" stream, without allowing partial + results. Unlike L{send_stderr}, this method continues to send data + from the given string until all data has been sent or an error occurs. + Nothing is returned. + + @param s: data to send to the client as "stderr" output. + @type s: str + + @raise socket.timeout: if sending stalled for longer than the timeout + set by L{settimeout}. + @raise socket.error: if an error occured before the entire string was + sent. + + @since: 1.1 + """ + while s: + if self.closed: + raise socket.error('Socket is closed') + sent = self.send_stderr(s) + s = s[sent:] + return None + + def makefile(self, *params): + """ + Return a file-like object associated with this channel. The optional + C{mode} and C{bufsize} arguments are interpreted the same way as by + the built-in C{file()} function in python. + + @return: object which can be used for python file I/O. + @rtype: L{ChannelFile} + """ + return ChannelFile(*([self] + list(params))) + + def makefile_stderr(self, *params): + """ + Return a file-like object associated with this channel's stderr + stream. Only channels using L{exec_command} or L{invoke_shell} + without a pty will ever have data on the stderr stream. + + The optional C{mode} and C{bufsize} arguments are interpreted the + same way as by the built-in C{file()} function in python. For a + client, it only makes sense to open this file for reading. For a + server, it only makes sense to open this file for writing. + + @return: object which can be used for python file I/O. + @rtype: L{ChannelFile} + + @since: 1.1 + """ + return ChannelStderrFile(*([self] + list(params))) + + def fileno(self): + """ + Returns an OS-level file descriptor which can be used for polling, but + but I{not} for reading or writing). This is primaily to allow python's + C{select} module to work. + + The first time C{fileno} is called on a channel, a pipe is created to + simulate real OS-level file descriptor (FD) behavior. Because of this, + two OS-level FDs are created, which will use up FDs faster than normal. + You won't notice this effect unless you open hundreds or thousands of + channels simultaneously, but it's still notable. + + @return: an OS-level file descriptor + @rtype: int + + @warning: This method causes channel reads to be slightly less + efficient. + """ + self.lock.acquire() + try: + if self.pipe is not None: + return self.pipe.fileno() + # create the pipe and feed in any existing data + self.pipe = pipe.make_pipe() + if len(self.in_buffer) > 0: + self.pipe.set() + return self.pipe.fileno() + finally: + self.lock.release() + + def shutdown(self, how): + """ + Shut down one or both halves of the connection. If C{how} is 0, + further receives are disallowed. If C{how} is 1, further sends + are disallowed. If C{how} is 2, further sends and receives are + disallowed. This closes the stream in one or both directions. + + @param how: 0 (stop receiving), 1 (stop sending), or 2 (stop + receiving and sending). + @type how: int + """ + if (how == 0) or (how == 2): + # feign "read" shutdown + self.eof_received = 1 + if (how == 1) or (how == 2): + self.lock.acquire() + try: + m = self._send_eof() + finally: + self.lock.release() + if m is not None: + self.transport._send_user_message(m) + + def shutdown_read(self): + """ + Shutdown the receiving side of this socket, closing the stream in + the incoming direction. After this call, future reads on this + channel will fail instantly. This is a convenience method, equivalent + to C{shutdown(0)}, for people who don't make it a habit to + memorize unix constants from the 1970s. + + @since: 1.2 + """ + self.shutdown(0) + + def shutdown_write(self): + """ + Shutdown the sending side of this socket, closing the stream in + the outgoing direction. After this call, future writes on this + channel will fail instantly. This is a convenience method, equivalent + to C{shutdown(1)}, for people who don't make it a habit to + memorize unix constants from the 1970s. + + @since: 1.2 + """ + self.shutdown(1) + + + ### calls from Transport + + + def _set_transport(self, transport): + self.transport = transport + self.logger = util.get_logger(self.transport.get_log_channel() + '.' + self.name) + + def _set_window(self, window_size, max_packet_size): + self.in_window_size = window_size + self.in_max_packet_size = max_packet_size + # threshold of bytes we receive before we bother to send a window update + self.in_window_threshold = window_size // 10 + self.in_window_sofar = 0 + self._log(DEBUG, 'Max packet in: %d bytes' % max_packet_size) + + def _set_remote_channel(self, chanid, window_size, max_packet_size): + self.remote_chanid = chanid + self.out_window_size = window_size + self.out_max_packet_size = max(max_packet_size, self.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.set() + return + + def _request_failed(self, m): + self.lock.acquire() + try: + msgs = self._close_internal() + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + def _feed(self, m): + if type(m) is str: + # passed from _feed_extended + s = m + else: + s = m.get_string() + self.lock.acquire() + try: + if self.ultra_debug: + self._log(DEBUG, 'fed %d bytes' % len(s)) + if self.pipe is not None: + self.pipe.set() + self.in_buffer += s + self.in_buffer_cv.notifyAll() + finally: + self.lock.release() + + def _feed_extended(self, m): + code = m.get_int() + s = m.get_string() + if code != 1: + self._log(ERROR, 'unknown extended_data type %d; discarding' % code) + return + if self.combine_stderr: + return self._feed(s) + self.lock.acquire() + try: + if self.ultra_debug: + self._log(DEBUG, 'fed %d stderr bytes' % len(s)) + self.in_stderr_buffer += s + self.in_stderr_buffer_cv.notifyAll() + finally: + self.lock.release() + + def _window_adjust(self, m): + nbytes = m.get_int() + self.lock.acquire() + try: + if self.ultra_debug: + self._log(DEBUG, 'window up %d' % nbytes) + self.out_window_size += nbytes + self.out_buffer_cv.notifyAll() + finally: + self.lock.release() + + def _handle_request(self, m): + key = m.get_string() + want_reply = m.get_boolean() + server = self.transport.server_object + ok = False + if key == 'exit-status': + self.exit_status = m.get_int() + self.status_event.set() + ok = True + elif key == 'xon-xoff': + # ignore + ok = True + elif key == 'pty-req': + term = m.get_string() + width = m.get_int() + height = m.get_int() + pixelwidth = m.get_int() + pixelheight = m.get_int() + modes = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_pty_request(self, term, width, height, pixelwidth, + pixelheight, modes) + elif key == 'shell': + if server is None: + ok = False + else: + ok = server.check_channel_shell_request(self) + elif key == 'exec': + cmd = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_exec_request(self, cmd) + elif key == 'subsystem': + name = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_subsystem_request(self, name) + elif key == 'window-change': + width = m.get_int() + height = m.get_int() + pixelwidth = m.get_int() + pixelheight = m.get_int() + if server is None: + ok = False + else: + ok = server.check_channel_window_change_request(self, width, height, pixelwidth, + pixelheight) + else: + self._log(DEBUG, 'Unhandled channel request "%s"' % key) + ok = False + if want_reply: + m = Message() + if ok: + m.add_byte(chr(MSG_CHANNEL_SUCCESS)) + else: + m.add_byte(chr(MSG_CHANNEL_FAILURE)) + m.add_int(self.remote_chanid) + self.transport._send_user_message(m) + + def _handle_eof(self, m): + self.lock.acquire() + try: + if not self.eof_received: + self.eof_received = True + self.in_buffer_cv.notifyAll() + self.in_stderr_buffer_cv.notifyAll() + if self.pipe is not None: + self.pipe.set_forever() + finally: + self.lock.release() + self._log(DEBUG, 'EOF received') + + def _handle_close(self, m): + self.lock.acquire() + try: + msgs = self._close_internal() + self.transport._unlink_channel(self.chanid) + finally: + self.lock.release() + for m in msgs: + if m is not None: + self.transport._send_user_message(m) + + + ### internals... + + + def _log(self, level, msg): + self.logger.log(level, msg) + + def _set_closed(self): + # you are holding the lock. + self.closed = True + self.in_buffer_cv.notifyAll() + self.in_stderr_buffer_cv.notifyAll() + self.out_buffer_cv.notifyAll() + if self.pipe is not None: + self.pipe.set_forever() + + def _send_eof(self): + # you are holding the lock. + if self.eof_sent: + return None + m = Message() + m.add_byte(chr(MSG_CHANNEL_EOF)) + m.add_int(self.remote_chanid) + self.eof_sent = True + self._log(DEBUG, 'EOF sent') + return m + + def _close_internal(self): + # you are holding the lock. + if not self.active or self.closed: + return None, None + m1 = self._send_eof() + m2 = Message() + m2.add_byte(chr(MSG_CHANNEL_CLOSE)) + m2.add_int(self.remote_chanid) + self._set_closed() + # can't unlink from the Transport yet -- the remote side may still + # try to send meta-data (exit-status, etc) + return m1, m2 + + def _unlink(self): + # server connection could die before we become active: still signal the close! + if self.closed: + return + self.lock.acquire() + try: + self._set_closed() + self.transport._unlink_channel(self.chanid) + finally: + self.lock.release() + + def _check_add_window(self, n): + # already holding the lock! + if self.closed or self.eof_received or not self.active: + return 0 + if self.ultra_debug: + self._log(DEBUG, 'addwindow %d' % n) + self.in_window_sofar += n + if self.in_window_sofar <= self.in_window_threshold: + return 0 + if self.ultra_debug: + self._log(DEBUG, 'addwindow send %d' % self.in_window_sofar) + out = self.in_window_sofar + self.in_window_sofar = 0 + return out + + def _wait_for_send_window(self, size): + """ + (You are already holding the lock.) + Wait for the send window to open up, and allocate up to C{size} bytes + for transmission. If no space opens up before the timeout, a timeout + exception is raised. Returns the number of bytes available to send + (may be less than requested). + """ + # you are already holding the lock + if self.closed or self.eof_sent: + return 0 + if self.out_window_size == 0: + # should we block? + if self.timeout == 0.0: + raise socket.timeout() + # loop here in case we get woken up but a different thread has filled the buffer + timeout = self.timeout + while self.out_window_size == 0: + if self.closed or self.eof_sent: + return 0 + then = time.time() + self.out_buffer_cv.wait(timeout) + if timeout != None: + timeout -= time.time() - then + if timeout <= 0.0: + raise socket.timeout() + # we have some window to squeeze into + if self.closed or self.eof_sent: + return 0 + if self.out_window_size < size: + size = self.out_window_size + if self.out_max_packet_size - 64 < size: + size = self.out_max_packet_size - 64 + self.out_window_size -= size + if self.ultra_debug: + self._log(DEBUG, 'window down to %d' % self.out_window_size) + return size + + +class ChannelFile (BufferedFile): + """ + A file-like wrapper around L{Channel}. A ChannelFile is created by calling + L{Channel.makefile}. + + @bug: To correctly emulate the file object created from a socket's + C{makefile} method, a L{Channel} and its C{ChannelFile} should be able + to be closed or garbage-collected independently. Currently, closing + the C{ChannelFile} does nothing but flush the buffer. + """ + + def __init__(self, channel, mode = 'r', bufsize = -1): + self.channel = channel + BufferedFile.__init__(self) + self._set_mode(mode, bufsize) + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + + @rtype: str + """ + return '<paramiko.ChannelFile from ' + repr(self.channel) + '>' + + def _read(self, size): + return self.channel.recv(size) + + def _write(self, data): + self.channel.sendall(data) + return len(data) + + seek = BufferedFile.seek + + +class ChannelStderrFile (ChannelFile): + def __init__(self, channel, mode = 'r', bufsize = -1): + ChannelFile.__init__(self, channel, mode, bufsize) + + def _read(self, size): + return self.channel.recv_stderr(size) + + def _write(self, data): + self.channel.sendall_stderr(data) + return len(data) + + +# vim: set shiftwidth=4 expandtab : diff --git a/paramiko/common.py b/paramiko/common.py new file mode 100644 index 0000000..c5999e6 --- /dev/null +++ b/paramiko/common.py @@ -0,0 +1,136 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Common constants and global variables. +""" + +MSG_DISCONNECT, MSG_IGNORE, MSG_UNIMPLEMENTED, MSG_DEBUG, MSG_SERVICE_REQUEST, \ + MSG_SERVICE_ACCEPT = range(1, 7) +MSG_KEXINIT, MSG_NEWKEYS = range(20, 22) +MSG_USERAUTH_REQUEST, MSG_USERAUTH_FAILURE, MSG_USERAUTH_SUCCESS, \ + MSG_USERAUTH_BANNER = range(50, 54) +MSG_USERAUTH_PK_OK = 60 +MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE = range(60, 62) +MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE = range(80, 83) +MSG_CHANNEL_OPEN, MSG_CHANNEL_OPEN_SUCCESS, MSG_CHANNEL_OPEN_FAILURE, \ + MSG_CHANNEL_WINDOW_ADJUST, MSG_CHANNEL_DATA, MSG_CHANNEL_EXTENDED_DATA, \ + MSG_CHANNEL_EOF, MSG_CHANNEL_CLOSE, MSG_CHANNEL_REQUEST, \ + MSG_CHANNEL_SUCCESS, MSG_CHANNEL_FAILURE = range(90, 101) + + +# for debugging: +MSG_NAMES = { + MSG_DISCONNECT: 'disconnect', + MSG_IGNORE: 'ignore', + MSG_UNIMPLEMENTED: 'unimplemented', + MSG_DEBUG: 'debug', + MSG_SERVICE_REQUEST: 'service-request', + MSG_SERVICE_ACCEPT: 'service-accept', + MSG_KEXINIT: 'kexinit', + MSG_NEWKEYS: 'newkeys', + 30: 'kex30', + 31: 'kex31', + 32: 'kex32', + 33: 'kex33', + 34: 'kex34', + MSG_USERAUTH_REQUEST: 'userauth-request', + MSG_USERAUTH_FAILURE: 'userauth-failure', + MSG_USERAUTH_SUCCESS: 'userauth-success', + MSG_USERAUTH_BANNER: 'userauth--banner', + MSG_USERAUTH_PK_OK: 'userauth-60(pk-ok/info-request)', + MSG_USERAUTH_INFO_RESPONSE: 'userauth-info-response', + MSG_GLOBAL_REQUEST: 'global-request', + MSG_REQUEST_SUCCESS: 'request-success', + MSG_REQUEST_FAILURE: 'request-failure', + MSG_CHANNEL_OPEN: 'channel-open', + MSG_CHANNEL_OPEN_SUCCESS: 'channel-open-success', + MSG_CHANNEL_OPEN_FAILURE: 'channel-open-failure', + MSG_CHANNEL_WINDOW_ADJUST: 'channel-window-adjust', + MSG_CHANNEL_DATA: 'channel-data', + MSG_CHANNEL_EXTENDED_DATA: 'channel-extended-data', + MSG_CHANNEL_EOF: 'channel-eof', + MSG_CHANNEL_CLOSE: 'channel-close', + MSG_CHANNEL_REQUEST: 'channel-request', + MSG_CHANNEL_SUCCESS: 'channel-success', + MSG_CHANNEL_FAILURE: 'channel-failure' + } + + +# authentication request return codes: +AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3) + + +# channel request failed reasons: +(OPEN_SUCCEEDED, + OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, + OPEN_FAILED_CONNECT_FAILED, + OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, + OPEN_FAILED_RESOURCE_SHORTAGE) = range(0, 5) + + +CONNECTION_FAILED_CODE = { + 1: 'Administratively prohibited', + 2: 'Connect failed', + 3: 'Unknown channel type', + 4: 'Resource shortage' +} + + +DISCONNECT_SERVICE_NOT_AVAILABLE, DISCONNECT_AUTH_CANCELLED_BY_USER, \ + DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE = 7, 13, 14 + + +from Crypto.Util.randpool import PersistentRandomPool, RandomPool + +# keep a crypto-strong PRNG nearby +try: + randpool = PersistentRandomPool(os.path.join(os.path.expanduser('~'), '/.randpool')) +except: + # the above will likely fail on Windows - fall back to non-persistent random pool + randpool = RandomPool() + +try: + randpool.randomize() +except: + # earlier versions of pyCrypto (pre-2.0) don't have randomize() + pass + +import sys +if sys.version_info < (2, 3): + try: + import logging + except: + import logging22 as logging + import select + PY22 = True + + import socket + if not hasattr(socket, 'timeout'): + class timeout(socket.error): pass + socket.timeout = timeout + del timeout +else: + import logging + PY22 = False + +DEBUG = logging.DEBUG +INFO = logging.INFO +WARNING = logging.WARNING +ERROR = logging.ERROR +CRITICAL = logging.CRITICAL diff --git a/paramiko/compress.py b/paramiko/compress.py new file mode 100644 index 0000000..bdf4b42 --- /dev/null +++ b/paramiko/compress.py @@ -0,0 +1,39 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Compression implementations for a Transport. +""" + +import zlib + + +class ZlibCompressor (object): + def __init__(self): + self.z = zlib.compressobj(9) + + def __call__(self, data): + return self.z.compress(data) + self.z.flush(zlib.Z_FULL_FLUSH) + + +class ZlibDecompressor (object): + def __init__(self): + self.z = zlib.decompressobj() + + def __call__(self, data): + return self.z.decompress(data) diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py new file mode 100644 index 0000000..2b31372 --- /dev/null +++ b/paramiko/dsskey.py @@ -0,0 +1,176 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{DSSKey} +""" + +from Crypto.PublicKey import DSA +from Crypto.Hash import SHA + +from paramiko.common import * +from paramiko import util +from paramiko.ssh_exception import SSHException +from paramiko.message import Message +from paramiko.ber import BER, BERException +from paramiko.pkey import PKey + + +class DSSKey (PKey): + """ + Representation of a DSS key which can be used to sign an verify SSH2 + data. + """ + + def __init__(self, msg=None, data=None, filename=None, password=None, vals=None): + if filename is not None: + self._from_private_key_file(filename, password) + return + if (msg is None) and (data is not None): + msg = Message(data) + if vals is not None: + self.p, self.q, self.g, self.y = vals + else: + if msg is None: + raise SSHException('Key object may not be empty') + if msg.get_string() != 'ssh-dss': + raise SSHException('Invalid key') + self.p = msg.get_mpint() + self.q = msg.get_mpint() + self.g = msg.get_mpint() + self.y = msg.get_mpint() + self.size = util.bit_length(self.p) + + def __str__(self): + m = Message() + m.add_string('ssh-dss') + m.add_mpint(self.p) + m.add_mpint(self.q) + m.add_mpint(self.g) + m.add_mpint(self.y) + return str(m) + + def __hash__(self): + h = hash(self.get_name()) + h = h * 37 + hash(self.p) + h = h * 37 + hash(self.q) + h = h * 37 + hash(self.g) + h = h * 37 + hash(self.y) + # h might be a long by now... + return hash(h) + + def get_name(self): + return 'ssh-dss' + + def get_bits(self): + return self.size + + def can_sign(self): + return hasattr(self, 'x') + + def sign_ssh_data(self, rpool, data): + digest = SHA.new(data).digest() + dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q), long(self.x))) + # generate a suitable k + qsize = len(util.deflate_long(self.q, 0)) + while True: + k = util.inflate_long(rpool.get_bytes(qsize), 1) + if (k > 2) and (k < self.q): + break + r, s = dss.sign(util.inflate_long(digest, 1), k) + m = Message() + m.add_string('ssh-dss') + # apparently, in rare cases, r or s may be shorter than 20 bytes! + rstr = util.deflate_long(r, 0) + sstr = util.deflate_long(s, 0) + if len(rstr) < 20: + rstr = '\x00' * (20 - len(rstr)) + rstr + if len(sstr) < 20: + sstr = '\x00' * (20 - len(sstr)) + sstr + m.add_string(rstr + sstr) + return m + + def verify_ssh_sig(self, data, msg): + if len(str(msg)) == 40: + # spies.com bug: signature has no header + sig = str(msg) + else: + kind = msg.get_string() + if kind != 'ssh-dss': + return 0 + sig = msg.get_string() + + # pull out (r, s) which are NOT encoded as mpints + sigR = util.inflate_long(sig[:20], 1) + sigS = util.inflate_long(sig[20:], 1) + sigM = util.inflate_long(SHA.new(data).digest(), 1) + + dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q))) + return dss.verify(sigM, (sigR, sigS)) + + def write_private_key_file(self, filename, password=None): + keylist = [ 0, self.p, self.q, self.g, self.y, self.x ] + try: + b = BER() + b.encode(keylist) + except BERException: + raise SSHException('Unable to create ber encoding of key') + self._write_private_key_file('DSA', filename, str(b), password) + + def generate(bits=1024, progress_func=None): + """ + Generate a new private DSS key. This factory function can be used to + generate a new host key or authentication key. + + @param bits: number of bits the generated key should be. + @type bits: int + @param progress_func: an optional function to call at key points in + key generation (used by C{pyCrypto.PublicKey}). + @type progress_func: function + @return: new private key + @rtype: L{DSSKey} + + @since: fearow + """ + randpool.stir() + dsa = DSA.generate(bits, randpool.get_bytes, progress_func) + key = DSSKey(vals=(dsa.p, dsa.q, dsa.g, dsa.y)) + key.x = dsa.x + return key + generate = staticmethod(generate) + + + ### internals... + + + def _from_private_key_file(self, filename, password): + # private key file contains: + # DSAPrivateKey = { version = 0, p, q, g, y, x } + data = self._read_private_key_file('DSA', filename, password) + try: + keylist = BER(data).decode() + except BERException, x: + raise SSHException('Unable to parse key file: ' + str(x)) + if (type(keylist) is not list) or (len(keylist) < 6) or (keylist[0] != 0): + raise SSHException('not a valid DSA private key file (bad ber encoding)') + self.p = keylist[1] + self.q = keylist[2] + self.g = keylist[3] + self.y = keylist[4] + self.x = keylist[5] + self.size = util.bit_length(self.p) diff --git a/paramiko/file.py b/paramiko/file.py new file mode 100644 index 0000000..c29e7c4 --- /dev/null +++ b/paramiko/file.py @@ -0,0 +1,440 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +BufferedFile. +""" + +from cStringIO import StringIO + + +_FLAG_READ = 0x1 +_FLAG_WRITE = 0x2 +_FLAG_APPEND = 0x4 +_FLAG_BINARY = 0x10 +_FLAG_BUFFERED = 0x20 +_FLAG_LINE_BUFFERED = 0x40 +_FLAG_UNIVERSAL_NEWLINE = 0x80 + + +class BufferedFile (object): + """ + Reusable base class to implement python-style file buffering around a + simpler stream. + """ + + _DEFAULT_BUFSIZE = 8192 + + SEEK_SET = 0 + SEEK_CUR = 1 + SEEK_END = 2 + + def __init__(self): + self._flags = 0 + self._bufsize = self._DEFAULT_BUFSIZE + self._wbuffer = StringIO() + self._rbuffer = '' + self._at_trailing_cr = False + self._closed = False + # pos - position within the file, according to the user + # realpos - position according the OS + # (these may be different because we buffer for line reading) + self._pos = self._realpos = 0 + + def __del__(self): + self.close() + + def __iter__(self): + """ + Returns an iterator that can be used to iterate over the lines in this + file. This iterator happens to return the file itself, since a file is + its own iterator. + + @raise ValueError: if the file is closed. + + @return: an interator. + @rtype: iterator + """ + if self._closed: + raise ValueError('I/O operation on closed file') + return self + + def close(self): + """ + Close the file. Future read and write operations will fail. + """ + self.flush() + self._closed = True + + def flush(self): + """ + Write out any data in the write buffer. This may do nothing if write + buffering is not turned on. + """ + self._write_all(self._wbuffer.getvalue()) + self._wbuffer = StringIO() + return + + def next(self): + """ + Returns the next line from the input, or raises L{StopIteration} when + EOF is hit. Unlike python file objects, it's okay to mix calls to + C{next} and L{readline}. + + @raise StopIteration: when the end of the file is reached. + + @return: a line read from the file. + @rtype: str + """ + line = self.readline() + if not line: + raise StopIteration + return line + + def read(self, size=None): + """ + Read at most C{size} bytes from the file (less if we hit the end of the + file first). If the C{size} argument is negative or omitted, read all + the remaining data in the file. + + @param size: maximum number of bytes to read. + @type size: int + @return: data read from the file, or an empty string if EOF was + encountered immediately. + @rtype: str + """ + if self._closed: + raise IOError('File is closed') + if not (self._flags & _FLAG_READ): + raise IOError('File not open for reading') + if (size is None) or (size < 0): + # go for broke + result = self._rbuffer + self._rbuffer = '' + self._pos += len(result) + while True: + try: + new_data = self._read(self._DEFAULT_BUFSIZE) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + break + result += new_data + self._realpos += len(new_data) + self._pos += len(new_data) + return result + if size <= len(self._rbuffer): + result = self._rbuffer[:size] + self._rbuffer = self._rbuffer[size:] + self._pos += len(result) + return result + while len(self._rbuffer) < size: + try: + new_data = self._read(max(self._bufsize, size - len(self._rbuffer))) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + break + self._rbuffer += new_data + self._realpos += len(new_data) + result = self._rbuffer[:size] + self._rbuffer = self._rbuffer[size:] + self._pos += len(result) + return result + + def readline(self, size=None): + """ + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). If the size argument is present and non-negative, it + is a maximum byte count (including the trailing newline) and an + incomplete line may be returned. An empty string is returned only when + EOF is encountered immediately. + + @note: Unlike stdio's C{fgets()}, the returned string contains null + characters (C{'\\0'}) if they occurred in the input. + + @param size: maximum length of returned string. + @type size: int + @return: next line of the file, or an empty string if the end of the + file has been reached. + @rtype: str + """ + # it's almost silly how complex this function is. + if self._closed: + raise IOError('File is closed') + if not (self._flags & _FLAG_READ): + raise IOError('File not open for reading') + line = self._rbuffer + while True: + if self._at_trailing_cr and (self._flags & _FLAG_UNIVERSAL_NEWLINE) and (len(line) > 0): + # edge case: the newline may be '\r\n' and we may have read + # only the first '\r' last time. + if line[0] == '\n': + line = line[1:] + self._record_newline('\r\n') + else: + self._record_newline('\r') + self._at_trailing_cr = False + # check size before looking for a linefeed, in case we already have + # enough. + if (size is not None) and (size >= 0): + if len(line) >= size: + # truncate line and return + self._rbuffer = line[size:] + line = line[:size] + self._pos += len(line) + return line + n = size - len(line) + else: + n = self._DEFAULT_BUFSIZE + if ('\n' in line) or ((self._flags & _FLAG_UNIVERSAL_NEWLINE) and ('\r' in line)): + break + try: + new_data = self._read(n) + except EOFError: + new_data = None + if (new_data is None) or (len(new_data) == 0): + self._rbuffer = '' + self._pos += len(line) + return line + line += new_data + self._realpos += len(new_data) + # find the newline + pos = line.find('\n') + if self._flags & _FLAG_UNIVERSAL_NEWLINE: + rpos = line.find('\r') + if (rpos >= 0) and ((rpos < pos) or (pos < 0)): + pos = rpos + xpos = pos + 1 + if (line[pos] == '\r') and (xpos < len(line)) and (line[xpos] == '\n'): + xpos += 1 + self._rbuffer = line[xpos:] + lf = line[pos:xpos] + line = line[:pos] + '\n' + if (len(self._rbuffer) == 0) and (lf == '\r'): + # we could read the line up to a '\r' and there could still be a + # '\n' following that we read next time. note that and eat it. + self._at_trailing_cr = True + else: + self._record_newline(lf) + self._pos += len(line) + return line + + def readlines(self, sizehint=None): + """ + Read all remaining lines using L{readline} and return them as a list. + If the optional C{sizehint} argument is present, instead of reading up + to EOF, whole lines totalling approximately sizehint bytes (possibly + after rounding up to an internal buffer size) are read. + + @param sizehint: desired maximum number of bytes to read. + @type sizehint: int + @return: list of lines read from the file. + @rtype: list + """ + lines = [] + bytes = 0 + while 1: + line = self.readline() + if len(line) == 0: + break + lines.append(line) + bytes += len(line) + if (sizehint is not None) and (bytes >= sizehint): + break + return lines + + def seek(self, offset, whence=0): + """ + Set the file's current position, like stdio's C{fseek}. Not all file + objects support seeking. + + @note: If a file is opened in append mode (C{'a'} or C{'a+'}), any seek + operations will be undone at the next write (as the file position + will move back to the end of the file). + + @param offset: position to move to within the file, relative to + C{whence}. + @type offset: int + @param whence: type of movement: 0 = absolute; 1 = relative to the + current position; 2 = relative to the end of the file. + @type whence: int + + @raise IOError: if the file doesn't support random access. + """ + raise IOError('File does not support seeking.') + + def tell(self): + """ + Return the file's current position. This may not be accurate or + useful if the underlying file doesn't support random access, or was + opened in append mode. + + @return: file position (in bytes). + @rtype: int + """ + return self._pos + + def write(self, data): + """ + Write data to the file. If write buffering is on (C{bufsize} was + specified and non-zero), some or all of the data may not actually be + written yet. (Use L{flush} or L{close} to force buffered data to be + written out.) + + @param data: data to write. + @type data: str + """ + if self._closed: + raise IOError('File is closed') + if not (self._flags & _FLAG_WRITE): + raise IOError('File not open for writing') + if not (self._flags & _FLAG_BUFFERED): + self._write_all(data) + return + self._wbuffer.write(data) + if self._flags & _FLAG_LINE_BUFFERED: + # only scan the new data for linefeed, to avoid wasting time. + last_newline_pos = data.rfind('\n') + if last_newline_pos >= 0: + wbuf = self._wbuffer.getvalue() + last_newline_pos += len(wbuf) - len(data) + self._write_all(wbuf[:last_newline_pos + 1]) + self._wbuffer = StringIO() + self._wbuffer.write(wbuf[last_newline_pos + 1:]) + return + # even if we're line buffering, if the buffer has grown past the + # buffer size, force a flush. + if self._wbuffer.tell() >= self._bufsize: + self.flush() + return + + def writelines(self, sequence): + """ + Write a sequence of strings to the file. The sequence can be any + iterable object producing strings, typically a list of strings. (The + name is intended to match L{readlines}; C{writelines} does not add line + separators.) + + @param sequence: an iterable sequence of strings. + @type sequence: sequence + """ + for line in sequence: + self.write(line) + return + + def xreadlines(self): + """ + Identical to C{iter(f)}. This is a deprecated file interface that + predates python iterator support. + + @return: an iterator. + @rtype: iterator + """ + return self + + + ### overrides... + + + def _read(self, size): + """ + I{(subclass override)} + Read data from the stream. Return C{None} or raise C{EOFError} to + indicate EOF. + """ + raise EOFError() + + def _write(self, data): + """ + I{(subclass override)} + Write data into the stream. + """ + raise IOError('write not implemented') + + def _get_size(self): + """ + I{(subclass override)} + Return the size of the file. This is called from within L{_set_mode} + if the file is opened in append mode, so the file position can be + tracked and L{seek} and L{tell} will work correctly. If the file is + a stream that can't be randomly accessed, you don't need to override + this method, + """ + return 0 + + + ### internals... + + + def _set_mode(self, mode='r', bufsize=-1): + """ + Subclasses call this method to initialize the BufferedFile. + """ + if bufsize == 1: + # apparently, line buffering only affects writes. reads are only + # buffered if you call readline (directly or indirectly: iterating + # over a file will indirectly call readline). + self._flags |= _FLAG_BUFFERED | _FLAG_LINE_BUFFERED + elif bufsize > 1: + self._bufsize = bufsize + self._flags |= _FLAG_BUFFERED + if ('r' in mode) or ('+' in mode): + self._flags |= _FLAG_READ + if ('w' in mode) or ('+' in mode): + self._flags |= _FLAG_WRITE + if ('a' in mode): + self._flags |= _FLAG_WRITE | _FLAG_APPEND + self._size = self._get_size() + self._pos = self._realpos = self._size + if ('b' in mode): + self._flags |= _FLAG_BINARY + if ('U' in mode): + self._flags |= _FLAG_UNIVERSAL_NEWLINE + # built-in file objects have this attribute to store which kinds of + # line terminations they've seen: + # <http://www.python.org/doc/current/lib/built-in-funcs.html> + self.newlines = None + + def _write_all(self, data): + # the underlying stream may be something that does partial writes (like + # a socket). + while len(data) > 0: + count = self._write(data) + data = data[count:] + if self._flags & _FLAG_APPEND: + self._size += count + self._pos = self._realpos = self._size + else: + self._pos += count + self._realpos += count + return None + + def _record_newline(self, newline): + # silliness about tracking what kinds of newlines we've seen. + # i don't understand why it can be None, a string, or a tuple, instead + # of just always being a tuple, but we'll emulate that behavior anyway. + if not (self._flags & _FLAG_UNIVERSAL_NEWLINE): + return + if self.newlines is None: + self.newlines = newline + elif (type(self.newlines) is str) and (self.newlines != newline): + self.newlines = (self.newlines, newline) + elif newline not in self.newlines: + self.newlines += (newline,) diff --git a/paramiko/kex_gex.py b/paramiko/kex_gex.py new file mode 100644 index 0000000..994d76c --- /dev/null +++ b/paramiko/kex_gex.py @@ -0,0 +1,202 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Variant on L{KexGroup1 <paramiko.kex_group1.KexGroup1>} where the prime "p" and +generator "g" are provided by the server. A bit more work is required on the +client side, and a B{lot} more on the server side. +""" + +from Crypto.Hash import SHA +from Crypto.Util import number + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ssh_exception import SSHException + + +_MSG_KEXDH_GEX_GROUP, _MSG_KEXDH_GEX_INIT, _MSG_KEXDH_GEX_REPLY, _MSG_KEXDH_GEX_REQUEST = range(31, 35) + + +class KexGex (object): + + name = 'diffie-hellman-group-exchange-sha1' + min_bits = 1024 + max_bits = 8192 + preferred_bits = 2048 + + def __init__(self, transport): + self.transport = transport + + def start_kex(self): + if self.transport.server_mode: + self.transport._expect_packet(_MSG_KEXDH_GEX_REQUEST) + return + # request a bit range: we accept (min_bits) to (max_bits), but prefer + # (preferred_bits). according to the spec, we shouldn't pull the + # minimum up above 1024. + m = Message() + m.add_byte(chr(_MSG_KEXDH_GEX_REQUEST)) + m.add_int(self.min_bits) + m.add_int(self.preferred_bits) + m.add_int(self.max_bits) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_GROUP) + + def parse_next(self, ptype, m): + if ptype == _MSG_KEXDH_GEX_REQUEST: + return self._parse_kexdh_gex_request(m) + elif ptype == _MSG_KEXDH_GEX_GROUP: + return self._parse_kexdh_gex_group(m) + elif ptype == _MSG_KEXDH_GEX_INIT: + return self._parse_kexdh_gex_init(m) + elif ptype == _MSG_KEXDH_GEX_REPLY: + return self._parse_kexdh_gex_reply(m) + raise SSHException('KexGex asked to handle packet type %d' % ptype) + + + ### internals... + + + def _generate_x(self): + # generate an "x" (1 < x < (p-1)/2). + q = (self.p - 1) // 2 + qnorm = util.deflate_long(q, 0) + qhbyte = ord(qnorm[0]) + bytes = len(qnorm) + qmask = 0xff + while not (qhbyte & 0x80): + qhbyte <<= 1 + qmask >>= 1 + while True: + self.transport.randpool.stir() + x_bytes = self.transport.randpool.get_bytes(bytes) + x_bytes = chr(ord(x_bytes[0]) & qmask) + x_bytes[1:] + x = util.inflate_long(x_bytes, 1) + if (x > 1) and (x < q): + break + self.x = x + + def _parse_kexdh_gex_request(self, m): + minbits = m.get_int() + preferredbits = m.get_int() + maxbits = m.get_int() + # smoosh the user's preferred size into our own limits + if preferredbits > self.max_bits: + preferredbits = self.max_bits + if preferredbits < self.min_bits: + preferredbits = self.min_bits + # fix min/max if they're inconsistent. technically, we could just pout + # and hang up, but there's no harm in giving them the benefit of the + # doubt and just picking a bitsize for them. + if minbits > preferredbits: + minbits = preferredbits + if maxbits < preferredbits: + maxbits = preferredbits + # now save a copy + self.min_bits = minbits + self.preferred_bits = preferredbits + self.max_bits = maxbits + # generate prime + pack = self.transport._get_modulus_pack() + if pack is None: + raise SSHException('Can\'t do server-side gex with no modulus pack') + self.transport._log(DEBUG, 'Picking p (%d <= %d <= %d bits)' % (minbits, preferredbits, maxbits)) + self.g, self.p = pack.get_modulus(minbits, preferredbits, maxbits) + m = Message() + m.add_byte(chr(_MSG_KEXDH_GEX_GROUP)) + m.add_mpint(self.p) + m.add_mpint(self.g) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_INIT) + + def _parse_kexdh_gex_group(self, m): + self.p = m.get_mpint() + self.g = m.get_mpint() + # reject if p's bit length < 1024 or > 8192 + bitlen = util.bit_length(self.p) + if (bitlen < 1024) or (bitlen > 8192): + raise SSHException('Server-generated gex p (don\'t ask) is out of range (%d bits)' % bitlen) + self.transport._log(DEBUG, 'Got server p (%d bits)' % bitlen) + self._generate_x() + # now compute e = g^x mod p + self.e = pow(self.g, self.x, self.p) + m = Message() + m.add_byte(chr(_MSG_KEXDH_GEX_INIT)) + m.add_mpint(self.e) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_GEX_REPLY) + + def _parse_kexdh_gex_init(self, m): + self.e = m.get_mpint() + if (self.e < 1) or (self.e > self.p - 1): + raise SSHException('Client kex "e" is out of range') + self._generate_x() + self.f = pow(self.g, self.x, self.p) + K = pow(self.e, self.x, self.p) + key = str(self.transport.get_server_key()) + # 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) + hm = Message() + hm.add(self.transport.remote_version, self.transport.local_version, + self.transport.remote_kex_init, self.transport.local_kex_init, + key) + hm.add_int(self.min_bits) + hm.add_int(self.preferred_bits) + hm.add_int(self.max_bits) + hm.add_mpint(self.p) + hm.add_mpint(self.g) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + H = SHA.new(str(hm)).digest() + self.transport._set_K_H(K, H) + # sign it + sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H) + # send reply + m = Message() + m.add_byte(chr(_MSG_KEXDH_GEX_REPLY)) + m.add_string(key) + m.add_mpint(self.f) + m.add_string(str(sig)) + self.transport._send_message(m) + self.transport._activate_outbound() + + def _parse_kexdh_gex_reply(self, m): + host_key = m.get_string() + self.f = m.get_mpint() + sig = m.get_string() + if (self.f < 1) or (self.f > self.p - 1): + raise SSHException('Server kex "f" is out of range') + K = pow(self.f, self.x, self.p) + # 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) + hm = Message() + hm.add(self.transport.local_version, self.transport.remote_version, + self.transport.local_kex_init, self.transport.remote_kex_init, + host_key) + hm.add_int(self.min_bits) + hm.add_int(self.preferred_bits) + hm.add_int(self.max_bits) + hm.add_mpint(self.p) + hm.add_mpint(self.g) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + self.transport._set_K_H(K, SHA.new(str(hm)).digest()) + self.transport._verify_key(host_key, sig) + self.transport._activate_outbound() diff --git a/paramiko/kex_group1.py b/paramiko/kex_group1.py new file mode 100644 index 0000000..a13cf3a --- /dev/null +++ b/paramiko/kex_group1.py @@ -0,0 +1,136 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of +1024 bit key halves, using a known "p" prime and "g" generator. +""" + +from Crypto.Hash import SHA + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ssh_exception import SSHException + + +_MSG_KEXDH_INIT, _MSG_KEXDH_REPLY = range(30, 32) + +# draft-ietf-secsh-transport-09.txt, page 17 +P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL +G = 2 + + +class KexGroup1(object): + + name = 'diffie-hellman-group1-sha1' + + def __init__(self, transport): + self.transport = transport + self.x = 0L + self.e = 0L + self.f = 0L + + def start_kex(self): + self._generate_x() + if self.transport.server_mode: + # compute f = g^x mod p, but don't send it yet + self.f = pow(G, self.x, P) + self.transport._expect_packet(_MSG_KEXDH_INIT) + return + # compute e = g^x mod p (where g=2), and send it + self.e = pow(G, self.x, P) + m = Message() + m.add_byte(chr(_MSG_KEXDH_INIT)) + m.add_mpint(self.e) + self.transport._send_message(m) + self.transport._expect_packet(_MSG_KEXDH_REPLY) + + def parse_next(self, ptype, m): + if self.transport.server_mode and (ptype == _MSG_KEXDH_INIT): + return self._parse_kexdh_init(m) + elif not self.transport.server_mode and (ptype == _MSG_KEXDH_REPLY): + return self._parse_kexdh_reply(m) + raise SSHException('KexGroup1 asked to handle packet type %d' % ptype) + + + ### internals... + + + def _generate_x(self): + # generate an "x" (1 < x < q), where q is (p-1)/2. + # p is a 128-byte (1024-bit) number, where the first 64 bits are 1. + # therefore q can be approximated as a 2^1023. we drop the subset of + # potential x where the first 63 bits are 1, because some of those will be + # larger than q (but this is a tiny tiny subset of potential x). + while 1: + self.transport.randpool.stir() + x_bytes = self.transport.randpool.get_bytes(128) + x_bytes = chr(ord(x_bytes[0]) & 0x7f) + x_bytes[1:] + if (x_bytes[:8] != '\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF') and \ + (x_bytes[:8] != '\x00\x00\x00\x00\x00\x00\x00\x00'): + break + self.x = util.inflate_long(x_bytes) + + def _parse_kexdh_reply(self, m): + # client mode + host_key = m.get_string() + self.f = m.get_mpint() + if (self.f < 1) or (self.f > P - 1): + raise SSHException('Server kex "f" is out of range') + sig = m.get_string() + K = pow(self.f, self.x, P) + # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) + hm = Message() + hm.add(self.transport.local_version, self.transport.remote_version, + self.transport.local_kex_init, self.transport.remote_kex_init) + hm.add_string(host_key) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + self.transport._set_K_H(K, SHA.new(str(hm)).digest()) + self.transport._verify_key(host_key, sig) + self.transport._activate_outbound() + + def _parse_kexdh_init(self, m): + # server mode + self.e = m.get_mpint() + if (self.e < 1) or (self.e > P - 1): + raise SSHException('Client kex "e" is out of range') + K = pow(self.e, self.x, P) + key = str(self.transport.get_server_key()) + # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) + hm = Message() + hm.add(self.transport.remote_version, self.transport.local_version, + self.transport.remote_kex_init, self.transport.local_kex_init) + hm.add_string(key) + hm.add_mpint(self.e) + hm.add_mpint(self.f) + hm.add_mpint(K) + H = SHA.new(str(hm)).digest() + self.transport._set_K_H(K, H) + # sign it + sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H) + # send reply + m = Message() + m.add_byte(chr(_MSG_KEXDH_REPLY)) + m.add_string(key) + m.add_mpint(self.f) + m.add_string(str(sig)) + self.transport._send_message(m) + self.transport._activate_outbound() diff --git a/paramiko/logging22.py b/paramiko/logging22.py new file mode 100644 index 0000000..ac11a73 --- /dev/null +++ b/paramiko/logging22.py @@ -0,0 +1,66 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Stub out logging on python < 2.3. +""" + + +DEBUG = 10 +INFO = 20 +WARNING = 30 +ERROR = 40 +CRITICAL = 50 + + +def getLogger(name): + return _logger + + +class logger (object): + def __init__(self): + self.handlers = [ ] + self.level = ERROR + + def setLevel(self, level): + self.level = level + + def addHandler(self, h): + self.handlers.append(h) + + def addFilter(self, filter): + pass + + def log(self, level, text): + if level >= self.level: + for h in self.handlers: + h.f.write(text + '\n') + h.f.flush() + +class StreamHandler (object): + def __init__(self, f): + self.f = f + + def setFormatter(self, f): + pass + +class Formatter (object): + def __init__(self, x, y): + pass + +_logger = logger() diff --git a/paramiko/message.py b/paramiko/message.py new file mode 100644 index 0000000..1d75a01 --- /dev/null +++ b/paramiko/message.py @@ -0,0 +1,301 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Implementation of an SSH2 "message". +""" + +import struct +import cStringIO + +from paramiko import util + + +class Message (object): + """ + An SSH2 I{Message} is a stream of bytes that encodes some combination of + strings, integers, bools, and infinite-precision integers (known in python + as I{long}s). This class builds or breaks down such a byte stream. + + Normally you don't need to deal with anything this low-level, but it's + exposed for people implementing custom extensions, or features that + paramiko doesn't support yet. + """ + + def __init__(self, content=None): + """ + Create a new SSH2 Message. + + @param content: the byte stream to use as the Message content (passed + in only when decomposing a Message). + @type content: string + """ + if content != None: + self.packet = cStringIO.StringIO(content) + else: + self.packet = cStringIO.StringIO() + + def __str__(self): + """ + Return the byte stream content of this Message, as a string. + + @return: the contents of this Message. + @rtype: string + """ + return self.packet.getvalue() + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + + @rtype: string + """ + return 'paramiko.Message(' + repr(self.packet.getvalue()) + ')' + + def rewind(self): + """ + Rewind the message to the beginning as if no items had been parsed + out of it yet. + """ + self.packet.seek(0) + + def get_remainder(self): + """ + Return the bytes of this Message that haven't already been parsed and + returned. + + @return: a string of the bytes not parsed yet. + @rtype: string + """ + position = self.packet.tell() + remainder = self.packet.read() + self.packet.seek(position) + return remainder + + def get_so_far(self): + """ + Returns the bytes of this Message that have been parsed and returned. + The string passed into a Message's constructor can be regenerated by + concatenating C{get_so_far} and L{get_remainder}. + + @return: a string of the bytes parsed so far. + @rtype: string + """ + position = self.packet.tell() + self.rewind() + return self.packet.read(position) + + def get_bytes(self, n): + """ + Return the next C{n} bytes of the Message, without decomposing into + an int, string, etc. Just the raw bytes are returned. + + @return: a string of the next C{n} bytes of the Message, or a string + of C{n} zero bytes, if there aren't C{n} bytes remaining. + @rtype: string + """ + b = self.packet.read(n) + if len(b) < n: + return '\x00'*n + return b + + def get_byte(self): + """ + Return the next byte of the Message, without decomposing it. This + is equivalent to L{get_bytes(1)<get_bytes>}. + + @return: the next byte of the Message, or C{'\000'} if there aren't + any bytes remaining. + @rtype: string + """ + return self.get_bytes(1) + + def get_boolean(self): + """ + Fetch a boolean from the stream. + + @return: C{True} or C{False} (from the Message). + @rtype: bool + """ + b = self.get_bytes(1) + return b != '\x00' + + def get_int(self): + """ + Fetch an int from the stream. + + @return: a 32-bit unsigned integer. + @rtype: int + """ + return struct.unpack('>I', self.get_bytes(4))[0] + + def get_int64(self): + """ + Fetch a 64-bit int from the stream. + + @return: a 64-bit unsigned integer. + @rtype: long + """ + return struct.unpack('>Q', self.get_bytes(8))[0] + + def get_mpint(self): + """ + Fetch a long int (mpint) from the stream. + + @return: an arbitrary-length integer. + @rtype: long + """ + return util.inflate_long(self.get_string()) + + def get_string(self): + """ + Fetch a string from the stream. This could be a byte string and may + contain unprintable characters. (It's not unheard of for a string to + contain another byte-stream Message.) + + @return: a string. + @rtype: string + """ + return self.get_bytes(self.get_int()) + + def get_list(self): + """ + Fetch a list of strings from the stream. These are trivially encoded + as comma-separated values in a string. + + @return: a list of strings. + @rtype: list of strings + """ + return self.get_string().split(',') + + def add_bytes(self, b): + """ + Write bytes to the stream, without any formatting. + + @param b: bytes to add + @type b: str + """ + self.packet.write(b) + return self + + def add_byte(self, b): + """ + Write a single byte to the stream, without any formatting. + + @param b: byte to add + @type b: str + """ + self.packet.write(b) + return self + + def add_boolean(self, b): + """ + Add a boolean value to the stream. + + @param b: boolean value to add + @type b: bool + """ + if b: + self.add_byte('\x01') + else: + self.add_byte('\x00') + return self + + def add_int(self, n): + """ + Add an integer to the stream. + + @param n: integer to add + @type n: int + """ + self.packet.write(struct.pack('>I', n)) + return self + + def add_int64(self, n): + """ + Add a 64-bit int to the stream. + + @param n: long int to add + @type n: long + """ + self.packet.write(struct.pack('>Q', n)) + return self + + def add_mpint(self, z): + """ + Add a long int to the stream, encoded as an infinite-precision + integer. This method only works on positive numbers. + + @param z: long int to add + @type z: long + """ + self.add_string(util.deflate_long(z)) + return self + + def add_string(self, s): + """ + Add a string to the stream. + + @param s: string to add + @type s: str + """ + self.add_int(len(s)) + self.packet.write(s) + return self + + def add_list(self, l): + """ + Add a list of strings to the stream. They are encoded identically to + a single string of values separated by commas. (Yes, really, that's + how SSH2 does it.) + + @param l: list of strings to add + @type l: list(str) + """ + self.add_string(','.join(l)) + return self + + def _add(self, i): + if type(i) is str: + return self.add_string(i) + elif type(i) is int: + return self.add_int(i) + elif type(i) is long: + if i > 0xffffffffL: + return self.add_mpint(i) + else: + return self.add_int(i) + elif type(i) is bool: + return self.add_boolean(i) + elif type(i) is list: + return self.add_list(i) + else: + raise exception('Unknown type') + + def add(self, *seq): + """ + Add a sequence of items to the stream. The values are encoded based + on their type: str, int, bool, list, or long. + + @param seq: the sequence of items + @type seq: sequence + + @bug: longs are encoded non-deterministically. Don't use this method. + """ + for item in seq: + self._add(item) diff --git a/paramiko/packet.py b/paramiko/packet.py new file mode 100644 index 0000000..277d68e --- /dev/null +++ b/paramiko/packet.py @@ -0,0 +1,442 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Packetizer. +""" + +import select +import socket +import struct +import threading +import time +from Crypto.Hash import HMAC + +from paramiko.common import * +from paramiko import util +from paramiko.ssh_exception import SSHException +from paramiko.message import Message + + +class NeedRekeyException (Exception): + pass + + +class Packetizer (object): + """ + Implementation of the base SSH packet protocol. + """ + + # READ the secsh RFC's before raising these values. if anything, + # they should probably be lower. + REKEY_PACKETS = pow(2, 30) + REKEY_BYTES = pow(2, 30) + + def __init__(self, socket): + self.__socket = socket + self.__logger = None + self.__closed = False + self.__dump_packets = False + self.__need_rekey = False + self.__init_count = 0 + + # used for noticing when to re-key: + self.__sent_bytes = 0 + self.__sent_packets = 0 + self.__received_bytes = 0 + self.__received_packets = 0 + self.__received_packets_overflow = 0 + + # current inbound/outbound ciphering: + self.__block_size_out = 8 + self.__block_size_in = 8 + self.__mac_size_out = 0 + self.__mac_size_in = 0 + self.__block_engine_out = None + self.__block_engine_in = None + self.__mac_engine_out = None + self.__mac_engine_in = None + self.__mac_key_out = '' + self.__mac_key_in = '' + self.__compress_engine_out = None + self.__compress_engine_in = None + self.__sequence_number_out = 0L + self.__sequence_number_in = 0L + + # lock around outbound writes (packet computation) + self.__write_lock = threading.RLock() + + # keepalives: + self.__keepalive_interval = 0 + self.__keepalive_last = time.time() + self.__keepalive_callback = None + + def __del__(self): + # this is not guaranteed to be called, but we should try. + try: + self.__socket.close() + except: + pass + + def set_log(self, log): + """ + Set the python log object to use for logging. + """ + self.__logger = log + + def set_outbound_cipher(self, block_engine, block_size, mac_engine, mac_size, mac_key): + """ + Switch outbound data cipher. + """ + self.__block_engine_out = block_engine + self.__block_size_out = block_size + self.__mac_engine_out = mac_engine + self.__mac_size_out = mac_size + self.__mac_key_out = mac_key + self.__sent_bytes = 0 + self.__sent_packets = 0 + # wait until the reset happens in both directions before clearing rekey flag + self.__init_count |= 1 + if self.__init_count == 3: + self.__init_count = 0 + self.__need_rekey = False + + def set_inbound_cipher(self, block_engine, block_size, mac_engine, mac_size, mac_key): + """ + Switch inbound data cipher. + """ + self.__block_engine_in = block_engine + self.__block_size_in = block_size + self.__mac_engine_in = mac_engine + self.__mac_size_in = mac_size + self.__mac_key_in = mac_key + self.__received_bytes = 0 + self.__received_packets = 0 + self.__received_packets_overflow = 0 + # wait until the reset happens in both directions before clearing rekey flag + self.__init_count |= 2 + if self.__init_count == 3: + self.__init_count = 0 + self.__need_rekey = False + + def set_outbound_compressor(self, compressor): + self.__compress_engine_out = compressor + + def set_inbound_compressor(self, compressor): + self.__compress_engine_in = compressor + + def close(self): + self.__closed = True + + def set_hexdump(self, hexdump): + self.__dump_packets = hexdump + + def get_hexdump(self): + return self.__dump_packets + + def get_mac_size_in(self): + return self.__mac_size_in + + def get_mac_size_out(self): + return self.__mac_size_out + + def need_rekey(self): + """ + Returns C{True} if a new set of keys needs to be negotiated. This + will be triggered during a packet read or write, so it should be + checked after every read or write, or at least after every few. + + @return: C{True} if a new set of keys needs to be negotiated + """ + return self.__need_rekey + + def set_keepalive(self, interval, callback): + """ + Turn on/off the callback keepalive. If C{interval} seconds pass with + no data read from or written to the socket, the callback will be + executed and the timer will be reset. + """ + self.__keepalive_interval = interval + self.__keepalive_callback = callback + self.__keepalive_last = time.time() + + def read_all(self, n, check_rekey=False): + """ + Read as close to N bytes as possible, blocking as long as necessary. + + @param n: number of bytes to read + @type n: int + @return: the data read + @rtype: str + @raise EOFError: if the socket was closed before all the bytes could + be read + """ + if PY22: + return self._py22_read_all(n) + out = '' + while n > 0: + try: + x = self.__socket.recv(n) + if len(x) == 0: + raise EOFError() + out += x + n -= len(x) + except socket.timeout: + if self.__closed: + raise EOFError() + if check_rekey and (len(out) == 0) and self.__need_rekey: + raise NeedRekeyException() + self._check_keepalive() + return out + + def write_all(self, out): + self.__keepalive_last = time.time() + while len(out) > 0: + try: + n = self.__socket.send(out) + except socket.timeout: + n = 0 + if self.__closed: + n = -1 + except Exception: + # could be: (32, 'Broken pipe') + n = -1 + if n < 0: + raise EOFError() + if n == len(out): + return + out = out[n:] + return + + def readline(self, timeout): + """ + Read a line from the socket. This is done in a fairly inefficient + way, but is only used for initial banner negotiation so it's not worth + optimising. + """ + buf = '' + while not '\n' in buf: + buf += self._read_timeout(timeout) + buf = buf[:-1] + if (len(buf) > 0) and (buf[-1] == '\r'): + buf = buf[:-1] + return buf + + def send_message(self, data): + """ + Write a block of data using the current cipher, as an SSH block. + """ + # encrypt this sucka + randpool.stir() + data = str(data) + cmd = ord(data[0]) + if cmd in MSG_NAMES: + cmd_name = MSG_NAMES[cmd] + else: + cmd_name = '$%x' % cmd + self._log(DEBUG, 'Write packet <%s>, length %d' % (cmd_name, len(data))) + if self.__compress_engine_out is not None: + data = self.__compress_engine_out(data) + packet = self._build_packet(data) + if self.__dump_packets: + self._log(DEBUG, util.format_binary(packet, 'OUT: ')) + self.__write_lock.acquire() + try: + if self.__block_engine_out != None: + out = self.__block_engine_out.encrypt(packet) + else: + out = packet + # + mac + if self.__block_engine_out != None: + payload = struct.pack('>I', self.__sequence_number_out) + packet + out += HMAC.HMAC(self.__mac_key_out, payload, self.__mac_engine_out).digest()[:self.__mac_size_out] + self.__sequence_number_out = (self.__sequence_number_out + 1) & 0xffffffffL + self.write_all(out) + + self.__sent_bytes += len(out) + self.__sent_packets += 1 + if ((self.__sent_packets >= self.REKEY_PACKETS) or (self.__sent_bytes >= self.REKEY_BYTES)) \ + and not self.__need_rekey: + # only ask once for rekeying + self._log(DEBUG, 'Rekeying (hit %d packets, %d bytes sent)' % + (self.__sent_packets, self.__sent_bytes)) + self.__received_packets_overflow = 0 + self._trigger_rekey() + finally: + self.__write_lock.release() + + def read_message(self): + """ + Only one thread should ever be in this function (no other locking is + done). + + @raise SSHException: if the packet is mangled + @raise NeedRekeyException: if the transport should rekey + """ + header = self.read_all(self.__block_size_in, check_rekey=True) + if self.__block_engine_in != None: + header = self.__block_engine_in.decrypt(header) + if self.__dump_packets: + self._log(DEBUG, util.format_binary(header, 'IN: ')); + packet_size = struct.unpack('>I', header[:4])[0] + # leftover contains decrypted bytes from the first block (after the length field) + leftover = header[4:] + if (packet_size - len(leftover)) % self.__block_size_in != 0: + raise SSHException('Invalid packet blocking') + buf = self.read_all(packet_size + self.__mac_size_in - len(leftover)) + packet = buf[:packet_size - len(leftover)] + post_packet = buf[packet_size - len(leftover):] + if self.__block_engine_in != None: + packet = self.__block_engine_in.decrypt(packet) + if self.__dump_packets: + self._log(DEBUG, util.format_binary(packet, 'IN: ')); + packet = leftover + packet + + if self.__mac_size_in > 0: + mac = post_packet[:self.__mac_size_in] + mac_payload = struct.pack('>II', self.__sequence_number_in, packet_size) + packet + my_mac = HMAC.HMAC(self.__mac_key_in, mac_payload, self.__mac_engine_in).digest()[:self.__mac_size_in] + if my_mac != mac: + raise SSHException('Mismatched MAC') + padding = ord(packet[0]) + payload = packet[1:packet_size - padding] + randpool.add_event(packet[packet_size - padding]) + if self.__dump_packets: + self._log(DEBUG, 'Got payload (%d bytes, %d padding)' % (packet_size, padding)) + + if self.__compress_engine_in is not None: + payload = self.__compress_engine_in(payload) + + msg = Message(payload[1:]) + msg.seqno = self.__sequence_number_in + self.__sequence_number_in = (self.__sequence_number_in + 1) & 0xffffffffL + + # check for rekey + self.__received_bytes += packet_size + self.__mac_size_in + 4 + self.__received_packets += 1 + if self.__need_rekey: + # we've asked to rekey -- give them 20 packets to comply before + # dropping the connection + self.__received_packets_overflow += 1 + if self.__received_packets_overflow >= 20: + raise SSHException('Remote transport is ignoring rekey requests') + elif (self.__received_packets >= self.REKEY_PACKETS) or \ + (self.__received_bytes >= self.REKEY_BYTES): + # only ask once for rekeying + self._log(DEBUG, 'Rekeying (hit %d packets, %d bytes received)' % + (self.__received_packets, self.__received_bytes)) + self.__received_packets_overflow = 0 + self._trigger_rekey() + + cmd = ord(payload[0]) + if cmd in MSG_NAMES: + cmd_name = MSG_NAMES[cmd] + else: + cmd_name = '$%x' % cmd + self._log(DEBUG, 'Read packet <%s>, length %d' % (cmd_name, len(payload))) + return cmd, msg + + + ########## protected + + + def _log(self, level, msg): + if self.__logger is None: + return + if issubclass(type(msg), list): + for m in msg: + self.__logger.log(level, m) + else: + self.__logger.log(level, msg) + + def _check_keepalive(self): + if (not self.__keepalive_interval) or (not self.__block_engine_out) or \ + self.__need_rekey: + # wait till we're encrypting, and not in the middle of rekeying + return + now = time.time() + if now > self.__keepalive_last + self.__keepalive_interval: + self.__keepalive_callback() + self.__keepalive_last = now + + def _py22_read_all(self, n): + out = '' + while n > 0: + r, w, e = select.select([self.__socket], [], [], 0.1) + if self.__socket not in r: + if self.__closed: + raise EOFError() + self._check_keepalive() + else: + x = self.__socket.recv(n) + if len(x) == 0: + raise EOFError() + out += x + n -= len(x) + return out + + def _py22_read_timeout(self, timeout): + start = time.time() + while True: + r, w, e = select.select([self.__socket], [], [], 0.1) + if self.__socket in r: + x = self.__socket.recv(1) + if len(x) == 0: + raise EOFError() + return x + if self.__closed: + raise EOFError() + now = time.time() + if now - start >= timeout: + raise socket.timeout() + + def _read_timeout(self, timeout): + if PY22: + return self._py22_read_timeout(n) + start = time.time() + while True: + try: + x = self.__socket.recv(1) + if len(x) == 0: + raise EOFError() + return x + except socket.timeout: + pass + if self.__closed: + raise EOFError() + now = time.time() + if now - start >= timeout: + raise socket.timeout() + + def _build_packet(self, payload): + # pad up at least 4 bytes, to nearest block-size (usually 8) + bsize = self.__block_size_out + padding = 3 + bsize - ((len(payload) + 8) % bsize) + packet = struct.pack('>IB', len(payload) + padding + 1, padding) + packet += payload + if self.__block_engine_out is not None: + packet += randpool.get_bytes(padding) + else: + # cute trick i caught openssh doing: if we're not encrypting, + # don't waste random bytes for the padding + packet += (chr(0) * padding) + return packet + + def _trigger_rekey(self): + # outside code should check for this flag + self.__need_rekey = True diff --git a/paramiko/pipe.py b/paramiko/pipe.py new file mode 100644 index 0000000..cc28f43 --- /dev/null +++ b/paramiko/pipe.py @@ -0,0 +1,105 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Abstraction of a one-way pipe where the read end can be used in select(). +Normally this is trivial, but Windows makes it nearly impossible. +""" + +import sys +import os +import socket + + +def make_pipe (): + if sys.platform[:3] != 'win': + return PosixPipe() + return WindowsPipe() + + +class PosixPipe (object): + def __init__ (self): + self._rfd, self._wfd = os.pipe() + self._set = False + self._forever = False + + def close (self): + os.close(self._rfd) + os.close(self._wfd) + + def fileno (self): + return self._rfd + + def clear (self): + if not self._set or self._forever: + return + os.read(self._rfd, 1) + self._set = False + + def set (self): + if self._set: + return + self._set = True + os.write(self._wfd, '*') + + def set_forever (self): + self._forever = True + self.set() + + +class WindowsPipe (object): + """ + On Windows, only an OS-level "WinSock" may be used in select(), but reads + and writes must be to the actual socket object. + """ + def __init__ (self): + serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serv.bind(('127.0.0.1', 0)) + serv.listen(1) + + # need to save sockets in _rsock/_wsock so they don't get closed + self._rsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._rsock.connect(('127.0.0.1', serv.getsockname()[1])) + + self._wsock, addr = serv.accept() + serv.close() + self._set = False + self._forever = False + + def close (self): + self._rsock.close() + self._wsock.close() + + def fileno (self): + return self._rsock.fileno() + + def clear (self): + if not self._set or self._forever: + return + self._rsock.recv(1) + self._set = False + + def set (self): + if self._set: + return + self._set = True + self._wsock.send('*') + + def set_forever (self): + self._forever = True + self.set() diff --git a/paramiko/pkey.py b/paramiko/pkey.py new file mode 100644 index 0000000..75db8e5 --- /dev/null +++ b/paramiko/pkey.py @@ -0,0 +1,339 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Common API for all public keys. +""" + +import base64 +import os + +from Crypto.Hash import MD5 +from Crypto.Cipher import DES3 + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ssh_exception import SSHException, PasswordRequiredException + + +class PKey (object): + """ + Base class for public keys. + """ + + # known encryption types for private key files: + _CIPHER_TABLE = { + 'DES-EDE3-CBC': { 'cipher': DES3, 'keysize': 24, 'blocksize': 8, 'mode': DES3.MODE_CBC } + } + + + def __init__(self, msg=None, data=None): + """ + Create a new instance of this public key type. If C{msg} is given, + the key's public part(s) will be filled in from the message. If + C{data} is given, the key's public part(s) will be filled in from + the string. + + @param msg: an optional SSH L{Message} containing a public key of this + type. + @type msg: L{Message} + @param data: an optional string containing a public key of this type + @type data: str + + @raise SSHException: if a key cannot be created from the C{data} or + C{msg} given, or no key was passed in. + """ + pass + + def __str__(self): + """ + Return a string of an SSH L{Message} made up of the public part(s) of + this key. This string is suitable for passing to L{__init__} to + re-create the key object later. + + @return: string representation of an SSH key message. + @rtype: str + """ + return '' + + def __cmp__(self, other): + """ + Compare this key to another. Returns 0 if this key is equivalent to + the given key, or non-0 if they are different. Only the public parts + of the key are compared, so a public key will compare equal to its + corresponding private key. + + @param other: key to compare to. + @type other: L{PKey} + @return: 0 if the two keys are equivalent, non-0 otherwise. + @rtype: int + """ + hs = hash(self) + ho = hash(other) + if hs != ho: + return cmp(hs, ho) + return cmp(str(self), str(other)) + + def get_name(self): + """ + Return the name of this private key implementation. + + @return: name of this private key type, in SSH terminology (for + example, C{"ssh-rsa"}). + @rtype: str + """ + return '' + + def get_bits(self): + """ + Return the number of significant bits in this key. This is useful + for judging the relative security of a key. + + @return: bits in the key. + @rtype: int + """ + return 0 + + def can_sign(self): + """ + Return C{True} if this key has the private part necessary for signing + data. + + @return: C{True} if this is a private key. + @rtype: bool + """ + return False + + def get_fingerprint(self): + """ + Return an MD5 fingerprint of the public part of this key. Nothing + secret is revealed. + + @return: a 16-byte string (binary) of the MD5 fingerprint, in SSH + format. + @rtype: str + """ + return MD5.new(str(self)).digest() + + def get_base64(self): + """ + Return a base64 string containing the public part of this key. Nothing + secret is revealed. This format is compatible with that used to store + public key files or recognized host keys. + + @return: a base64 string containing the public part of the key. + @rtype: str + + @since: fearow + """ + return base64.encodestring(str(self)).replace('\n', '') + + def sign_ssh_data(self, randpool, data): + """ + Sign a blob of data with this private key, and return a L{Message} + representing an SSH signature message. + + @param randpool: a secure random number generator. + @type randpool: L{Crypto.Util.randpool.RandomPool} + @param data: the data to sign. + @type data: str + @return: an SSH signature message. + @rtype: L{Message} + """ + return '' + + def verify_ssh_sig(self, data, msg): + """ + Given a blob of data, and an SSH message representing a signature of + that data, verify that it was signed with this key. + + @param data: the data that was signed. + @type data: str + @param msg: an SSH signature message + @type msg: L{Message} + @return: C{True} if the signature verifies correctly; C{False} + otherwise. + @rtype: boolean + """ + return False + + def from_private_key_file(cl, filename, password=None): + """ + Create a key object by reading a private key file. If the private + key is encrypted and C{password} is not C{None}, the given password + will be used to decrypt the key (otherwise L{PasswordRequiredException} + is thrown). Through the magic of python, this factory method will + exist in all subclasses of PKey (such as L{RSAKey} or L{DSSKey}), but + is useless on the abstract PKey class. + + @param filename: name of the file to read. + @type filename: str + @param password: an optional password to use to decrypt the key file, + if it's encrypted + @type password: str + @return: a new key object based on the given private key. + @rtype: L{PKey} + + @raise IOError: if there was an error reading the file. + @raise PasswordRequiredException: if the private key file is + encrypted, and C{password} is C{None}. + @raise SSHException: if the key file is invalid. + + @since: fearow + """ + key = cl(filename=filename, password=password) + return key + from_private_key_file = classmethod(from_private_key_file) + + def write_private_key_file(self, filename, password=None): + """ + Write private key contents into a file. If the password is not + C{None}, the key is encrypted before writing. + + @param filename: name of the file to write. + @type filename: str + @param password: an optional password to use to encrypt the key file. + @type password: str + + @raise IOError: if there was an error writing the file. + @raise SSHException: if the key is invalid. + + @since: fearow + """ + raise exception('Not implemented in PKey') + + def _read_private_key_file(self, tag, filename, password=None): + """ + Read an SSH2-format private key file, looking for a string of the type + C{"BEGIN xxx PRIVATE KEY"} for some C{xxx}, base64-decode the text we + find, and return it as a string. If the private key is encrypted and + C{password} is not C{None}, the given password will be used to decrypt + the key (otherwise L{PasswordRequiredException} is thrown). + + @param tag: C{"RSA"} or C{"DSA"}, the tag used to mark the data block. + @type tag: str + @param filename: name of the file to read. + @type filename: str + @param password: an optional password to use to decrypt the key file, + if it's encrypted. + @type password: str + @return: data blob that makes up the private key. + @rtype: str + + @raise IOError: if there was an error reading the file. + @raise PasswordRequiredException: if the private key file is + encrypted, and C{password} is C{None}. + @raise SSHException: if the key file is invalid. + """ + f = open(filename, 'r') + lines = f.readlines() + f.close() + start = 0 + while (start < len(lines)) and (lines[start].strip() != '-----BEGIN ' + tag + ' PRIVATE KEY-----'): + start += 1 + if start >= len(lines): + raise SSHException('not a valid ' + tag + ' private key file') + # parse any headers first + headers = {} + start += 1 + while start < len(lines): + l = lines[start].split(': ') + if len(l) == 1: + break + headers[l[0].lower()] = l[1].strip() + start += 1 + # find end + end = start + while (lines[end].strip() != '-----END ' + tag + ' PRIVATE KEY-----') and (end < len(lines)): + end += 1 + # if we trudged to the end of the file, just try to cope. + try: + data = base64.decodestring(''.join(lines[start:end])) + except binascii.Error, e: + raise SSHException('base64 decoding error: ' + str(e)) + if not headers.has_key('proc-type'): + # unencryped: done + return data + # encrypted keyfile: will need a password + if headers['proc-type'] != '4,ENCRYPTED': + raise SSHException('Unknown private key structure "%s"' % headers['proc-type']) + try: + encryption_type, saltstr = headers['dek-info'].split(',') + except: + raise SSHException('Can\'t parse DEK-info in private key file') + if not self._CIPHER_TABLE.has_key(encryption_type): + raise SSHException('Unknown private key cipher "%s"' % encryption_type) + # if no password was passed in, raise an exception pointing out that we need one + if password is None: + raise PasswordRequiredException('Private key file is encrypted') + cipher = self._CIPHER_TABLE[encryption_type]['cipher'] + keysize = self._CIPHER_TABLE[encryption_type]['keysize'] + mode = self._CIPHER_TABLE[encryption_type]['mode'] + salt = util.unhexify(saltstr) + key = util.generate_key_bytes(MD5, salt, password, keysize) + return cipher.new(key, mode, salt).decrypt(data) + + def _write_private_key_file(self, tag, filename, data, password=None): + """ + Write an SSH2-format private key file in a form that can be read by + paramiko or openssh. If no password is given, the key is written in + a trivially-encoded format (base64) which is completely insecure. If + a password is given, DES-EDE3-CBC is used. + + @param tag: C{"RSA"} or C{"DSA"}, the tag used to mark the data block. + @type tag: str + @param filename: name of the file to write. + @type filename: str + @param data: data blob that makes up the private key. + @type data: str + @param password: an optional password to use to encrypt the file. + @type password: str + + @raise IOError: if there was an error writing the file. + """ + f = open(filename, 'w', 0600) + # grrr... the mode doesn't always take hold + os.chmod(filename, 0600) + f.write('-----BEGIN %s PRIVATE KEY-----\n' % tag) + if password is not None: + # since we only support one cipher here, use it + cipher_name = self._CIPHER_TABLE.keys()[0] + cipher = self._CIPHER_TABLE[cipher_name]['cipher'] + keysize = self._CIPHER_TABLE[cipher_name]['keysize'] + blocksize = self._CIPHER_TABLE[cipher_name]['blocksize'] + mode = self._CIPHER_TABLE[cipher_name]['mode'] + salt = randpool.get_bytes(8) + key = util.generate_key_bytes(MD5, salt, password, keysize) + if len(data) % blocksize != 0: + n = blocksize - len(data) % blocksize + #data += randpool.get_bytes(n) + # that would make more sense ^, but it confuses openssh. + data += '\0' * n + data = cipher.new(key, mode, salt).encrypt(data) + f.write('Proc-Type: 4,ENCRYPTED\n') + f.write('DEK-Info: %s,%s\n' % (cipher_name, util.hexify(salt))) + f.write('\n') + s = base64.encodestring(data) + # re-wrap to 64-char lines + s = ''.join(s.split('\n')) + s = '\n'.join([s[i : i+64] for i in range(0, len(s), 64)]) + f.write(s) + f.write('\n') + f.write('-----END %s PRIVATE KEY-----\n' % tag) + f.close() diff --git a/paramiko/primes.py b/paramiko/primes.py new file mode 100644 index 0000000..3677394 --- /dev/null +++ b/paramiko/primes.py @@ -0,0 +1,148 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Utility functions for dealing with primes. +""" + +from Crypto.Util import number + +from paramiko import util + + +def _generate_prime(bits, randpool): + "primtive attempt at prime generation" + hbyte_mask = pow(2, bits % 8) - 1 + while True: + # loop catches the case where we increment n into a higher bit-range + x = randpool.get_bytes((bits+7) // 8) + if hbyte_mask > 0: + x = chr(ord(x[0]) & hbyte_mask) + x[1:] + n = util.inflate_long(x, 1) + n |= 1 + n |= (1 << (bits - 1)) + while not number.isPrime(n): + n += 2 + if util.bit_length(n) == bits: + return n + +def _roll_random(rpool, n): + "returns a random # from 0 to N-1" + bits = util.bit_length(n-1) + bytes = (bits + 7) // 8 + hbyte_mask = pow(2, bits % 8) - 1 + + # so here's the plan: + # we fetch as many random bits as we'd need to fit N-1, and if the + # generated number is >= N, we try again. in the worst case (N-1 is a + # power of 2), we have slightly better than 50% odds of getting one that + # fits, so i can't guarantee that this loop will ever finish, but the odds + # of it looping forever should be infinitesimal. + while True: + x = rpool.get_bytes(bytes) + if hbyte_mask > 0: + x = chr(ord(x[0]) & hbyte_mask) + x[1:] + num = util.inflate_long(x, 1) + if num < n: + return num + + +class ModulusPack (object): + """ + convenience object for holding the contents of the /etc/ssh/moduli file, + on systems that have such a file. + """ + + def __init__(self, rpool): + # pack is a hash of: bits -> [ (generator, modulus) ... ] + self.pack = {} + self.discarded = [] + self.randpool = rpool + + def _parse_modulus(self, line): + timestamp, type, tests, tries, size, generator, modulus = line.split() + type = int(type) + tests = int(tests) + tries = int(tries) + size = int(size) + generator = int(generator) + modulus = long(modulus, 16) + + # weed out primes that aren't at least: + # type 2 (meets basic structural requirements) + # test 4 (more than just a small-prime sieve) + # tries < 100 if test & 4 (at least 100 tries of miller-rabin) + if (type < 2) or (tests < 4) or ((tests & 4) and (tests < 8) and (tries < 100)): + self.discarded.append((modulus, 'does not meet basic requirements')) + return + if generator == 0: + generator = 2 + + # there's a bug in the ssh "moduli" file (yeah, i know: shock! dismay! + # call cnn!) where it understates the bit lengths of these primes by 1. + # this is okay. + bl = util.bit_length(modulus) + if (bl != size) and (bl != size + 1): + self.discarded.append((modulus, 'incorrectly reported bit length %d' % size)) + return + if not self.pack.has_key(bl): + self.pack[bl] = [] + self.pack[bl].append((generator, modulus)) + + def read_file(self, filename): + """ + @raise IOError: passed from any file operations that fail. + """ + self.pack = {} + f = open(filename, 'r') + for line in f: + line = line.strip() + if (len(line) == 0) or (line[0] == '#'): + continue + try: + self._parse_modulus(line) + except: + continue + f.close() + + def get_modulus(self, min, prefer, max): + bitsizes = self.pack.keys() + bitsizes.sort() + if len(bitsizes) == 0: + raise SSHException('no moduli available') + good = -1 + # find nearest bitsize >= preferred + for b in bitsizes: + if (b >= prefer) and (b < max) and ((b < good) or (good == -1)): + good = b + # if that failed, find greatest bitsize >= min + if good == -1: + for b in bitsizes: + if (b >= min) and (b < max) and (b > good): + good = b + if good == -1: + # their entire (min, max) range has no intersection with our range. + # if their range is below ours, pick the smallest. otherwise pick + # the largest. it'll be out of their range requirement either way, + # but we'll be sending them the closest one we have. + good = bitsizes[0] + if min > good: + good = bitsizes[-1] + # now pick a random modulus of this bitsize + n = _roll_random(self.randpool, len(self.pack[good])) + return self.pack[good][n] diff --git a/paramiko/rsakey.py b/paramiko/rsakey.py new file mode 100644 index 0000000..780ea1b --- /dev/null +++ b/paramiko/rsakey.py @@ -0,0 +1,165 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{RSAKey} +""" + +from Crypto.PublicKey import RSA +from Crypto.Hash import SHA, MD5 +from Crypto.Cipher import DES3 + +from paramiko.common import * +from paramiko import util +from paramiko.message import Message +from paramiko.ber import BER, BERException +from paramiko.pkey import PKey +from paramiko.ssh_exception import SSHException + + +class RSAKey (PKey): + """ + Representation of an RSA key which can be used to sign and verify SSH2 + data. + """ + + def __init__(self, msg=None, data=None, filename=None, password=None, vals=None): + if filename is not None: + self._from_private_key_file(filename, password) + return + if (msg is None) and (data is not None): + msg = Message(data) + if vals is not None: + self.e, self.n = vals + else: + if msg is None: + raise SSHException('Key object may not be empty') + if msg.get_string() != 'ssh-rsa': + raise SSHException('Invalid key') + self.e = msg.get_mpint() + self.n = msg.get_mpint() + self.size = util.bit_length(self.n) + + def __str__(self): + m = Message() + m.add_string('ssh-rsa') + m.add_mpint(self.e) + m.add_mpint(self.n) + return str(m) + + def __hash__(self): + h = hash(self.get_name()) + h = h * 37 + hash(self.e) + h = h * 37 + hash(self.n) + return hash(h) + + def get_name(self): + return 'ssh-rsa' + + def get_bits(self): + return self.size + + def can_sign(self): + return hasattr(self, 'd') + + def sign_ssh_data(self, rpool, data): + digest = SHA.new(data).digest() + rsa = RSA.construct((long(self.n), long(self.e), long(self.d))) + sig = util.deflate_long(rsa.sign(self._pkcs1imify(digest), '')[0], 0) + m = Message() + m.add_string('ssh-rsa') + m.add_string(sig) + return m + + def verify_ssh_sig(self, data, msg): + if msg.get_string() != 'ssh-rsa': + return False + sig = util.inflate_long(msg.get_string(), True) + # verify the signature by SHA'ing the data and encrypting it using the + # public key. some wackiness ensues where we "pkcs1imify" the 20-byte + # hash into a string as long as the RSA key. + hash = util.inflate_long(self._pkcs1imify(SHA.new(data).digest()), True) + rsa = RSA.construct((long(self.n), long(self.e))) + return rsa.verify(hash, (sig,)) + + def write_private_key_file(self, filename, password=None): + keylist = [ 0, self.n, self.e, self.d, self.p, self.q, + self.d % (self.p - 1), self.d % (self.q - 1), + util.mod_inverse(self.q, self.p) ] + try: + b = BER() + b.encode(keylist) + except BERException: + raise SSHException('Unable to create ber encoding of key') + self._write_private_key_file('RSA', filename, str(b), password) + + def generate(bits, progress_func=None): + """ + Generate a new private RSA key. This factory function can be used to + generate a new host key or authentication key. + + @param bits: number of bits the generated key should be. + @type bits: int + @param progress_func: an optional function to call at key points in + key generation (used by C{pyCrypto.PublicKey}). + @type progress_func: function + @return: new private key + @rtype: L{RSAKey} + + @since: fearow + """ + randpool.stir() + rsa = RSA.generate(bits, randpool.get_bytes, progress_func) + key = RSAKey(vals=(rsa.e, rsa.n)) + key.d = rsa.d + key.p = rsa.p + key.q = rsa.q + return key + generate = staticmethod(generate) + + + ### internals... + + + def _pkcs1imify(self, data): + """ + turn a 20-byte SHA1 hash into a blob of data as large as the key's N, + using PKCS1's \"emsa-pkcs1-v1_5\" encoding. totally bizarre. + """ + SHA1_DIGESTINFO = '\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14' + size = len(util.deflate_long(self.n, 0)) + filler = '\xff' * (size - len(SHA1_DIGESTINFO) - len(data) - 3) + return '\x00\x01' + filler + '\x00' + SHA1_DIGESTINFO + data + + def _from_private_key_file(self, filename, password): + # private key file contains: + # RSAPrivateKey = { version = 0, n, e, d, p, q, d mod p-1, d mod q-1, q**-1 mod p } + data = self._read_private_key_file('RSA', filename, password) + try: + keylist = BER(data).decode() + except BERException: + raise SSHException('Unable to parse key file') + if (type(keylist) is not list) or (len(keylist) < 4) or (keylist[0] != 0): + raise SSHException('Not a valid RSA private key file (bad ber encoding)') + self.n = keylist[1] + self.e = keylist[2] + self.d = keylist[3] + # not really needed + self.p = keylist[4] + self.q = keylist[5] + self.size = util.bit_length(self.n) diff --git a/paramiko/server.py b/paramiko/server.py new file mode 100644 index 0000000..a0e3988 --- /dev/null +++ b/paramiko/server.py @@ -0,0 +1,527 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{ServerInterface} is an interface to override for server support. +""" + +import threading +from paramiko.common import * +from paramiko import util + + +class InteractiveQuery (object): + """ + A query (set of prompts) for a user during interactive authentication. + """ + + def __init__(self, name='', instructions='', *prompts): + """ + Create a new interactive query to send to the client. The name and + instructions are optional, but are generally displayed to the end + user. A list of prompts may be included, or they may be added via + the L{add_prompt} method. + + @param name: name of this query + @type name: str + @param instructions: user instructions (usually short) about this query + @type instructions: str + """ + self.name = name + self.instructions = instructions + self.prompts = [] + for x in prompts: + if (type(x) is str) or (type(x) is unicode): + self.add_prompt(x) + else: + self.add_prompt(x[0], x[1]) + + def add_prompt(self, prompt, echo=True): + """ + Add a prompt to this query. The prompt should be a (reasonably short) + string. Multiple prompts can be added to the same query. + + @param prompt: the user prompt + @type prompt: str + @param echo: C{True} (default) if the user's response should be echoed; + C{False} if not (for a password or similar) + @type echo: bool + """ + self.prompts.append((prompt, echo)) + + +class ServerInterface (object): + """ + This class defines an interface for controlling the behavior of paramiko + in server mode. + + Methods on this class are called from paramiko's primary thread, so you + shouldn't do too much work in them. (Certainly nothing that blocks or + sleeps.) + """ + + def check_channel_request(self, kind, chanid): + """ + Determine if a channel request of a given type will be granted, and + return C{OPEN_SUCCEEDED} or an error code. This method is + called in server mode when the client requests a channel, after + authentication is complete. + + If you allow channel requests (and an ssh server that didn't would be + useless), you should also override some of the channel request methods + below, which are used to determine which services will be allowed on + a given channel: + - L{check_channel_pty_request} + - L{check_channel_shell_request} + - L{check_channel_subsystem_request} + - L{check_channel_window_change_request} + + The C{chanid} parameter is a small number that uniquely identifies the + channel within a L{Transport}. A L{Channel} object is not created + unless this method returns C{OPEN_SUCCEEDED} -- once a + L{Channel} object is created, you can call L{Channel.get_id} to + retrieve the channel ID. + + The return value should either be C{OPEN_SUCCEEDED} (or + C{0}) to allow the channel request, or one of the following error + codes to reject it: + - C{OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED} + - C{OPEN_FAILED_CONNECT_FAILED} + - C{OPEN_FAILED_UNKNOWN_CHANNEL_TYPE} + - C{OPEN_FAILED_RESOURCE_SHORTAGE} + + The default implementation always returns + C{OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED}. + + @param kind: the kind of channel the client would like to open + (usually C{"session"}). + @type kind: str + @param chanid: ID of the channel + @type chanid: int + @return: a success or failure code (listed above) + @rtype: int + """ + return OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + + def get_allowed_auths(self, username): + """ + Return a list of authentication methods supported by the server. + This list is sent to clients attempting to authenticate, to inform them + of authentication methods that might be successful. + + The "list" is actually a string of comma-separated names of types of + authentication. Possible values are C{"password"}, C{"publickey"}, + and C{"none"}. + + The default implementation always returns C{"password"}. + + @param username: the username requesting authentication. + @type username: str + @return: a comma-separated list of authentication types + @rtype: str + """ + return 'password' + + def check_auth_none(self, username): + """ + Determine if a client may open channels with no (further) + authentication. + + Return L{AUTH_FAILED} if the client must authenticate, or + L{AUTH_SUCCESSFUL} if it's okay for the client to not + authenticate. + + The default implementation always returns L{AUTH_FAILED}. + + @param username: the username of the client. + @type username: str + @return: L{AUTH_FAILED} if the authentication fails; + L{AUTH_SUCCESSFUL} if it succeeds. + @rtype: int + """ + return AUTH_FAILED + + def check_auth_password(self, username, password): + """ + Determine if a given username and password supplied by the client is + acceptable for use in authentication. + + Return L{AUTH_FAILED} if the password is not accepted, + L{AUTH_SUCCESSFUL} if the password is accepted and completes + the authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your + authentication is stateful, and this key is accepted for + authentication, but more authentication is required. (In this latter + case, L{get_allowed_auths} will be called to report to the client what + options it has for continuing the authentication.) + + The default implementation always returns L{AUTH_FAILED}. + + @param username: the username of the authenticating client. + @type username: str + @param password: the password given by the client. + @type password: str + @return: L{AUTH_FAILED} if the authentication fails; + L{AUTH_SUCCESSFUL} if it succeeds; + L{AUTH_PARTIALLY_SUCCESSFUL} if the password auth is + successful, but authentication must continue. + @rtype: int + """ + return AUTH_FAILED + + def check_auth_publickey(self, username, key): + """ + Determine if a given key supplied by the client is acceptable for use + in authentication. You should override this method in server mode to + check the username and key and decide if you would accept a signature + made using this key. + + Return L{AUTH_FAILED} if the key is not accepted, + L{AUTH_SUCCESSFUL} if the key is accepted and completes the + authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your + authentication is stateful, and this password is accepted for + authentication, but more authentication is required. (In this latter + case, L{get_allowed_auths} will be called to report to the client what + options it has for continuing the authentication.) + + Note that you don't have to actually verify any key signtature here. + If you're willing to accept the key, paramiko will do the work of + verifying the client's signature. + + The default implementation always returns L{AUTH_FAILED}. + + @param username: the username of the authenticating client + @type username: str + @param key: the key object provided by the client + @type key: L{PKey <pkey.PKey>} + @return: L{AUTH_FAILED} if the client can't authenticate + with this key; L{AUTH_SUCCESSFUL} if it can; + L{AUTH_PARTIALLY_SUCCESSFUL} if it can authenticate with + this key but must continue with authentication + @rtype: int + """ + return AUTH_FAILED + + def check_auth_interactive(self, username, submethods): + """ + Begin an interactive authentication challenge, if supported. You + should override this method in server mode if you want to support the + C{"keyboard-interactive"} auth type, which requires you to send a + series of questions for the client to answer. + + Return L{AUTH_FAILED} if this auth method isn't supported. Otherwise, + you should return an L{InteractiveQuery} object containing the prompts + and instructions for the user. The response will be sent via a call + to L{check_auth_interactive_response}. + + The default implementation always returns L{AUTH_FAILED}. + + @param username: the username of the authenticating client + @type username: str + @param submethods: a comma-separated list of methods preferred by the + client (usually empty) + @type submethods: str + @return: L{AUTH_FAILED} if this auth method isn't supported; otherwise + an object containing queries for the user + @rtype: int or L{InteractiveQuery} + """ + return AUTH_FAILED + + def check_auth_interactive_response(self, responses): + """ + Continue or finish an interactive authentication challenge, if + supported. You should override this method in server mode if you want + to support the C{"keyboard-interactive"} auth type. + + Return L{AUTH_FAILED} if the responses are not accepted, + L{AUTH_SUCCESSFUL} if the responses are accepted and complete + the authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your + authentication is stateful, and this set of responses is accepted for + authentication, but more authentication is required. (In this latter + case, L{get_allowed_auths} will be called to report to the client what + options it has for continuing the authentication.) + + If you wish to continue interactive authentication with more questions, + you may return an L{InteractiveQuery} object, which should cause the + client to respond with more answers, calling this method again. This + cycle can continue indefinitely. + + The default implementation always returns L{AUTH_FAILED}. + + @param responses: list of responses from the client + @type responses: list(str) + @return: L{AUTH_FAILED} if the authentication fails; + L{AUTH_SUCCESSFUL} if it succeeds; + L{AUTH_PARTIALLY_SUCCESSFUL} if the interactive auth is + successful, but authentication must continue; otherwise an object + containing queries for the user + @rtype: int or L{InteractiveQuery} + """ + return AUTH_FAILED + + def check_global_request(self, kind, msg): + """ + Handle a global request of the given C{kind}. This method is called + in server mode and client mode, whenever the remote host makes a global + request. If there are any arguments to the request, they will be in + C{msg}. + + There aren't any useful global requests defined, aside from port + forwarding, so usually this type of request is an extension to the + protocol. + + If the request was successful and you would like to return contextual + data to the remote host, return a tuple. Items in the tuple will be + sent back with the successful result. (Note that the items in the + tuple can only be strings, ints, longs, or bools.) + + The default implementation always returns C{False}, indicating that it + does not support any global requests. + + @param kind: the kind of global request being made. + @type kind: str + @param msg: any extra arguments to the request. + @type msg: L{Message} + @return: C{True} or a tuple of data if the request was granted; + C{False} otherwise. + @rtype: bool + """ + return False + + + ### Channel requests + + + def check_channel_pty_request(self, channel, term, width, height, pixelwidth, pixelheight, + modes): + """ + Determine if a pseudo-terminal of the given dimensions (usually + requested for shell access) can be provided on the given channel. + + The default implementation always returns C{False}. + + @param channel: the L{Channel} the pty request arrived on. + @type channel: L{Channel} + @param term: type of terminal requested (for example, C{"vt100"}). + @type term: str + @param width: width of screen in characters. + @type width: int + @param height: height of screen in characters. + @type height: int + @param pixelwidth: width of screen in pixels, if known (may be C{0} if + unknown). + @type pixelwidth: int + @param pixelheight: height of screen in pixels, if known (may be C{0} + if unknown). + @type pixelheight: int + @return: C{True} if the psuedo-terminal has been allocated; C{False} + otherwise. + @rtype: bool + """ + return False + + def check_channel_shell_request(self, channel): + """ + Determine if a shell will be provided to the client on the given + channel. If this method returns C{True}, the channel should be + connected to the stdin/stdout of a shell (or something that acts like + a shell). + + The default implementation always returns C{False}. + + @param channel: the L{Channel} the request arrived on. + @type channel: L{Channel} + @return: C{True} if this channel is now hooked up to a shell; C{False} + if a shell can't or won't be provided. + @rtype: bool + """ + return False + + def check_channel_exec_request(self, channel, command): + """ + Determine if a shell command will be executed for the client. If this + method returns C{True}, the channel should be connected to the stdin, + stdout, and stderr of the shell command. + + The default implementation always returns C{False}. + + @param channel: the L{Channel} the request arrived on. + @type channel: L{Channel} + @param command: the command to execute. + @type command: str + @return: C{True} if this channel is now hooked up to the stdin, + stdout, and stderr of the executing command; C{False} if the + command will not be executed. + @rtype: bool + + @since: 1.1 + """ + return False + + def check_channel_subsystem_request(self, channel, name): + """ + Determine if a requested subsystem will be provided to the client on + the given channel. If this method returns C{True}, all future I/O + through this channel will be assumed to be connected to the requested + subsystem. An example of a subsystem is C{sftp}. + + The default implementation checks for a subsystem handler assigned via + L{Transport.set_subsystem_handler}. + If one has been set, the handler is invoked and this method returns + C{True}. Otherwise it returns C{False}. + + @note: Because the default implementation uses the L{Transport} to + identify valid subsystems, you probably won't need to override this + method. + + @param channel: the L{Channel} the pty request arrived on. + @type channel: L{Channel} + @param name: name of the requested subsystem. + @type name: str + @return: C{True} if this channel is now hooked up to the requested + subsystem; C{False} if that subsystem can't or won't be provided. + @rtype: bool + """ + handler_class, larg, kwarg = channel.get_transport()._get_subsystem_handler(name) + if handler_class is None: + return False + handler = handler_class(channel, name, self, *larg, **kwarg) + handler.start() + return True + + def check_channel_window_change_request(self, channel, width, height, pixelwidth, pixelheight): + """ + Determine if the pseudo-terminal on the given channel can be resized. + This only makes sense if a pty was previously allocated on it. + + The default implementation always returns C{False}. + + @param channel: the L{Channel} the pty request arrived on. + @type channel: L{Channel} + @param width: width of screen in characters. + @type width: int + @param height: height of screen in characters. + @type height: int + @param pixelwidth: width of screen in pixels, if known (may be C{0} if + unknown). + @type pixelwidth: int + @param pixelheight: height of screen in pixels, if known (may be C{0} + if unknown). + @type pixelheight: int + @return: C{True} if the terminal was resized; C{False} if not. + @rtype: bool + """ + return False + + +class SubsystemHandler (threading.Thread): + """ + Handler for a subsytem in server mode. If you create a subclass of this + class and pass it to + L{Transport.set_subsystem_handler}, + an object of this + class will be created for each request for this subsystem. Each new object + will be executed within its own new thread by calling L{start_subsystem}. + When that method completes, the channel is closed. + + For example, if you made a subclass C{MP3Handler} and registered it as the + handler for subsystem C{"mp3"}, then whenever a client has successfully + authenticated and requests subsytem C{"mp3"}, an object of class + C{MP3Handler} will be created, and L{start_subsystem} will be called on + it from a new thread. + + @since: ivysaur + """ + def __init__(self, channel, name, server): + """ + Create a new handler for a channel. This is used by L{ServerInterface} + to start up a new handler when a channel requests this subsystem. You + don't need to override this method, but if you do, be sure to pass the + C{channel} and C{name} parameters through to the original C{__init__} + method here. + + @param channel: the channel associated with this subsystem request. + @type channel: L{Channel} + @param name: name of the requested subsystem. + @type name: str + @param server: the server object for the session that started this + subsystem + @type server: L{ServerInterface} + """ + threading.Thread.__init__(self, target=self._run) + self.__channel = channel + self.__transport = channel.get_transport() + self.__name = name + self.__server = server + + def get_server(self): + """ + Return the L{ServerInterface} object associated with this channel and + subsystem. + + @rtype: L{ServerInterface} + """ + return self.__server + + def _run(self): + try: + self.__transport._log(DEBUG, 'Starting handler for subsystem %s' % self.__name) + self.start_subsystem(self.__name, self.__transport, self.__channel) + except Exception, e: + self.__transport._log(ERROR, 'Exception in subsystem handler for "%s": %s' % + (self.__name, str(e))) + self.__transport._log(ERROR, util.tb_strings()) + try: + self.finish_subsystem() + except: + pass + + def start_subsystem(self, name, transport, channel): + """ + Process an ssh subsystem in server mode. This method is called on a + new object (and in a new thread) for each subsystem request. It is + assumed that all subsystem logic will take place here, and when the + subsystem is finished, this method will return. After this method + returns, the channel is closed. + + The combination of C{transport} and C{channel} are unique; this handler + corresponds to exactly one L{Channel} on one L{Transport}. + + @note: It is the responsibility of this method to exit if the + underlying L{Transport} is closed. This can be done by checking + L{Transport.is_active} or noticing an EOF + on the L{Channel}. If this method loops forever without checking + for this case, your python interpreter may refuse to exit because + this thread will still be running. + + @param name: name of the requested subsystem. + @type name: str + @param transport: the server-mode L{Transport}. + @type transport: L{Transport} + @param channel: the channel associated with this subsystem request. + @type channel: L{Channel} + """ + pass + + def finish_subsystem(self): + """ + Perform any cleanup at the end of a subsystem. The default + implementation just closes the channel. + + @since: 1.1 + """ + self.__channel.close() diff --git a/paramiko/sftp.py b/paramiko/sftp.py new file mode 100644 index 0000000..58d7103 --- /dev/null +++ b/paramiko/sftp.py @@ -0,0 +1,168 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +import socket +import struct + +from paramiko.common import * +from paramiko import util +from paramiko.channel import Channel +from paramiko.message import Message + + +CMD_INIT, CMD_VERSION, CMD_OPEN, CMD_CLOSE, CMD_READ, CMD_WRITE, CMD_LSTAT, CMD_FSTAT, \ + CMD_SETSTAT, CMD_FSETSTAT, CMD_OPENDIR, CMD_READDIR, CMD_REMOVE, CMD_MKDIR, \ + CMD_RMDIR, CMD_REALPATH, CMD_STAT, CMD_RENAME, CMD_READLINK, CMD_SYMLINK \ + = range(1, 21) +CMD_STATUS, CMD_HANDLE, CMD_DATA, CMD_NAME, CMD_ATTRS = range(101, 106) +CMD_EXTENDED, CMD_EXTENDED_REPLY = range(200, 202) + +SFTP_OK = 0 +SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, SFTP_BAD_MESSAGE, \ + SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED = range(1, 9) + +SFTP_DESC = [ 'Success', + 'End of file', + 'No such file', + 'Permission denied', + 'Failure', + 'Bad message', + 'No connection', + 'Connection lost', + 'Operation unsupported' ] + +SFTP_FLAG_READ = 0x1 +SFTP_FLAG_WRITE = 0x2 +SFTP_FLAG_APPEND = 0x4 +SFTP_FLAG_CREATE = 0x8 +SFTP_FLAG_TRUNC = 0x10 +SFTP_FLAG_EXCL = 0x20 + +_VERSION = 3 + + +# for debugging +CMD_NAMES = { + CMD_INIT: 'init', + CMD_VERSION: 'version', + CMD_OPEN: 'open', + CMD_CLOSE: 'close', + CMD_READ: 'read', + CMD_WRITE: 'write', + CMD_LSTAT: 'lstat', + CMD_FSTAT: 'fstat', + CMD_SETSTAT: 'setstat', + CMD_FSETSTAT: 'fsetstat', + CMD_OPENDIR: 'opendir', + CMD_READDIR: 'readdir', + CMD_REMOVE: 'remove', + CMD_MKDIR: 'mkdir', + CMD_RMDIR: 'rmdir', + CMD_REALPATH: 'realpath', + CMD_STAT: 'stat', + CMD_RENAME: 'rename', + CMD_READLINK: 'readlink', + CMD_SYMLINK: 'symlink', + CMD_STATUS: 'status', + CMD_HANDLE: 'handle', + CMD_DATA: 'data', + CMD_NAME: 'name', + CMD_ATTRS: 'attrs', + CMD_EXTENDED: 'extended', + CMD_EXTENDED_REPLY: 'extended_reply' + } + + +class SFTPError (Exception): + pass + + +class BaseSFTP (object): + def __init__(self): + self.logger = util.get_logger('paramiko.sftp') + self.sock = None + self.ultra_debug = False + + + ### internals... + + + def _send_version(self): + self._send_packet(CMD_INIT, struct.pack('>I', _VERSION)) + t, data = self._read_packet() + if t != CMD_VERSION: + raise SFTPError('Incompatible sftp protocol') + version = struct.unpack('>I', data[:4])[0] + # if version != _VERSION: + # raise SFTPError('Incompatible sftp protocol') + return version + + def _send_server_version(self): + # advertise that we support "check-file" + extension_pairs = [ 'check-file', 'md5,sha1' ] + msg = Message() + msg.add_int(_VERSION) + msg.add(*extension_pairs) + self._send_packet(CMD_VERSION, str(msg)) + t, data = self._read_packet() + if t != CMD_INIT: + raise SFTPError('Incompatible sftp protocol') + version = struct.unpack('>I', data[:4])[0] + return version + + def _log(self, level, msg): + if issubclass(type(msg), list): + for m in msg: + self.logger.log(level, m) + else: + self.logger.log(level, msg) + + def _write_all(self, out): + while len(out) > 0: + n = self.sock.send(out) + if n <= 0: + raise EOFError() + if n == len(out): + return + out = out[n:] + return + + def _read_all(self, n): + out = '' + while n > 0: + x = self.sock.recv(n) + if len(x) == 0: + raise EOFError() + out += x + n -= len(x) + return out + + def _send_packet(self, t, packet): + out = struct.pack('>I', len(packet) + 1) + chr(t) + packet + if self.ultra_debug: + self._log(DEBUG, util.format_binary(out, 'OUT: ')) + self._write_all(out) + + def _read_packet(self): + size = struct.unpack('>I', self._read_all(4))[0] + data = self._read_all(size) + if self.ultra_debug: + self._log(DEBUG, util.format_binary(data, 'IN: ')); + if size > 0: + return ord(data[0]), data[1:] + return 0, '' diff --git a/paramiko/sftp_attr.py b/paramiko/sftp_attr.py new file mode 100644 index 0000000..eae7c99 --- /dev/null +++ b/paramiko/sftp_attr.py @@ -0,0 +1,208 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +import stat +import time +from paramiko.common import * +from paramiko.sftp import * + + +class SFTPAttributes (object): + """ + Representation of the attributes of a file (or proxied file) for SFTP in + client or server mode. It attemps to mirror the object returned by + C{os.stat} as closely as possible, so it may have the following fields, + with the same meanings as those returned by an C{os.stat} object: + - st_size + - st_uid + - st_gid + - st_mode + - st_atime + - st_mtime + + Because SFTP allows flags to have other arbitrary named attributes, these + are stored in a dict named C{attr}. Occasionally, the filename is also + stored, in C{filename}. + """ + + FLAG_SIZE = 1 + FLAG_UIDGID = 2 + FLAG_PERMISSIONS = 4 + FLAG_AMTIME = 8 + FLAG_EXTENDED = 0x80000000L + + def __init__(self): + """ + Create a new (empty) SFTPAttributes object. All fields will be empty. + """ + self._flags = 0 + self.attr = {} + + def from_stat(cls, obj, filename=None): + """ + Create an SFTPAttributes object from an existing C{stat} object (an + object returned by C{os.stat}). + + @param obj: an object returned by C{os.stat} (or equivalent). + @type obj: object + @param filename: the filename associated with this file. + @type filename: str + @return: new L{SFTPAttributes} object with the same attribute fields. + @rtype: L{SFTPAttributes} + """ + attr = cls() + attr.st_size = obj.st_size + attr.st_uid = obj.st_uid + attr.st_gid = obj.st_gid + attr.st_mode = obj.st_mode + attr.st_atime = obj.st_atime + attr.st_mtime = obj.st_mtime + if filename is not None: + attr.filename = filename + return attr + from_stat = classmethod(from_stat) + + def __repr__(self): + return '<SFTPAttributes: %s>' % self._debug_str() + + def __str__(self): + return self._debug_str() + + + ### internals... + + + def _from_msg(cls, msg, filename=None): + attr = cls() + attr._unpack(msg) + if filename is not None: + attr.filename = filename + return attr + _from_msg = classmethod(_from_msg) + + def _unpack(self, msg): + self._flags = msg.get_int() + if self._flags & self.FLAG_SIZE: + self.st_size = msg.get_int64() + if self._flags & self.FLAG_UIDGID: + self.st_uid = msg.get_int() + self.st_gid = msg.get_int() + if self._flags & self.FLAG_PERMISSIONS: + self.st_mode = msg.get_int() + if self._flags & self.FLAG_AMTIME: + self.st_atime = msg.get_int() + self.st_mtime = msg.get_int() + if self._flags & self.FLAG_EXTENDED: + count = msg.get_int() + for i in range(count): + self.attr[msg.get_string()] = msg.get_string() + + def _pack(self, msg): + self._flags = 0 + if hasattr(self, 'st_size'): + self._flags |= self.FLAG_SIZE + if hasattr(self, 'st_uid') or hasattr(self, 'st_gid'): + self._flags |= self.FLAG_UIDGID + if hasattr(self, 'st_mode'): + self._flags |= self.FLAG_PERMISSIONS + if hasattr(self, 'st_atime') or hasattr(self, 'st_mtime'): + self._flags |= self.FLAG_AMTIME + if len(self.attr) > 0: + self._flags |= self.FLAG_EXTENDED + msg.add_int(self._flags) + if self._flags & self.FLAG_SIZE: + msg.add_int64(self.st_size) + if self._flags & self.FLAG_UIDGID: + msg.add_int(getattr(self, 'st_uid', 0)) + msg.add_int(getattr(self, 'st_gid', 0)) + if self._flags & self.FLAG_PERMISSIONS: + msg.add_int(self.st_mode) + if self._flags & self.FLAG_AMTIME: + msg.add_int(getattr(self, 'st_atime', 0)) + msg.add_int(getattr(self, 'st_mtime', 0)) + if self._flags & self.FLAG_EXTENDED: + msg.add_int(len(self.attr)) + for key, val in self.attr.iteritems(): + msg.add_string(key) + msg.add_string(val) + return + + def _debug_str(self): + out = '[ ' + if hasattr(self, 'st_size'): + out += 'size=%d ' % self.st_size + if hasattr(self, 'st_uid') or hasattr(self, 'st_gid'): + out += 'uid=%d gid=%d ' % (getattr(self, 'st_uid', 0), getattr(self, 'st_gid', 0)) + if hasattr(self, 'st_mode'): + out += 'mode=' + oct(self.st_mode) + ' ' + if hasattr(self, 'st_atime') or hasattr(self, 'st_mtime'): + out += 'atime=%d mtime=%d ' % (getattr(self, 'st_atime', 0), + getattr(self, 'st_mtime', 0)) + for k, v in self.attr.iteritems(): + out += '"%s"=%r ' % (str(k), v) + out += ']' + return out + + def _rwx(n, suid, sticky=False): + if suid: + suid = 2 + out = '-r'[n >> 2] + '-w'[(n >> 1) & 1] + if sticky: + out += '-xTt'[suid + (n & 1)] + else: + out += '-xSs'[suid + (n & 1)] + return out + _rwx = staticmethod(_rwx) + + def __str__(self): + "create a unix-style long description of the file (like ls -l)" + if hasattr(self, 'st_mode'): + kind = stat.S_IFMT(self.st_mode) + if kind == stat.S_IFIFO: + ks = 'p' + elif kind == stat.S_IFCHR: + ks = 'c' + elif kind == stat.S_IFDIR: + ks = 'd' + elif kind == stat.S_IFBLK: + ks = 'b' + elif kind == stat.S_IFREG: + ks = '-' + elif kind == stat.S_IFLNK: + ks = 'l' + elif kind == stat.S_IFSOCK: + ks = 's' + else: + ks = '?' + ks += self._rwx((self.st_mode & 0700) >> 6, self.st_mode & stat.S_ISUID) + ks += self._rwx((self.st_mode & 070) >> 3, self.st_mode & stat.S_ISGID) + ks += self._rwx(self.st_mode & 7, self.st_mode & stat.S_ISVTX, True) + else: + ks = '?---------' + uid = getattr(self, 'st_uid', -1) + gid = getattr(self, 'st_gid', -1) + size = getattr(self, 'st_size', -1) + mtime = getattr(self, 'st_mtime', 0) + # compute display date + if abs(time.time() - mtime) > 15552000: + # (15552000 = 6 months) + datestr = time.strftime('%d %b %Y', time.localtime(mtime)) + else: + datestr = time.strftime('%d %b %H:%M', time.localtime(mtime)) + filename = getattr(self, 'filename', '?') + return '%s 1 %-8d %-8d %8d %-12s %s' % (ks, uid, gid, size, datestr, filename) diff --git a/paramiko/sftp_client.py b/paramiko/sftp_client.py new file mode 100644 index 0000000..2fe89e9 --- /dev/null +++ b/paramiko/sftp_client.py @@ -0,0 +1,618 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Client-mode SFTP support. +""" + +import errno +import os +import threading +import weakref +from paramiko.sftp import * +from paramiko.sftp_attr import SFTPAttributes +from paramiko.sftp_file import SFTPFile + + +def _to_unicode(s): + "if a str is not ascii, decode its utf8 into unicode" + try: + return s.encode('ascii') + except: + return s.decode('utf-8') + + +class SFTPClient (BaseSFTP): + """ + SFTP client object. C{SFTPClient} is used to open an sftp session across + an open ssh L{Transport} and do remote file operations. + """ + + def __init__(self, sock): + """ + Create an SFTP client from an existing L{Channel}. The channel + should already have requested the C{"sftp"} subsystem. + + An alternate way to create an SFTP client context is by using + L{from_transport}. + + @param sock: an open L{Channel} using the C{"sftp"} subsystem. + @type sock: L{Channel} + """ + BaseSFTP.__init__(self) + self.sock = sock + self.ultra_debug = False + self.request_number = 1 + # lock for request_number + self._lock = threading.Lock() + self._cwd = None + # request # -> SFTPFile + self._expecting = weakref.WeakValueDictionary() + if type(sock) is Channel: + # override default logger + transport = self.sock.get_transport() + self.logger = util.get_logger(transport.get_log_channel() + '.' + + self.sock.get_name() + '.sftp') + self.ultra_debug = transport.get_hexdump() + self._send_version() + + def __del__(self): + self.close() + + def from_transport(selfclass, t): + """ + Create an SFTP client channel from an open L{Transport}. + + @param t: an open L{Transport} which is already authenticated. + @type t: L{Transport} + @return: a new L{SFTPClient} object, referring to an sftp session + (channel) across the transport. + @rtype: L{SFTPClient} + """ + chan = t.open_session() + if chan is None: + return None + if not chan.invoke_subsystem('sftp'): + raise SFTPError('Failed to invoke sftp subsystem') + return selfclass(chan) + from_transport = classmethod(from_transport) + + def close(self): + """ + Close the SFTP session and its underlying channel. + + @since: 1.4 + """ + self.sock.close() + + def listdir(self, path='.'): + """ + Return a list containing the names of the entries 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. + This method is meant to mirror C{os.listdir} as closely as possible. + For a list of full L{SFTPAttributes} objects, see L{listdir_attr}. + + @param path: path to list (defaults to C{'.'}) + @type path: str + @return: list of filenames + @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. + + @param path: path to list (defaults to C{'.'}) + @type path: str + @return: list of attributes + @rtype: list of L{SFTPAttributes} + + @since: 1.2 + """ + path = self._adjust_cwd(path) + t, msg = self._request(CMD_OPENDIR, path) + if t != CMD_HANDLE: + raise SFTPError('Expected handle') + handle = msg.get_string() + filelist = [] + while True: + try: + t, msg = self._request(CMD_READDIR, handle) + except EOFError, e: + # done with handle + break + if t != CMD_NAME: + raise SFTPError('Expected name response') + count = msg.get_int() + for i in range(count): + filename = _to_unicode(msg.get_string()) + longname = _to_unicode(msg.get_string()) + attr = SFTPAttributes._from_msg(msg, filename) + if (filename != '.') and (filename != '..'): + filelist.append(attr) + self._request(CMD_CLOSE, handle) + return filelist + + def file(self, filename, mode='r', bufsize=-1): + """ + Open a file on the remote server. The arguments are the same as for + python's built-in C{file} (aka C{open}). A file-like object is + returned, which closely mimics the behavior of a normal python file + object. + + The mode indicates how the file is to be opened: C{'r'} for reading, + C{'w'} for writing (truncating an existing file), C{'a'} for appending, + C{'r+'} for reading/writing, C{'w+'} for reading/writing (truncating an + 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 + C{O_EXCL} flag in posix. + + The file will be buffered in standard python style by default, but + can be altered with the C{bufsize} parameter. C{0} turns off + buffering, C{1} uses line buffering, and any number greater than 1 + (C{>1}) uses that specific buffer size. + + @param filename: name of the file to open. + @type filename: string + @param mode: mode (python-style) to open in. + @type mode: string + @param bufsize: desired buffering (-1 = default buffer size) + @type bufsize: int + @return: a file object representing the open file. + @rtype: SFTPFile + + @raise IOError: if the file could not be opened. + """ + filename = self._adjust_cwd(filename) + imode = 0 + if ('r' in mode) or ('+' in mode): + imode |= SFTP_FLAG_READ + if ('w' in mode) or ('+' in mode) or ('a' in mode): + imode |= SFTP_FLAG_WRITE + if ('w' in mode): + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_TRUNC + if ('a' in mode): + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_APPEND + if ('x' in mode): + imode |= SFTP_FLAG_CREATE | SFTP_FLAG_EXCL + attrblock = SFTPAttributes() + t, msg = self._request(CMD_OPEN, filename, imode, attrblock) + if t != CMD_HANDLE: + raise SFTPError('Expected handle') + handle = msg.get_string() + return SFTPFile(self, handle, mode, bufsize) + + # python has migrated toward file() instead of open(). + # and really, that's more easily identifiable. + open = file + + def remove(self, path): + """ + Remove the file at the given path. + + @param path: path (absolute or relative) of the file to remove. + @type path: string + + @raise IOError: if the path refers to a folder (directory). Use + L{rmdir} to remove a folder. + """ + path = self._adjust_cwd(path) + self._request(CMD_REMOVE, path) + + unlink = remove + + def rename(self, oldpath, newpath): + """ + Rename a file or folder from C{oldpath} to C{newpath}. + + @param oldpath: existing name of the file or folder. + @type oldpath: string + @param newpath: new name for the file or folder. + @type newpath: string + + @raise IOError: if C{newpath} is a folder, or something else goes + wrong. + """ + oldpath = self._adjust_cwd(oldpath) + newpath = self._adjust_cwd(newpath) + self._request(CMD_RENAME, oldpath, newpath) + + def mkdir(self, path, mode=0777): + """ + Create a folder (directory) named C{path} with numeric mode C{mode}. + The default mode is 0777 (octal). On some systems, mode is ignored. + Where it is used, the current umask value is first masked out. + + @param path: name of the folder to create. + @type path: string + @param mode: permissions (posix-style) for the newly-created folder. + @type mode: int + """ + path = self._adjust_cwd(path) + attr = SFTPAttributes() + attr.st_mode = mode + self._request(CMD_MKDIR, path, attr) + + def rmdir(self, path): + """ + Remove the folder named C{path}. + + @param path: name of the folder to remove. + @type path: string + """ + path = self._adjust_cwd(path) + self._request(CMD_RMDIR, path) + + def stat(self, path): + """ + Retrieve information about a file on the remote system. The return + value is an object whose attributes correspond to the attributes of + python's C{stat} structure as returned by C{os.stat}, except that it + contains fewer fields. An SFTP server may return as much or as little + info as it wants, so the results may vary from server to server. + + Unlike a python C{stat} object, the result may not be accessed as a + tuple. This is mostly due to the author's slack factor. + + The fields supported are: C{st_mode}, C{st_size}, C{st_uid}, C{st_gid}, + C{st_atime}, and C{st_mtime}. + + @param path: the filename to stat. + @type path: string + @return: an object containing attributes about the given file. + @rtype: SFTPAttributes + """ + path = self._adjust_cwd(path) + t, msg = self._request(CMD_STAT, path) + if t != CMD_ATTRS: + raise SFTPError('Expected attributes') + return SFTPAttributes._from_msg(msg) + + def lstat(self, path): + """ + Retrieve information about a file on the remote system, without + following symbolic links (shortcuts). This otherwise behaves exactly + the same as L{stat}. + + @param path: the filename to stat. + @type path: string + @return: an object containing attributes about the given file. + @rtype: SFTPAttributes + """ + path = self._adjust_cwd(path) + t, msg = self._request(CMD_LSTAT, path) + if t != CMD_ATTRS: + raise SFTPError('Expected attributes') + return SFTPAttributes._from_msg(msg) + + def symlink(self, source, dest): + """ + Create a symbolic link (shortcut) of the C{source} path at + C{destination}. + + @param source: path of the original file. + @type source: string + @param dest: path of the newly created symlink. + @type dest: string + """ + dest = self._adjust_cwd(dest) + if type(source) is unicode: + source = source.encode('utf-8') + self._request(CMD_SYMLINK, source, dest) + + def chmod(self, path, mode): + """ + Change the mode (permissions) of a file. The permissions are + unix-style and identical to those used by python's C{os.chmod} + function. + + @param path: path of the file to change the permissions of. + @type path: string + @param mode: new permissions. + @type mode: int + """ + path = self._adjust_cwd(path) + 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 + python's C{os.chown} function, you must pass both arguments, so if you + only want to change one, use L{stat} first to retrieve the current + owner and group. + + @param path: path of the file to change the owner and group of. + @type path: string + @param uid: new owner's uid + @type uid: int + @param gid: new group id + @type gid: int + """ + path = self._adjust_cwd(path) + attr = SFTPAttributes() + attr.st_uid, attr.st_gid = uid, gid + self._request(CMD_SETSTAT, path, attr) + + def utime(self, path, times): + """ + Set the access and modified times of the file specified by C{path}. If + C{times} is C{None}, then the file's access and modified times are set + to the current time. Otherwise, C{times} must be a 2-tuple of numbers, + of the form C{(atime, mtime)}, which is used to set the access and + modified times, respectively. This bizarre API is mimicked from python + for the sake of consistency -- I apologize. + + @param path: path of the file to modify. + @type path: string + @param times: C{None} or a tuple of (access time, modified time) in + standard internet epoch time (seconds since 01 January 1970 GMT). + @type times: tuple of int + """ + path = self._adjust_cwd(path) + if times is None: + times = (time.time(), time.time()) + attr = SFTPAttributes() + attr.st_atime, attr.st_mtime = times + self._request(CMD_SETSTAT, path, attr) + + def readlink(self, path): + """ + Return the target of a symbolic link (shortcut). You can use + L{symlink} to create these. The result may be either an absolute or + relative pathname. + + @param path: path of the symbolic link file. + @type path: str + @return: target path. + @rtype: str + """ + path = self._adjust_cwd(path) + t, msg = self._request(CMD_READLINK, path) + if t != CMD_NAME: + raise SFTPError('Expected name response') + count = msg.get_int() + if count == 0: + return None + if count != 1: + raise SFTPError('Readlink returned %d results' % count) + return _to_unicode(msg.get_string()) + + def normalize(self, path): + """ + Return the normalized path (on the server) of a given path. This + can be used to quickly resolve symbolic links or determine what the + server is considering to be the "current folder" (by passing C{'.'} + as C{path}). + + @param path: path to be normalized. + @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) + t, msg = self._request(CMD_REALPATH, path) + if t != CMD_NAME: + raise SFTPError('Expected name response') + count = msg.get_int() + 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. + + @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) + + 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): + """ + 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 + @type remotepath: str + + @since: 1.4 + """ + 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) + fl.close() + fr.close() + s = self.stat(remotepath) + if s.st_size != size: + raise IOError('size mismatch in put! %d != %d' % (s.st_size, size)) + + def get(self, remotepath, localpath): + """ + 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 + @type localpath: str + + @since: 1.4 + """ + fr = self.file(remotepath, 'rb') + 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) + fl.close() + fr.close() + s = os.stat(localpath) + if s.st_size != size: + raise IOError('size mismatch in get! %d != %d' % (s.st_size, size)) + + + ### internals... + + + 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() + try: + msg = Message() + msg.add_int(self.request_number) + for item in arg: + if type(item) is int: + msg.add_int(item) + elif type(item) is long: + msg.add_int64(item) + elif type(item) is str: + msg.add_string(item) + elif type(item) is SFTPAttributes: + item._pack(msg) + else: + raise Exception('unknown type for %r type %r' % (item, type(item))) + num = self.request_number + self._expecting[num] = fileobj + self._send_packet(t, str(msg)) + self.request_number += 1 + finally: + self._lock.release() + return num + + def _read_response(self, waitfor=None): + while True: + t, data = self._read_packet() + msg = Message(data) + num = msg.get_int() + if num not in self._expecting: + # might be response for a file that was closed before responses came back + self._log(DEBUG, 'Unexpected response #%d' % (num,)) + if waitfor is None: + # just doing a single check + return + continue + fileobj = self._expecting[num] + del self._expecting[num] + if num == waitfor: + # synchronous + if t == CMD_STATUS: + self._convert_status(msg) + return t, msg + if fileobj is not type(None): + fileobj._async_response(t, msg) + if waitfor is None: + # just doing a single check + return + + def _finish_responses(self, fileobj): + while fileobj in self._expecting.values(): + self._read_response() + fileobj._check_exception() + + def _convert_status(self, msg): + """ + Raises EOFError or IOError on error status; otherwise does nothing. + """ + code = msg.get_int() + text = msg.get_string() + if code == SFTP_OK: + return + elif code == SFTP_EOF: + raise EOFError(text) + elif code == SFTP_NO_SUCH_FILE: + # clever idea from john a. meinel: map the error codes to errno + raise IOError(errno.ENOENT, text) + elif code == SFTP_PERMISSION_DENIED: + 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 + directory" for the server. + """ + if type(path) is unicode: + path = path.encode('utf-8') + if self._cwd is None: + return path + if (len(path) > 0) and (path[0] == '/'): + # absolute path + return path + return self._cwd + '/' + path + + +class SFTP (SFTPClient): + "an alias for L{SFTPClient} for backwards compatability" + pass diff --git a/paramiko/sftp_file.py b/paramiko/sftp_file.py new file mode 100644 index 0000000..f224f02 --- /dev/null +++ b/paramiko/sftp_file.py @@ -0,0 +1,307 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{SFTPFile} +""" + +import threading +from paramiko.common import * +from paramiko.sftp import * +from paramiko.file import BufferedFile +from paramiko.sftp_attr import SFTPAttributes + + +class SFTPFile (BufferedFile): + """ + Proxy object for a file on the remote server, in client mode SFTP. + """ + + # Some sftp servers will choke if you send read/write requests larger than + # this size. + MAX_REQUEST_SIZE = 32768 + + def __init__(self, sftp, handle, mode='r', bufsize=-1): + BufferedFile.__init__(self) + self.sftp = sftp + self.handle = handle + BufferedFile._set_mode(self, mode, bufsize) + self.pipelined = False + self._prefetching = False + self._saved_exception = None + + def __del__(self): + self.close(_async=True) + + def close(self, _async=False): + # We allow double-close without signaling an error, because real + # Python file objects do. However, we must protect against actually + # sending multiple CMD_CLOSE packets, because after we close our + # handle, the same handle may be re-allocated by the server, and we + # may end up mysteriously closing some random other file. (This is + # especially important because we unconditionally call close() from + # __del__.) + if self._closed: + return + if self.pipelined: + self.sftp._finish_responses(self) + BufferedFile.close(self) + try: + if _async: + # GC'd file handle could be called from an arbitrary thread -- don't wait for a response + self.sftp._async_request(type(None), CMD_CLOSE, self.handle) + else: + self.sftp._request(CMD_CLOSE, self.handle) + except EOFError: + # may have outlived the Transport connection + pass + except IOError: + # may have outlived the Transport connection + pass + + def _read_prefetch(self, size): + # while not closed, and haven't fetched past the current position, and haven't reached EOF... + while (self._prefetch_so_far <= self._realpos) and \ + (self._prefetch_so_far < self._prefetch_size) and not self._closed: + self.sftp._read_response() + self._check_exception() + k = self._prefetch_data.keys() + k.sort() + while (len(k) > 0) and (k[0] + len(self._prefetch_data[k[0]]) <= self._realpos): + # done with that block + del self._prefetch_data[k[0]] + k.pop(0) + if len(k) == 0: + self._prefetching = False + return '' + assert k[0] <= self._realpos + buf_offset = self._realpos - k[0] + buf_length = len(self._prefetch_data[k[0]]) - buf_offset + return self._prefetch_data[k[0]][buf_offset : buf_offset + buf_length] + + def _read(self, size): + size = min(size, self.MAX_REQUEST_SIZE) + if self._prefetching: + return self._read_prefetch(size) + t, msg = self.sftp._request(CMD_READ, self.handle, long(self._realpos), int(size)) + if t != CMD_DATA: + raise SFTPError('Expected data') + return msg.get_string() + + def _write(self, data): + # may write less than requested if it would exceed max packet size + chunk = min(len(data), self.MAX_REQUEST_SIZE) + req = self.sftp._async_request(type(None), CMD_WRITE, self.handle, long(self._realpos), + str(data[:chunk])) + if not self.pipelined or self.sftp.sock.recv_ready(): + t, msg = self.sftp._read_response(req) + if t != CMD_STATUS: + raise SFTPError('Expected status') + # convert_status already called + return chunk + + def settimeout(self, timeout): + """ + Set a timeout on read/write operations on the underlying socket or + ssh L{Channel}. + + @see: L{Channel.settimeout} + @param timeout: seconds to wait for a pending read/write operation + before raising C{socket.timeout}, or C{None} for no timeout + @type timeout: float + """ + self.sftp.sock.settimeout(timeout) + + def gettimeout(self): + """ + Returns the timeout in seconds (as a float) associated with the socket + or ssh L{Channel} used for this file. + + @see: L{Channel.gettimeout} + @rtype: float + """ + return self.sftp.sock.gettimeout() + + def setblocking(self, blocking): + """ + Set blocking or non-blocking mode on the underiying socket or ssh + L{Channel}. + + @see: L{Channel.setblocking} + @param blocking: 0 to set non-blocking mode; non-0 to set blocking + mode. + @type blocking: int + """ + self.sftp.sock.setblocking(blocking) + + def seek(self, offset, whence=0): + self.flush() + if whence == self.SEEK_SET: + self._realpos = self._pos = offset + elif whence == self.SEEK_CUR: + self._pos += offset + self._realpos = self._pos + else: + self._realpos = self._pos = self._get_size() + offset + self._rbuffer = '' + + def stat(self): + """ + Retrieve information about this file from the remote system. This is + exactly like L{SFTP.stat}, except that it operates on an already-open + file. + + @return: an object containing attributes about this file. + @rtype: SFTPAttributes + """ + t, msg = self.sftp._request(CMD_FSTAT, self.handle) + if t != CMD_ATTRS: + raise SFTPError('Expected attributes') + return SFTPAttributes._from_msg(msg) + + def check(self, hash_algorithm, offset=0, length=0, block_size=0): + """ + Ask the server for a hash of a section of this file. This can be used + to verify a successful upload or download, or for various rsync-like + operations. + + The file is hashed from C{offset}, for C{length} bytes. If C{length} + is 0, the remainder of the file is hashed. Thus, if both C{offset} + and C{length} are zero, the entire file is hashed. + + Normally, C{block_size} will be 0 (the default), and this method will + return a byte string representing the requested hash (for example, a + string of length 16 for MD5, or 20 for SHA-1). If a non-zero + C{block_size} is given, each chunk of the file (from C{offset} to + C{offset + length}) of C{block_size} bytes is computed as a separate + hash. The hash results are all concatenated and returned as a single + string. + + For example, C{check('sha1', 0, 1024, 512)} will return a string of + length 40. The first 20 bytes will be the SHA-1 of the first 512 bytes + of the file, and the last 20 bytes will be the SHA-1 of the next 512 + bytes. + + @param hash_algorithm: the name of the hash algorithm to use (normally + C{"sha1"} or C{"md5"}) + @type hash_algorithm: str + @param offset: offset into the file to begin hashing (0 means to start + from the beginning) + @type offset: int or long + @param length: number of bytes to hash (0 means continue to the end of + the file) + @type length: int or long + @param block_size: number of bytes to hash per result (must not be less + than 256; 0 means to compute only one hash of the entire segment) + @type block_size: int + @return: string of bytes representing the hash of each block, + concatenated together + @rtype: str + + @note: Many (most?) servers don't support this extension yet. + + @raise IOError: if the server doesn't support the "check-file" + extension, or possibly doesn't support the hash algorithm + requested + + @since: 1.4 + """ + t, msg = self.sftp._request(CMD_EXTENDED, 'check-file', self.handle, + hash_algorithm, long(offset), long(length), block_size) + ext = msg.get_string() + alg = msg.get_string() + data = msg.get_remainder() + return data + + def set_pipelined(self, pipelined=True): + """ + Turn on/off the pipelining of write operations to this file. When + pipelining is on, paramiko won't wait for the server response after + each write operation. Instead, they're collected as they come in. + At the first non-write operation (including L{close}), all remaining + server responses are collected. This means that if there was an error + with one of your later writes, an exception might be thrown from + within L{close} instead of L{write}. + + By default, files are I{not} pipelined. + + @param pipelined: C{True} if pipelining should be turned on for this + file; C{False} otherwise + @type pipelined: bool + + @since: 1.5 + """ + self.pipelined = pipelined + + def prefetch(self): + """ + Pre-fetch the remaining contents of this file in anticipation of + future L{read} calls. If reading the entire file, pre-fetching can + dramatically improve the download speed by avoiding roundtrip latency. + The file's contents are incrementally buffered in a background thread. + + @since: 1.5.1 + """ + size = self.stat().st_size + # queue up async reads for the rest of the file + self._prefetching = True + self._prefetch_so_far = self._realpos + self._prefetch_size = size + self._prefetch_data = {} + t = threading.Thread(target=self._prefetch) + t.setDaemon(True) + t.start() + + def _prefetch(self): + n = self._realpos + size = self._prefetch_size + while n < size: + chunk = min(self.MAX_REQUEST_SIZE, size - n) + self.sftp._async_request(self, CMD_READ, self.handle, long(n), int(chunk)) + n += chunk + + + ### internals... + + + def _get_size(self): + try: + return self.stat().st_size + except: + return 0 + + def _async_response(self, t, msg): + if t == CMD_STATUS: + # save exception and re-raise it on next file operation + try: + self.sftp._convert_status(msg) + except Exception, x: + self._saved_exception = x + return + if t != CMD_DATA: + raise SFTPError('Expected data') + data = msg.get_string() + self._prefetch_data[self._prefetch_so_far] = data + self._prefetch_so_far += len(data) + + def _check_exception(self): + "if there's a saved exception, raise & clear it" + if self._saved_exception is not None: + x = self._saved_exception + self._saved_exception = None + raise x diff --git a/paramiko/sftp_handle.py b/paramiko/sftp_handle.py new file mode 100644 index 0000000..e1d93e9 --- /dev/null +++ b/paramiko/sftp_handle.py @@ -0,0 +1,188 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Abstraction of an SFTP file handle (for server mode). +""" + +import os + +from paramiko.common import * +from paramiko.sftp import * + + +class SFTPHandle (object): + """ + Abstract object representing a handle to an open file (or folder) in an + SFTP server implementation. Each handle has a string representation used + by the client to refer to the underlying file. + + Server implementations can (and should) subclass SFTPHandle to implement + features of a file handle, like L{stat} or L{chattr}. + """ + def __init__(self): + self.__name = None + # only for handles to folders: + self.__files = { } + self.__tell = None + + def close(self): + """ + When a client closes a file, this method is called on the handle. + Normally you would use this method to close the underlying OS level + file object(s). + + The default implementation checks for attributes on C{self} named + C{readfile} and/or C{writefile}, and if either or both are present, + their C{close()} methods are called. This means that if you are + using the default implementations of L{read} and L{write}, this + method's default implementation should be fine also. + """ + readfile = getattr(self, 'readfile', None) + if readfile is not None: + readfile.close() + writefile = getattr(self, 'writefile', None) + if writefile is not None: + writefile.close() + + def read(self, offset, length): + """ + Read up to C{length} bytes from this file, starting at position + C{offset}. The offset may be a python long, since SFTP allows it + to be 64 bits. + + If the end of the file has been reached, this method may return an + empty string to signify EOF, or it may also return L{SFTP_EOF}. + + The default implementation checks for an attribute on C{self} named + C{readfile}, and if present, performs the read operation on the python + file-like object found there. (This is meant as a time saver for the + common case where you are wrapping a python file object.) + + @param offset: position in the file to start reading from. + @type offset: int or long + @param length: number of bytes to attempt to read. + @type length: int + @return: data read from the file, or an SFTP error code. + @rtype: str + """ + if not hasattr(self, 'readfile') or (self.readfile is None): + return SFTP_OP_UNSUPPORTED + try: + if self.__tell is None: + self.__tell = self.readfile.tell() + if offset != self.__tell: + self.readfile.seek(offset) + self.__tell = offset + data = self.readfile.read(length) + except IOError, e: + self.__tell = None + return SFTPServer.convert_errno(e.errno) + self.__tell += len(data) + return data + + def write(self, offset, data): + """ + Write C{data} into this file at position C{offset}. Extending the + file past its original end is expected. Unlike python's normal + C{write()} methods, this method cannot do a partial write: it must + write all of C{data} or else return an error. + + The default implementation checks for an attribute on C{self} named + C{writefile}, and if present, performs the write operation on the + python file-like object found there. The attribute is named + differently from C{readfile} to make it easy to implement read-only + (or write-only) files, but if both attributes are present, they should + refer to the same file. + + @param offset: position in the file to start reading from. + @type offset: int or long + @param data: data to write into the file. + @type data: str + @return: an SFTP error code like L{SFTP_OK}. + """ + if not hasattr(self, 'writefile') or (self.writefile is None): + return SFTP_OP_UNSUPPORTED + try: + if self.__tell is None: + self.__tell = self.writefile.tell() + if offset != self.__tell: + self.writefile.seek(offset) + self.__tell = offset + self.writefile.write(data) + self.writefile.flush() + except IOError, e: + self.__tell = None + return SFTPServer.convert_errno(e.errno) + self.__tell += len(data) + return SFTP_OK + + def stat(self): + """ + Return an L{SFTPAttributes} object referring to this open file, or an + error code. This is equivalent to L{SFTPServerInterface.stat}, except + it's called on an open file instead of a path. + + @return: an attributes object for the given file, or an SFTP error + code (like L{SFTP_PERMISSION_DENIED}). + @rtype: L{SFTPAttributes} I{or error code} + """ + return SFTP_OP_UNSUPPORTED + + def chattr(self, attr): + """ + Change the attributes of this file. The C{attr} object will contain + only those fields provided by the client in its request, so you should + check for the presence of fields before using them. + + @param attr: the attributes to change on this file. + @type attr: L{SFTPAttributes} + @return: an error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + + ### internals... + + + def _set_files(self, files): + """ + Used by the SFTP server code to cache a directory listing. (In + the SFTP protocol, listing a directory is a multi-stage process + requiring a temporary handle.) + """ + self.__files = files + + def _get_next_files(self): + """ + Used by the SFTP server code to retreive a cached directory + listing. + """ + fnlist = self.__files[:16] + self.__files = self.__files[16:] + return fnlist + + def _get_name(self): + return self.__name + + def _set_name(self, name): + self.__name = name + + +from paramiko.sftp_server import SFTPServer diff --git a/paramiko/sftp_server.py b/paramiko/sftp_server.py new file mode 100644 index 0000000..5905843 --- /dev/null +++ b/paramiko/sftp_server.py @@ -0,0 +1,420 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Server-mode SFTP support. +""" + +import os +import errno + +from Crypto.Hash import MD5, SHA +from paramiko.common import * +from paramiko.server import SubsystemHandler +from paramiko.sftp import * +from paramiko.sftp_si import * +from paramiko.sftp_attr import * + + +# known hash algorithms for the "check-file" extension +_hash_class = { + 'sha1': SHA, + 'md5': MD5, +} + + +class SFTPServer (BaseSFTP, SubsystemHandler): + """ + Server-side SFTP subsystem support. Since this is a L{SubsystemHandler}, + it can be (and is meant to be) set as the handler for C{"sftp"} requests. + Use L{Transport.set_subsystem_handler} to activate this class. + """ + + def __init__(self, channel, name, server, sftp_si=SFTPServerInterface, *largs, **kwargs): + """ + The constructor for SFTPServer is meant to be called from within the + L{Transport} as a subsystem handler. C{server} and any additional + parameters or keyword parameters are passed from the original call to + L{Transport.set_subsystem_handler}. + + @param channel: channel passed from the L{Transport}. + @type channel: L{Channel} + @param name: name of the requested subsystem. + @type name: str + @param server: the server object associated with this channel and + subsystem + @type server: L{ServerInterface} + @param sftp_si: a subclass of L{SFTPServerInterface} to use for handling + individual requests. + @type sftp_si: class + """ + BaseSFTP.__init__(self) + SubsystemHandler.__init__(self, channel, name, server) + transport = channel.get_transport() + self.logger = util.get_logger(transport.get_log_channel() + '.' + + channel.get_name() + '.sftp') + self.ultra_debug = transport.get_hexdump() + self.next_handle = 1 + # map of handle-string to SFTPHandle for files & folders: + self.file_table = { } + self.folder_table = { } + self.server = sftp_si(server, *largs, **kwargs) + + def start_subsystem(self, name, transport, channel): + self.sock = channel + self._log(DEBUG, 'Started sftp server on channel %s' % repr(channel)) + self._send_server_version() + self.server.session_started() + while True: + try: + t, data = self._read_packet() + except EOFError: + self._log(DEBUG, 'EOF -- end of session') + return + except Exception, e: + self._log(DEBUG, 'Exception on channel: ' + str(e)) + self._log(DEBUG, util.tb_strings()) + return + msg = Message(data) + request_number = msg.get_int() + self._process(t, request_number, msg) + + def finish_subsystem(self): + self.server.session_ended() + # close any file handles that were left open (so we can return them to the OS quickly) + for f in self.file_table.itervalues(): + f.close() + for f in self.folder_table.itervalues(): + f.close() + self.file_table = {} + self.folder_table = {} + + def convert_errno(e): + """ + Convert an errno value (as from an C{OSError} or C{IOError}) into a + standard SFTP result code. This is a convenience function for trapping + exceptions in server code and returning an appropriate result. + + @param e: an errno code, as from C{OSError.errno}. + @type e: int + @return: an SFTP error code like L{SFTP_NO_SUCH_FILE}. + @rtype: int + """ + if e == errno.EACCES: + # permission denied + return SFTP_PERMISSION_DENIED + elif e == errno.ENOENT: + # no such file + return SFTP_NO_SUCH_FILE + else: + return SFTP_FAILURE + convert_errno = staticmethod(convert_errno) + + def set_file_attr(filename, attr): + """ + Change a file's attributes on the local filesystem. The contents of + C{attr} are used to change the permissions, owner, group ownership, + and/or modification & access time of the file, depending on which + attributes are present in C{attr}. + + This is meant to be a handy helper function for translating SFTP file + requests into local file operations. + + @param filename: name of the file to alter (should usually be an + absolute path). + @type filename: str + @param attr: attributes to change. + @type attr: L{SFTPAttributes} + """ + if attr._flags & attr.FLAG_PERMISSIONS: + os.chmod(filename, attr.st_mode) + if attr._flags & attr.FLAG_UIDGID: + os.chown(filename, attr.st_uid, attr.st_gid) + if attr._flags & attr.FLAG_AMTIME: + os.utime(filename, (attr.st_atime, attr.st_mtime)) + set_file_attr = staticmethod(set_file_attr) + + + ### internals... + + + def _response(self, request_number, t, *arg): + msg = Message() + msg.add_int(request_number) + for item in arg: + if type(item) is int: + msg.add_int(item) + elif type(item) is long: + msg.add_int64(item) + elif type(item) is str: + msg.add_string(item) + elif type(item) is SFTPAttributes: + item._pack(msg) + else: + raise Exception('unknown type for ' + repr(item) + ' type ' + repr(type(item))) + self._send_packet(t, str(msg)) + + def _send_handle_response(self, request_number, handle, folder=False): + if not issubclass(type(handle), SFTPHandle): + # must be error code + self._send_status(request_number, handle) + return + handle._set_name('hx%d' % self.next_handle) + self.next_handle += 1 + if folder: + self.folder_table[handle._get_name()] = handle + else: + self.file_table[handle._get_name()] = handle + self._response(request_number, CMD_HANDLE, handle._get_name()) + + def _send_status(self, request_number, code, desc=None): + if desc is None: + desc = SFTP_DESC[code] + self._response(request_number, CMD_STATUS, code, desc) + + def _open_folder(self, request_number, path): + resp = self.server.list_folder(path) + if issubclass(type(resp), list): + # got an actual list of filenames in the folder + folder = SFTPHandle() + folder._set_files(resp) + self._send_handle_response(request_number, folder, True) + return + # must be an error code + self._send_status(request_number, resp) + + def _read_folder(self, request_number, folder): + flist = folder._get_next_files() + if len(flist) == 0: + self._send_status(request_number, SFTP_EOF) + return + msg = Message() + msg.add_int(request_number) + msg.add_int(len(flist)) + for attr in flist: + msg.add_string(attr.filename) + msg.add_string(str(attr)) + attr._pack(msg) + self._send_packet(CMD_NAME, str(msg)) + + def _check_file(self, request_number, msg): + # this extension actually comes from v6 protocol, but since it's an + # extension, i feel like we can reasonably support it backported. + # it's very useful for verifying uploaded files or checking for + # rsync-like differences between local and remote files. + handle = msg.get_string() + alg_list = msg.get_list() + start = msg.get_int64() + length = msg.get_int64() + block_size = msg.get_int() + if not self.file_table.has_key(handle): + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + f = self.file_table[handle] + for x in alg_list: + if x in _hash_class: + algname = x + alg = _hash_class[x] + break + else: + self._send_status(request_number, SFTP_FAILURE, 'No supported hash types found') + return + if length == 0: + st = f.stat() + if not issubclass(type(st), SFTPAttributes): + self._send_status(request_number, st, 'Unable to stat file') + return + length = st.st_size - start + if block_size == 0: + block_size = length + if block_size < 256: + self._send_status(request_number, SFTP_FAILURE, 'Block size too small') + return + + sum = '' + offset = start + while offset < start + length: + blocklen = min(block_size, start + length - offset) + # don't try to read more than about 64KB at a time + chunklen = min(blocklen, 65536) + count = 0 + hash = alg.new() + while count < blocklen: + data = f.read(offset, chunklen) + if not type(data) is str: + self._send_status(request_number, data, 'Unable to hash file') + return + hash.update(data) + count += len(data) + offset += count + sum += hash.digest() + + msg = Message() + msg.add_int(request_number) + msg.add_string('check-file') + msg.add_string(algname) + msg.add_bytes(sum) + self._send_packet(CMD_EXTENDED_REPLY, str(msg)) + + def _convert_pflags(self, pflags): + "convert SFTP-style open() flags to python's os.open() flags" + if (pflags & SFTP_FLAG_READ) and (pflags & SFTP_FLAG_WRITE): + flags = os.O_RDWR + elif pflags & SFTP_FLAG_WRITE: + flags = os.O_WRONLY + else: + flags = os.O_RDONLY + if pflags & SFTP_FLAG_APPEND: + flags |= os.O_APPEND + if pflags & SFTP_FLAG_CREATE: + flags |= os.O_CREAT + if pflags & SFTP_FLAG_TRUNC: + flags |= os.O_TRUNC + if pflags & SFTP_FLAG_EXCL: + flags |= os.O_EXCL + return flags + + def _process(self, t, request_number, msg): + self._log(DEBUG, 'Request: %s' % CMD_NAMES[t]) + if t == CMD_OPEN: + path = msg.get_string() + flags = self._convert_pflags(msg.get_int()) + attr = SFTPAttributes._from_msg(msg) + self._send_handle_response(request_number, self.server.open(path, flags, attr)) + elif t == CMD_CLOSE: + handle = msg.get_string() + if self.folder_table.has_key(handle): + del self.folder_table[handle] + self._send_status(request_number, SFTP_OK) + return + if self.file_table.has_key(handle): + self.file_table[handle].close() + del self.file_table[handle] + self._send_status(request_number, SFTP_OK) + return + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + elif t == CMD_READ: + handle = msg.get_string() + offset = msg.get_int64() + length = msg.get_int() + if not self.file_table.has_key(handle): + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + data = self.file_table[handle].read(offset, length) + if type(data) is str: + if len(data) == 0: + self._send_status(request_number, SFTP_EOF) + else: + self._response(request_number, CMD_DATA, data) + else: + self._send_status(request_number, data) + elif t == CMD_WRITE: + handle = msg.get_string() + offset = msg.get_int64() + data = msg.get_string() + if not self.file_table.has_key(handle): + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + self._send_status(request_number, self.file_table[handle].write(offset, data)) + elif t == CMD_REMOVE: + path = msg.get_string() + self._send_status(request_number, self.server.remove(path)) + elif t == CMD_RENAME: + oldpath = msg.get_string() + newpath = msg.get_string() + self._send_status(request_number, self.server.rename(oldpath, newpath)) + elif t == CMD_MKDIR: + path = msg.get_string() + attr = SFTPAttributes._from_msg(msg) + self._send_status(request_number, self.server.mkdir(path, attr)) + elif t == CMD_RMDIR: + path = msg.get_string() + self._send_status(request_number, self.server.rmdir(path)) + elif t == CMD_OPENDIR: + path = msg.get_string() + self._open_folder(request_number, path) + return + elif t == CMD_READDIR: + handle = msg.get_string() + if not self.folder_table.has_key(handle): + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + folder = self.folder_table[handle] + self._read_folder(request_number, folder) + elif t == CMD_STAT: + path = msg.get_string() + resp = self.server.stat(path) + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_LSTAT: + path = msg.get_string() + resp = self.server.lstat(path) + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_FSTAT: + handle = msg.get_string() + if not self.file_table.has_key(handle): + self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + resp = self.file_table[handle].stat() + if issubclass(type(resp), SFTPAttributes): + self._response(request_number, CMD_ATTRS, resp) + else: + self._send_status(request_number, resp) + elif t == CMD_SETSTAT: + path = msg.get_string() + attr = SFTPAttributes._from_msg(msg) + self._send_status(request_number, self.server.chattr(path, attr)) + elif t == CMD_FSETSTAT: + handle = msg.get_string() + attr = SFTPAttributes._from_msg(msg) + if not self.file_table.has_key(handle): + self._response(request_number, SFTP_BAD_MESSAGE, 'Invalid handle') + return + self._send_status(request_number, self.file_table[handle].chattr(attr)) + elif t == CMD_READLINK: + path = msg.get_string() + resp = self.server.readlink(path) + if type(resp) is str: + self._response(request_number, CMD_NAME, 1, resp, '', SFTPAttributes()) + else: + self._send_status(request_number, resp) + elif t == CMD_SYMLINK: + # the sftp 2 draft is incorrect here! path always follows target_path + target_path = msg.get_string() + path = msg.get_string() + self._send_status(request_number, self.server.symlink(target_path, path)) + elif t == CMD_REALPATH: + path = msg.get_string() + rpath = self.server.canonicalize(path) + self._response(request_number, CMD_NAME, 1, rpath, '', SFTPAttributes()) + elif t == CMD_EXTENDED: + tag = msg.get_string() + if tag == 'check-file': + self._check_file(request_number, msg) + else: + send._send_status(request_number, SFTP_OP_UNSUPPORTED) + else: + self._send_status(request_number, SFTP_OP_UNSUPPORTED) + + +from paramiko.sftp_handle import SFTPHandle diff --git a/paramiko/sftp_si.py b/paramiko/sftp_si.py new file mode 100644 index 0000000..16005d4 --- /dev/null +++ b/paramiko/sftp_si.py @@ -0,0 +1,303 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{SFTPServerInterface} is an interface to override for SFTP server support. +""" + +import os + +from paramiko.common import * +from paramiko.sftp import * + + +class SFTPServerInterface (object): + """ + This class defines an interface for controlling the behavior of paramiko + when using the L{SFTPServer} subsystem to provide an SFTP server. + + Methods on this class are called from the SFTP session's thread, so you can + block as long as necessary without affecting other sessions (even other + SFTP sessions). However, raising an exception will usually cause the SFTP + session to abruptly end, so you will usually want to catch exceptions and + return an appropriate error code. + """ + + def __init__ (self, server, *largs, **kwargs): + """ + Create a new SFTPServerInterface object. This method does nothing by + default and is meant to be overridden by subclasses. + + @param server: the server object associated with this channel and + SFTP subsystem + @type server: L{ServerInterface} + """ + super(SFTPServerInterface, self).__init__(*largs, **kwargs) + + def session_started(self): + """ + The SFTP server session has just started. This method is meant to be + overridden to perform any necessary setup before handling callbacks + from SFTP operations. + """ + pass + + def session_ended(self): + """ + The SFTP server session has just ended, either cleanly or via an + exception. This method is meant to be overridden to perform any + necessary cleanup before this C{SFTPServerInterface} object is + destroyed. + """ + pass + + def open(self, path, flags, attr): + """ + Open a file on the server and create a handle for future operations + on that file. On success, a new object subclassed from L{SFTPHandle} + should be returned. This handle will be used for future operations + on the file (read, write, etc). On failure, an error code such as + L{SFTP_PERMISSION_DENIED} should be returned. + + C{flags} contains the requested mode for opening (read-only, + write-append, etc) as a bitset of flags from the C{os} module: + - C{os.O_RDONLY} + - C{os.O_WRONLY} + - C{os.O_RDWR} + - C{os.O_APPEND} + - C{os.O_CREAT} + - C{os.O_TRUNC} + - C{os.O_EXCL} + (One of C{os.O_RDONLY}, C{os.O_WRONLY}, or C{os.O_RDWR} will always + be set.) + + The C{attr} object contains requested attributes of the file if it + has to be created. Some or all attribute fields may be missing if + the client didn't specify them. + + @note: The SFTP protocol defines all files to be in "binary" mode. + There is no equivalent to python's "text" mode. + + @param path: the requested path (relative or absolute) of the file + to be opened. + @type path: str + @param flags: flags or'd together from the C{os} module indicating the + requested mode for opening the file. + @type flags: int + @param attr: requested attributes of the file if it is newly created. + @type attr: L{SFTPAttributes} + @return: a new L{SFTPHandle} I{or error code}. + @rtype L{SFTPHandle} + """ + return SFTP_OP_UNSUPPORTED + + def list_folder(self, path): + """ + Return a list of files within a given folder. The C{path} will use + posix notation (C{"/"} separates folder names) and may be an absolute + or relative path. + + The list of files is expected to be a list of L{SFTPAttributes} + objects, which are similar in structure to the objects returned by + C{os.stat}. In addition, each object should have its C{filename} + field filled in, since this is important to a directory listing and + not normally present in C{os.stat} results. The method + L{SFTPAttributes.from_stat} will usually do what you want. + + In case of an error, you should return one of the C{SFTP_*} error + codes, such as L{SFTP_PERMISSION_DENIED}. + + @param path: the requested path (relative or absolute) to be listed. + @type path: str + @return: a list of the files in the given folder, using + L{SFTPAttributes} objects. + @rtype: list of L{SFTPAttributes} I{or error code} + + @note: You should normalize the given C{path} first (see the + C{os.path} module) and check appropriate permissions before returning + the list of files. Be careful of malicious clients attempting to use + relative paths to escape restricted folders, if you're doing a direct + translation from the SFTP server path to your local filesystem. + """ + return SFTP_OP_UNSUPPORTED + + def stat(self, path): + """ + Return an L{SFTPAttributes} object for a path on the server, or an + error code. If your server supports symbolic links (also known as + "aliases"), you should follow them. (L{lstat} is the corresponding + call that doesn't follow symlinks/aliases.) + + @param path: the requested path (relative or absolute) to fetch + file statistics for. + @type path: str + @return: an attributes object for the given file, or an SFTP error + code (like L{SFTP_PERMISSION_DENIED}). + @rtype: L{SFTPAttributes} I{or error code} + """ + return SFTP_OP_UNSUPPORTED + + def lstat(self, path): + """ + Return an L{SFTPAttributes} object for a path on the server, or an + error code. If your server supports symbolic links (also known as + "aliases"), you should I{not} follow them -- instead, you should + return data on the symlink or alias itself. (L{stat} is the + corresponding call that follows symlinks/aliases.) + + @param path: the requested path (relative or absolute) to fetch + file statistics for. + @type path: str + @return: an attributes object for the given file, or an SFTP error + code (like L{SFTP_PERMISSION_DENIED}). + @rtype: L{SFTPAttributes} I{or error code} + """ + return SFTP_OP_UNSUPPORTED + + def remove(self, path): + """ + Delete a file, if possible. + + @param path: the requested path (relative or absolute) of the file + to delete. + @type path: str + @return: an SFTP error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + def rename(self, oldpath, newpath): + """ + Rename (or move) a file. The SFTP specification implies that this + method can be used to move an existing file into a different folder, + and since there's no other (easy) way to move files via SFTP, it's + probably a good idea to implement "move" in this method too, even for + files that cross disk partition boundaries, if at all possible. + + @note: You should return an error if a file with the same name as + C{newpath} already exists. (The rename operation should be + non-desctructive.) + + @param oldpath: the requested path (relative or absolute) of the + existing file. + @type oldpath: str + @param newpath: the requested new path of the file. + @type newpath: str + @return: an SFTP error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + def mkdir(self, path, attr): + """ + Create a new directory with the given attributes. The C{attr} + object may be considered a "hint" and ignored. + + The C{attr} object will contain only those fields provided by the + client in its request, so you should use C{hasattr} to check for + the presense of fields before using them. In some cases, the C{attr} + object may be completely empty. + + @param path: requested path (relative or absolute) of the new + folder. + @type path: str + @param attr: requested attributes of the new folder. + @type attr: L{SFTPAttributes} + @return: an SFTP error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + def rmdir(self, path): + """ + Remove a directory if it exists. The C{path} should refer to an + existing, empty folder -- otherwise this method should return an + error. + + @param path: requested path (relative or absolute) of the folder + to remove. + @type path: str + @return: an SFTP error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + def chattr(self, path, attr): + """ + Change the attributes of a file. The C{attr} object will contain + only those fields provided by the client in its request, so you + should check for the presence of fields before using them. + + @param path: requested path (relative or absolute) of the file to + change. + @type path: str + @param attr: requested attributes to change on the file. + @type attr: L{SFTPAttributes} + @return: an error code like L{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED + + def canonicalize(self, path): + """ + Return the canonical form of a path on the server. For example, + if the server's home folder is C{/home/foo}, the path + C{"../betty"} would be canonicalized to C{"/home/betty"}. Note + the obvious security issues: if you're serving files only from a + specific folder, you probably don't want this method to reveal path + names outside that folder. + + You may find the python methods in C{os.path} useful, especially + C{os.path.normpath} and C{os.path.realpath}. + + The default implementation returns C{os.path.normpath('/' + path)}. + """ + if os.path.isabs(path): + return os.path.normpath(path) + else: + return os.path.normpath('/' + path) + + def readlink(self, path): + """ + Return the target of a symbolic link (or shortcut) on the server. + If the specified path doesn't refer to a symbolic link, an error + should be returned. + + @param path: path (relative or absolute) of the symbolic link. + @type path: str + @return: the target path of the symbolic link, or an error code like + L{SFTP_NO_SUCH_FILE}. + @rtype: str I{or error code} + """ + return SFTP_OP_UNSUPPORTED + + def symlink(self, target_path, path): + """ + Create a symbolic link on the server, as new pathname C{path}, + with C{target_path} as the target of the link. + + @param target_path: path (relative or absolute) of the target for + this new symbolic link. + @type target_path: str + @param path: path (relative or absolute) of the symbolic link to + create. + @type path: str + @return: an error code like C{SFTP_OK}. + @rtype: int + """ + return SFTP_OP_UNSUPPORTED diff --git a/paramiko/ssh_exception.py b/paramiko/ssh_exception.py new file mode 100644 index 0000000..900d4a0 --- /dev/null +++ b/paramiko/ssh_exception.py @@ -0,0 +1,69 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Exceptions defined by paramiko. +""" + + +class SSHException (Exception): + """ + Exception raised by failures in SSH2 protocol negotiation or logic errors. + """ + pass + + +class PasswordRequiredException (SSHException): + """ + Exception raised when a password is needed to unlock a private key file. + """ + pass + + +class BadAuthenticationType (SSHException): + """ + Exception raised when an authentication type (like password) is used, but + the server isn't allowing that type. (It may only allow public-key, for + example.) + + @ivar allowed_types: list of allowed authentication types provided by the + server (possible values are: C{"none"}, C{"password"}, and + C{"publickey"}). + @type allowed_types: list + + @since: 1.1 + """ + allowed_types = [] + + def __init__(self, explanation, types): + SSHException.__init__(self, explanation) + self.allowed_types = types + + def __str__(self): + return SSHException.__str__(self) + ' (allowed_types=%r)' % self.allowed_types + + +class PartialAuthentication (SSHException): + """ + An internal exception thrown in the case of partial authentication. + """ + allowed_types = [] + + def __init__(self, types): + SSHException.__init__(self, 'partial authentication') + self.allowed_types = types diff --git a/paramiko/transport.py b/paramiko/transport.py new file mode 100644 index 0000000..8714a96 --- /dev/null +++ b/paramiko/transport.py @@ -0,0 +1,1824 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +L{Transport} handles the core SSH2 protocol. +""" + +import os +import socket +import string +import struct +import sys +import threading +import time +import weakref + +from paramiko import util +from paramiko.common import * +from paramiko.compress import ZlibCompressor, ZlibDecompressor +from paramiko.ssh_exception import SSHException, BadAuthenticationType +from paramiko.message import Message +from paramiko.channel import Channel +from paramiko.sftp_client import SFTPClient +from paramiko.packet import Packetizer, NeedRekeyException +from paramiko.rsakey import RSAKey +from paramiko.dsskey import DSSKey +from paramiko.kex_group1 import KexGroup1 +from paramiko.kex_gex import KexGex +from paramiko.primes import ModulusPack +from paramiko.auth_handler import AuthHandler + +# these come from PyCrypt +# http://www.amk.ca/python/writing/pycrypt/ +# 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.Hash import SHA, MD5, HMAC + + +# for thread cleanup +_active_threads = [] +def _join_lingering_threads(): + for thr in _active_threads: + thr.stop_thread() +import atexit +atexit.register(_join_lingering_threads) + + +class SecurityOptions (object): + """ + Simple object containing the security preferences of an ssh transport. + These are tuples of acceptable ciphers, digests, key types, and key + exchange algorithms, listed in order of preference. + + Changing the contents and/or order of these fields affects the underlying + L{Transport} (but only if you change them before starting the session). + If you try to add an algorithm that paramiko doesn't recognize, + C{ValueError} will be raised. If you try to assign something besides a + tuple to one of the fields, C{TypeError} will be raised. + + @since: ivysaur + """ + __slots__ = [ 'ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport' ] + + def __init__(self, transport): + self._transport = transport + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + + @rtype: str + """ + return '<paramiko.SecurityOptions for %s>' % repr(self._transport) + + def _get_ciphers(self): + return self._transport._preferred_ciphers + + def _get_digests(self): + return self._transport._preferred_macs + + def _get_key_types(self): + return self._transport._preferred_keys + + def _get_kex(self): + return self._transport._preferred_kex + + def _get_compression(self): + return self._transport._preferred_compression + + def _set(self, name, orig, x): + if type(x) is list: + x = tuple(x) + if type(x) is not tuple: + raise TypeError('expected tuple or list') + possible = getattr(self._transport, orig).keys() + if len(filter(lambda n: n not in possible, x)) > 0: + raise ValueError('unknown cipher') + setattr(self._transport, name, x) + + def _set_ciphers(self, x): + self._set('_preferred_ciphers', '_cipher_info', x) + + def _set_digests(self, x): + self._set('_preferred_macs', '_mac_info', x) + + def _set_key_types(self, x): + self._set('_preferred_keys', '_key_info', x) + + def _set_kex(self, x): + self._set('_preferred_kex', '_kex_info', x) + + def _set_compression(self, x): + self._set('_preferred_compression', '_compression_info', x) + + ciphers = property(_get_ciphers, _set_ciphers, None, + "Symmetric encryption ciphers") + digests = property(_get_digests, _set_digests, None, + "Digest (one-way hash) algorithms") + key_types = property(_get_key_types, _set_key_types, None, + "Public-key algorithms") + kex = property(_get_kex, _set_kex, None, "Key exchange algorithms") + compression = property(_get_compression, _set_compression, None, + "Compression algorithms") + + +class Transport (threading.Thread): + """ + An SSH Transport attaches to a stream (usually a socket), negotiates an + encrypted session, authenticates, and then creates stream tunnels, called + L{Channel}s, across the session. Multiple channels can be multiplexed + across a single session (and often are, in the case of port forwardings). + """ + + _PROTO_ID = '2.0' + _CLIENT_ID = 'paramiko_1.5.2' + + _preferred_ciphers = ( 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc' ) + _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 = { + '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 }, + } + + _mac_info = { + 'hmac-sha1': { 'class': SHA, 'size': 20 }, + 'hmac-sha1-96': { 'class': SHA, 'size': 12 }, + 'hmac-md5': { 'class': MD5, 'size': 16 }, + 'hmac-md5-96': { 'class': MD5, 'size': 12 }, + } + + _key_info = { + 'ssh-rsa': RSAKey, + 'ssh-dss': DSSKey, + } + + _kex_info = { + '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 + # they've had troubles with security holes in zlib in the past. + 'zlib@openssh.com': ( ZlibCompressor, ZlibDecompressor ), + 'zlib': ( ZlibCompressor, ZlibDecompressor ), + 'none': ( None, None ), + } + + + _modulus_pack = None + + def __init__(self, sock): + """ + Create a new SSH session over an existing socket, or socket-like + object. This only creates the Transport object; it doesn't begin the + SSH session yet. Use L{connect} or L{start_client} to begin a client + session, or L{start_server} to begin a server session. + + If the object is not actually a socket, it must have the following + methods: + - C{send(str)}: Writes from 1 to C{len(str)} bytes, and + returns an int representing the number of bytes written. Returns + 0 or raises C{EOFError} if the stream has been closed. + - C{recv(int)}: Reads from 1 to C{int} bytes and returns them as a + string. Returns 0 or raises C{EOFError} if the stream has been + closed. + - C{close()}: Closes the socket. + - C{settimeout(n)}: Sets a (float) timeout on I/O operations. + + For ease of use, you may also pass in an address (as a tuple) or a host + string as the C{sock} argument. (A host string is a hostname with an + optional port (separated by C{":"}) which will be converted into a + tuple of C{(hostname, port)}.) A socket will be connected to this + address and used for communication. Exceptions from the C{socket} call + may be thrown in this case. + + @param sock: a socket or socket-like object to create the session over. + @type sock: socket + """ + if type(sock) is str: + # convert "host:port" into (host, port) + hl = sock.split(':', 1) + if len(hl) == 1: + sock = (hl[0], 22) + else: + sock = (hl[0], int(hl[1])) + if type(sock) is tuple: + # connect to the given (host, port) + hostname, port = sock + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((hostname, port)) + # okay, normal socket-ish flow here... + threading.Thread.__init__(self) + self.randpool = randpool + self.sock = sock + # Python < 2.3 doesn't have the settimeout method - RogerB + try: + # we set the timeout so we can check self.active periodically to + # see if we should bail. socket.timeout exception is never + # propagated. + self.sock.settimeout(0.1) + except AttributeError: + pass + # negotiated crypto parameters + self.packetizer = Packetizer(sock) + self.local_version = 'SSH-' + self._PROTO_ID + '-' + self._CLIENT_ID + self.remote_version = '' + self.local_cipher = self.remote_cipher = '' + self.local_kex_init = self.remote_kex_init = None + self.session_id = None + # /negotiated crypto parameters + self.expected_packet = 0 + self.active = False + self.initial_kex_done = False + self.in_kex = False + self.lock = threading.Lock() # synchronization (always higher level than write_lock) + self.channels = weakref.WeakValueDictionary() # (id -> Channel) + self.channel_events = { } # (id -> Event) + self.channels_seen = { } # (id -> True) + self.channel_counter = 1 + self.window_size = 65536 + self.max_packet_size = 34816 + self.saved_exception = None + self.clear_to_send = threading.Event() + self.clear_to_send_lock = threading.Lock() + self.log_name = 'paramiko.transport' + self.logger = util.get_logger(self.log_name) + self.packetizer.set_log(self.logger) + self.auth_handler = None + self.authenticated = False + # user-defined event callbacks: + self.completion_event = None + # server mode: + self.server_mode = False + self.server_object = None + self.server_key_dict = { } + self.server_accepts = [ ] + self.server_accept_cv = threading.Condition(self.lock) + self.subsystem_table = { } + + def __del__(self): + self.close() + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + + @rtype: str + """ + out = '<paramiko.Transport at %s' % hex(long(id(self)) & 0xffffffffL) + if not self.active: + out += ' (unconnected)' + else: + if self.local_cipher != '': + out += ' (cipher %s, %d bits)' % (self.local_cipher, + self._cipher_info[self.local_cipher]['key-size'] * 8) + if self.is_authenticated(): + if len(self.channels) == 1: + out += ' (active; 1 open channel)' + else: + out += ' (active; %d open channels)' % len(self.channels) + elif self.initial_kex_done: + out += ' (connected; awaiting auth)' + else: + out += ' (connecting)' + out += '>' + return out + + def get_security_options(self): + """ + Return a L{SecurityOptions} object which can be used to tweak the + encryption algorithms this transport will permit, and the order of + preference for them. + + @return: an object that can be used to change the preferred algorithms + for encryption, digest (hash), public key, and key exchange. + @rtype: L{SecurityOptions} + + @since: ivysaur + """ + return SecurityOptions(self) + + def start_client(self, event=None): + """ + 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. + + After a successful negotiation, you will usually want to authenticate, + calling L{auth_password <Transport.auth_password>} or + 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. + + @param event: an event to trigger when negotiation is complete + (optional) + @type event: threading.Event + + @raise SSHException: if negotiation fails (and no C{event} was passed + in) + """ + self.active = True + if event is not None: + # async, return immediately and let the app poll for completion + self.completion_event = event + self.start() + return + + # synchronous, wait for a result + self.completion_event = event = threading.Event() + self.start() + while True: + event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is not None: + raise e + raise SSHException('Negotiation failed.') + if event.isSet(): + break + + def start_server(self, event=None, server=None): + """ + 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. + + After a successful negotiation, the client will need to authenticate. + Override the methods + L{get_allowed_auths <ServerInterface.get_allowed_auths>}, + L{check_auth_none <ServerInterface.check_auth_none>}, + L{check_auth_password <ServerInterface.check_auth_password>}, and + L{check_auth_publickey <ServerInterface.check_auth_publickey>} in the + given C{server} object to control the authentication process. + + After a successful authentication, the client should request to open + a channel. Override + L{check_channel_request <ServerInterface.check_channel_request>} in the + given C{server} object to allow channels to be opened. + + @note: After calling this method (or L{start_client} or L{connect}), + you should no longer directly read from or write to the original + socket object. + + @param event: an event to trigger when negotiation is complete. + @type event: threading.Event + @param server: an object used to perform authentication and create + L{Channel}s. + @type server: L{server.ServerInterface} + + @raise SSHException: if negotiation fails (and no C{event} was passed + in) + """ + if server is None: + server = ServerInterface() + self.server_mode = True + self.server_object = server + self.active = True + if event is not None: + # async, return immediately and let the app poll for completion + self.completion_event = event + self.start() + return + + # synchronous, wait for a result + self.completion_event = event = threading.Event() + self.start() + while True: + event.wait(0.1) + if not self.active: + e = self.get_exception() + if e is not None: + raise e + raise SSHException('Negotiation failed.') + if event.isSet(): + break + + def add_server_key(self, key): + """ + Add a host key to the list of keys used for server mode. When behaving + as a server, the host key is used to sign certain packets during the + SSH2 negotiation, so that the client can trust that we are who we say + 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>} + """ + self.server_key_dict[key.get_name()] = key + + def get_server_key(self): + """ + Return the active host key, in server mode. After negotiating with the + client, this method will return the negotiated host key. If only one + type of host key was set with L{add_server_key}, that's the only key + that will ever be returned. But in cases where you have set more than + one type of host key (for example, an RSA key and a DSS key), the key + type will be negotiated by the client, and this method will return the + key of the type agreed on. If the host key has not been negotiated + yet, C{None} is returned. In client mode, the behavior is undefined. + + @return: host key of the type negotiated by the client, or C{None}. + @rtype: L{PKey <pkey.PKey>} + """ + try: + return self.server_key_dict[self.host_key_type] + except KeyError: + return None + + def load_server_moduli(filename=None): + """ + I{(optional)} + Load a file of prime moduli for use in doing group-exchange key + negotiation in server mode. It's a rather obscure option and can be + safely ignored. + + In server mode, the remote client may request "group-exchange" key + negotiation, which asks the server to send a random prime number that + fits certain criteria. These primes are pretty difficult to compute, + so they can't be generated on demand. But many systems contain a file + of suitable primes (usually named something like C{/etc/ssh/moduli}). + If you call C{load_server_moduli} and it returns C{True}, then this + file of primes has been loaded and we will support "group-exchange" in + server mode. Otherwise server mode will just claim that it doesn't + support that method of key negotiation. + + @param filename: optional path to the moduli file, if you happen to + know that it's not in a standard location. + @type filename: str + @return: True if a moduli file was successfully loaded; False + otherwise. + @rtype: bool + + @since: doduo + + @note: This has no effect when used in client mode. + """ + Transport._modulus_pack = ModulusPack(randpool) + # places to look for the openssh "moduli" file + file_list = [ '/etc/ssh/moduli', '/usr/local/etc/moduli' ] + if filename is not None: + file_list.insert(0, filename) + for fn in file_list: + try: + Transport._modulus_pack.read_file(fn) + return True + except IOError: + pass + # none succeeded + Transport._modulus_pack = None + return False + load_server_moduli = staticmethod(load_server_moduli) + + def close(self): + """ + Close this session, and any open channels that are tied to it. + """ + self.active = False + # since this may be called from __del__, can't assume any attributes exist + try: + self.packetizer.close() + for chan in self.channels.values(): + chan._unlink() + except AttributeError: + pass + + def get_remote_server_key(self): + """ + Return the host key of the server (in client mode). + + @note: Previously this call returned a tuple of (key type, key string). + You can get the same effect by calling + L{PKey.get_name <pkey.PKey.get_name>} for the key type, and + 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>} + """ + if (not self.active) or (not self.initial_kex_done): + raise SSHException('No existing session') + return self.host_key + + def is_active(self): + """ + Return true if this session is active (open). + + @return: True if the session is still active (open); False if the + session is closed. + @rtype: bool + """ + return self.active + + def open_session(self): + """ + Request a new channel to the server, of type C{"session"}. This + is just an alias for C{open_channel('session')}. + + @return: a new L{Channel} on success, or C{None} if the request is + rejected or the session ends prematurely. + @rtype: L{Channel} + """ + return self.open_channel('session') + + def open_channel(self, kind, dest_addr=None, src_addr=None): + """ + Request a new channel to the server. L{Channel}s are socket-like + objects used for the actual transfer of data across the session. + You may only request a channel after negotiating encryption (using + L{connect} or L{start_client}) and authenticating. + + @param kind: the kind of channel requested (usually C{"session"}, + C{"forwarded-tcpip"} or C{"direct-tcpip"}). + @type kind: str + @param dest_addr: the destination address of this port forwarding, + if C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"} (ignored + for other channel types). + @type dest_addr: (str, int) + @param src_addr: the source address of this port forwarding, if + C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"}. + @type src_addr: (str, int) + @return: a new L{Channel} on success, or C{None} if the request is + rejected or the session ends prematurely. + @rtype: L{Channel} + """ + chan = None + if not self.active: + # don't bother trying to allocate a channel + return None + self.lock.acquire() + try: + chanid = self.channel_counter + while self.channels.has_key(chanid): + self.channel_counter = (self.channel_counter + 1) & 0xffffff + chanid = self.channel_counter + self.channel_counter = (self.channel_counter + 1) & 0xffffff + m = Message() + m.add_byte(chr(MSG_CHANNEL_OPEN)) + m.add_string(kind) + m.add_int(chanid) + m.add_int(self.window_size) + m.add_int(self.max_packet_size) + if (kind == 'forwarded-tcpip') or (kind == 'direct-tcpip'): + m.add_string(dest_addr[0]) + m.add_int(dest_addr[1]) + m.add_string(src_addr[0]) + m.add_int(src_addr[1]) + self.channels[chanid] = chan = Channel(chanid) + self.channel_events[chanid] = event = threading.Event() + self.channels_seen[chanid] = True + chan._set_transport(self) + chan._set_window(self.window_size, self.max_packet_size) + finally: + self.lock.release() + self._send_user_message(m) + while 1: + event.wait(0.1); + if not self.active: + return None + if event.isSet(): + break + try: + self.lock.acquire() + if not self.channels.has_key(chanid): + chan = None + finally: + self.lock.release() + return chan + + def open_sftp_client(self): + """ + Create an SFTP client channel from an open transport. On success, + an SFTP session will be opened with the remote host, and a new + SFTPClient object will be returned. + + @return: a new L{SFTPClient} object, referring to an sftp session + (channel) across this transport + @rtype: L{SFTPClient} + """ + return SFTPClient.from_transport(self) + + def send_ignore(self, bytes=None): + """ + Send a junk packet across the encrypted link. This is sometimes used + to add "noise" to a connection to confuse would-be attackers. It can + also be used as a keep-alive for long lived connections traversing + firewalls. + + @param bytes: the number of random bytes to send in the payload of the + ignored packet -- defaults to a random number from 10 to 41. + @type bytes: int + + @since: fearow + """ + m = Message() + m.add_byte(chr(MSG_IGNORE)) + randpool.stir() + if bytes is None: + bytes = (ord(randpool.get_bytes(1)) % 32) + 10 + m.add_bytes(randpool.get_bytes(bytes)) + self._send_user_message(m) + + def renegotiate_keys(self): + """ + Force this session to switch to new keys. Normally this is done + automatically after the session hits a certain number of packets or + bytes sent or received, but this method gives you the option of forcing + new keys whenever you want. Negotiating new keys causes a pause in + traffic both ways as the two sides swap keys and do computations. This + method returns when the session has switched to new keys, or the + session has died mid-negotiation. + + @return: True if the renegotiation was successful, and the link is + using new keys; False if the session dropped during renegotiation. + @rtype: bool + """ + self.completion_event = threading.Event() + self._send_kex_init() + while 1: + self.completion_event.wait(0.1); + if not self.active: + return False + if self.completion_event.isSet(): + break + return True + + def set_keepalive(self, interval): + """ + Turn on/off keepalive packets (default is off). If this is set, after + 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 + + @since: fearow + """ + self.packetizer.set_keepalive(interval, + lambda x=self: x.global_request('keepalive@lag.net', wait=False)) + + def global_request(self, kind, data=None, wait=True): + """ + Make a global request to the remote host. These are normally + extensions to the SSH2 protocol. + + @param kind: name of the request. + @type kind: str + @param data: an optional tuple containing additional data to attach + to the request. + @type data: tuple + @param wait: C{True} if this method should not return until a response + is received; C{False} otherwise. + @type wait: bool + @return: a L{Message} containing possible additional data if the + request was successful (or an empty L{Message} if C{wait} was + C{False}); C{None} if the request was denied. + @rtype: L{Message} + + @since: fearow + """ + if wait: + self.completion_event = threading.Event() + m = Message() + m.add_byte(chr(MSG_GLOBAL_REQUEST)) + m.add_string(kind) + m.add_boolean(wait) + if data is not None: + m.add(*data) + self._log(DEBUG, 'Sending global request "%s"' % kind) + self._send_user_message(m) + if not wait: + return None + while True: + self.completion_event.wait(0.1) + if not self.active: + return None + if self.completion_event.isSet(): + break + return self.global_response + + def accept(self, timeout=None): + """ + 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 + @return: a new Channel opened by the client + @rtype: L{Channel} + """ + self.lock.acquire() + try: + if len(self.server_accepts) > 0: + chan = self.server_accepts.pop(0) + else: + self.server_accept_cv.wait(timeout) + if len(self.server_accepts) > 0: + chan = self.server_accepts.pop(0) + else: + # timeout + chan = None + finally: + self.lock.release() + return chan + + def connect(self, hostkey=None, username='', password=None, pkey=None): + """ + Negotiate an SSH2 session, and optionally verify the server's host key + and authenticate using a password or private key. This is a shortcut + for L{start_client}, L{get_remote_server_key}, and + L{Transport.auth_password} or L{Transport.auth_publickey}. Use those + methods if you want more control. + + You can use this method immediately after creating a Transport to + negotiate encryption with a server. If it fails, an exception will be + thrown. On success, the method will return cleanly, and an encrypted + session exists. You may immediately call L{open_channel} or + L{open_session} to get a L{Channel} object, which is used for data + transfer. + + @note: If you fail to supply a password or private key, this method may + succeed, but a subsequent L{open_channel} or L{open_session} call may + fail because you haven't authenticated yet. + + @param hostkey: the host key expected from the server, or C{None} if + you don't want to do host key verification. + @type hostkey: L{PKey<pkey.PKey>} + @param username: the username to authenticate as. + @type username: str + @param password: a password to use for authentication, if you want to + use password authentication; otherwise C{None}. + @type password: str + @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. + + @since: doduo + """ + if hostkey is not None: + self._preferred_keys = [ hostkey.get_name() ] + + self.start_client() + + # check host key if we were given one + if (hostkey is not None): + key = self.get_remote_server_key() + if (key.get_name() != hostkey.get_name()) or (str(key) != str(hostkey)): + self._log(DEBUG, 'Bad host key from server') + self._log(DEBUG, 'Expected: %s: %s' % (hostkey.get_name(), repr(str(hostkey)))) + self._log(DEBUG, 'Got : %s: %s' % (key.get_name(), repr(str(key)))) + raise SSHException('Bad host key from server') + self._log(DEBUG, 'Host key verified (%s)' % hostkey.get_name()) + + if (pkey is not None) or (password is not None): + if password is not None: + self._log(DEBUG, 'Attempting password auth...') + self.auth_password(username, password) + else: + self._log(DEBUG, 'Attempting public-key auth...') + 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() + try: + e = self.saved_exception + self.saved_exception = None + return e + finally: + self.lock.release() + + def set_subsystem_handler(self, name, handler, *larg, **kwarg): + """ + Set the handler class for a subsystem in server mode. If a request + for this subsystem is made on an open ssh channel later, this handler + will be constructed and called -- see L{SubsystemHandler} for more + detailed documentation. + + Any extra parameters (including keyword arguments) are saved and + passed to the L{SubsystemHandler} constructor later. + + @param name: name of the subsystem. + @type name: str + @param handler: subclass of L{SubsystemHandler} that handles this + subsystem. + @type handler: class + """ + try: + self.lock.acquire() + self.subsystem_table[name] = (handler, larg, kwarg) + finally: + self.lock.release() + + def is_authenticated(self): + """ + Return true if this session is active and authenticated. + + @return: True if the session is still open and has been authenticated + successfully; False if authentication failed and/or the session is + closed. + @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 + session is not authenticated (or authentication failed), this method + returns C{None}. + + @return: username that was authenticated, or C{None}. + @rtype: string + + @since: fearow + """ + if not self.active or (self.auth_handler is None): + return None + return self.auth_handler.get_username() + + def auth_none(self, username): + """ + Try to authenticate to the server using no authentication at all. + 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 + authentication (normally empty) + @rtype: list + + @raise BadAuthenticationType: if "none" authentication isn't allowed + 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): + raise SSHException('No existing session') + my_event = threading.Event() + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_none(username, my_event) + return self.auth_handler.wait_for_response(my_event) + + def auth_password(self, username, password, event=None, fallback=True): + """ + 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 + 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. + + 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 + will be made to authenticate using this interactive mode. If it fails, + the normal exception will be thrown as if the attempt had never been + 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: string + @param password: the password to authenticate with + @type password: string + @param event: an event to trigger when the authentication attempt is + complete (whether it was successful or not) + @type event: threading.Event + @param fallback: C{True} if an attempt at an automated "interactive" + password auth should be made if the server doesn't support normal + password auth + @type fallback: bool + @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 SSHException: if the authentication failed (and no event was + passed in) + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to send the password unless we're on a secure link + raise SSHException('No existing session') + if event is None: + my_event = threading.Event() + else: + my_event = event + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_password(username, password, my_event) + if event is not None: + # caller wants to wait for event themselves + return [] + try: + return self.auth_handler.wait_for_response(my_event) + except BadAuthenticationType, x: + # if password auth isn't allowed, but keyboard-interactive *is*, try to fudge it + if not fallback or not 'keyboard-interactive' in x.allowed_types: + raise + try: + def handler(title, instructions, fields): + if len(fields) > 1: + raise SSHException('Fallback authentication failed.') + if len(fields) == 0: + # for some reason, at least on os x, a 2nd request will + # be made with zero fields requested. maybe it's just + # to try to fake out automated scripting of the exact + # type we're doing here. *shrug* :) + return [] + return [ password ] + return self.auth_interactive(username, handler) + except SSHException, ignored: + # attempt failed; just raise the original exception + raise x + + def auth_publickey(self, username, key, event=None): + """ + 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. + + 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: string + @param key: the private key to authenticate with + @type key: L{PKey <pkey.PKey>} + @param event: an event to trigger when the authentication attempt is + complete (whether it was successful or not) + @type event: threading.Event + @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 SSHException: if the authentication failed (and no event was + passed in). + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to authenticate unless we're on a secure link + raise SSHException('No existing session') + if event is None: + my_event = threading.Event() + else: + my_event = event + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_publickey(username, key, my_event) + if event is not None: + # 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 + instructions (both are strings). C{prompt_list} will be a list of + 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. + + @param username: the username to authenticate as + @type username: string + @param handler: a handler for responding to server questions + @type handler: callable + @param submethods: a string list of desired submethods (optional) + @type submethods: str + @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 SSHException: if the authentication failed + + @since: 1.5 + """ + if (not self.active) or (not self.initial_kex_done): + # we should never try to authenticate unless we're on a secure link + raise SSHException('No existing session') + my_event = threading.Event() + self.auth_handler = AuthHandler(self) + self.auth_handler.auth_interactive(username, handler, my_event, submethods) + return self.auth_handler.wait_for_response(my_event) + + def set_log_channel(self, name): + """ + Set the channel for this transport's logging. The default is + C{"paramiko.transport"} but it can be set to anything you want. + (See the C{logging} module for more info.) SSH Channels will log + to a sub-channel of the one specified. + + @param name: new channel name for logging. + @type name: str + + @since: 1.1 + """ + self.log_name = name + self.logger = util.get_logger(name) + + def get_log_channel(self): + """ + Return the channel name used for this transport's logging. + + @return: channel name. + @rtype: str + + @since: 1.2 + """ + return self.log_name + + def set_hexdump(self, hexdump): + """ + Turn on/off logging a hex dump of protocol traffic at DEBUG level in + the logs. Normally you would want this off (which is the default), + but if you are debugging something, it may be useful. + + @param hexdump: C{True} to log protocol traffix (in hex) to the log; + C{False} otherwise. + @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 + and is not fully tested. + + @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 stop_thread(self): + self.active = False + self.packetizer.close() + + + ### internals... + + + def _log(self, level, msg): + if issubclass(type(msg), list): + for m in msg: + self.logger.log(level, m) + else: + self.logger.log(level, msg) + + def _get_modulus_pack(self): + "used by KexGex to find primes for group exchange" + return self._modulus_pack + + def _unlink_channel(self, chanid): + "used by a Channel to remove itself from the active channel list" + try: + self.lock.acquire() + if self.channels.has_key(chanid): + del self.channels[chanid] + finally: + self.lock.release() + + def _send_message(self, data): + self.packetizer.send_message(data) + + def _send_user_message(self, data): + """ + send a message, but block if we're in key negotiation. this is used + for user-initiated requests. + """ + while True: + self.clear_to_send.wait(0.1) + if not self.active: + self._log(DEBUG, 'Dropping user packet because connection is dead.') + return + self.clear_to_send_lock.acquire() + if self.clear_to_send.isSet(): + break + self.clear_to_send_lock.release() + try: + self._send_message(data) + finally: + self.clear_to_send_lock.release() + + def _set_K_H(self, k, h): + "used by a kex object to set the K (root key) and H (exchange hash)" + self.K = k + self.H = h + if self.session_id == None: + self.session_id = h + + def _expect_packet(self, type): + "used by a kex object to register the next packet type it expects to see" + self.expected_packet = type + + def _verify_key(self, host_key, sig): + key = self._key_info[self.host_key_type](Message(host_key)) + 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) + self.host_key = key + + def _compute_key(self, id, nbytes): + "id is 'A' - 'F' for the various keys used by ssh" + m = Message() + m.add_mpint(self.K) + m.add_bytes(self.H) + m.add_byte(id) + m.add_bytes(self.session_id) + out = sofar = SHA.new(str(m)).digest() + while len(out) < nbytes: + m = Message() + m.add_mpint(self.K) + m.add_bytes(self.H) + m.add_bytes(sofar) + hash = SHA.new(str(m)).digest() + out += hash + sofar += hash + return out[:nbytes] + + def _get_cipher(self, name, key, iv): + if not self._cipher_info.has_key(name): + raise SSHException('Unknown client cipher ' + name) + return self._cipher_info[name]['class'].new(key, self._cipher_info[name]['mode'], iv) + + 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.) + + # active=True occurs before the thread is launched, to avoid a race + _active_threads.append(self) + if self.server_mode: + self._log(DEBUG, 'starting thread (server mode): %s' % hex(long(id(self)) & 0xffffffffL)) + else: + self._log(DEBUG, 'starting thread (client mode): %s' % hex(long(id(self)) & 0xffffffffL)) + try: + self.packetizer.write_all(self.local_version + '\r\n') + self._check_banner() + self._send_kex_init() + self.expected_packet = MSG_KEXINIT + + while self.active: + if self.packetizer.need_rekey() and not self.in_kex: + self._send_kex_init() + try: + ptype, m = self.packetizer.read_message() + except NeedRekeyException: + continue + if ptype == MSG_IGNORE: + continue + elif ptype == MSG_DISCONNECT: + self._parse_disconnect(m) + self.active = False + self.packetizer.close() + break + elif ptype == MSG_DEBUG: + self._parse_debug(m) + continue + if self.expected_packet != 0: + if ptype != self.expected_packet: + raise SSHException('Expecting packet %d, got %d' % (self.expected_packet, ptype)) + self.expected_packet = 0 + if (ptype >= 30) and (ptype <= 39): + self.kex_engine.parse_next(ptype, m) + continue + + if self._handler_table.has_key(ptype): + self._handler_table[ptype](self, m) + elif self._channel_handler_table.has_key(ptype): + chanid = m.get_int() + if self.channels.has_key(chanid): + self._channel_handler_table[ptype](self.channels[chanid], m) + elif self.channels_seen.has_key(chanid): + self._log(DEBUG, 'Ignoring message for dead channel %d' % chanid) + else: + self._log(ERROR, 'Channel request for unknown channel %d' % chanid) + self.active = False + self.packetizer.close() + elif (self.auth_handler is not None) and self.auth_handler._handler_table.has_key(ptype): + self.auth_handler._handler_table[ptype](self.auth_handler, m) + else: + self._log(WARNING, 'Oops, unhandled type %d' % ptype) + msg = Message() + msg.add_byte(chr(MSG_UNIMPLEMENTED)) + msg.add_int(m.seqno) + self._send_message(msg) + except SSHException, e: + self._log(ERROR, 'Exception: ' + str(e)) + self._log(ERROR, util.tb_strings()) + self.saved_exception = e + except EOFError, e: + self._log(DEBUG, 'EOF in transport thread') + #self._log(DEBUG, util.tb_strings()) + self.saved_exception = e + except socket.error, e: + if type(e.args) is tuple: + emsg = '%s (%d)' % (e.args[1], e.args[0]) + else: + emsg = e.args + self._log(ERROR, 'Socket exception: ' + emsg) + self.saved_exception = e + except Exception, e: + self._log(ERROR, 'Unknown exception: ' + str(e)) + self._log(ERROR, util.tb_strings()) + self.saved_exception = e + _active_threads.remove(self) + for chan in self.channels.values(): + chan._unlink() + if self.active: + self.active = False + self.packetizer.close() + if self.completion_event != None: + self.completion_event.set() + if self.auth_handler is not None: + self.auth_handler.abort() + for event in self.channel_events.values(): + event.set() + self.sock.close() + + + ### protocol stages + + + def _negotiate_keys(self, m): + # throws SSHException on anything unusual + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.clear() + finally: + self.clear_to_send_lock.release() + if self.local_kex_init == None: + # remote side wants to renegotiate + self._send_kex_init() + self._parse_kex_init(m) + self.kex_engine.start_kex() + + def _check_banner(self): + # this is slow, but we only have to do it once + for i in range(5): + # give them 5 seconds for the first line, then just 2 seconds each additional line + if i == 0: + timeout = 5 + else: + timeout = 2 + try: + buffer = self.packetizer.readline(timeout) + except Exception, x: + raise SSHException('Error reading SSH protocol banner' + str(x)) + if buffer[:4] == 'SSH-': + break + self._log(DEBUG, 'Banner: ' + buffer) + if buffer[:4] != 'SSH-': + raise SSHException('Indecipherable protocol version "' + buffer + '"') + # save this server version string for later + self.remote_version = buffer + # pull off any attached comment + comment = '' + i = string.find(buffer, ' ') + if i >= 0: + comment = buffer[i+1:] + buffer = buffer[:i] + # parse out version string and make sure it matches + segs = buffer.split('-', 2) + if len(segs) < 3: + raise SSHException('Invalid SSH banner') + version = segs[1] + client = segs[2] + if version != '1.99' and version != '2.0': + raise SSHException('Incompatible version (%s instead of 2.0)' % (version,)) + self._log(INFO, 'Connected (version %s, client %s)' % (version, client)) + + def _send_kex_init(self): + """ + announce to the other side that we'd like to negotiate keys, and what + kind of key negotiation we support. + """ + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.clear() + finally: + self.clear_to_send_lock.release() + self.in_kex = True + if self.server_mode: + if (self._modulus_pack is None) and ('diffie-hellman-group-exchange-sha1' in self._preferred_kex): + # can't do group-exchange if we don't have a pack of potential primes + pkex = list(self.get_security_options().kex) + pkex.remove('diffie-hellman-group-exchange-sha1') + self.get_security_options().kex = pkex + available_server_keys = filter(self.server_key_dict.keys().__contains__, + self._preferred_keys) + else: + available_server_keys = self._preferred_keys + + randpool.stir() + m = Message() + m.add_byte(chr(MSG_KEXINIT)) + m.add_bytes(randpool.get_bytes(16)) + m.add_list(self._preferred_kex) + m.add_list(available_server_keys) + m.add_list(self._preferred_ciphers) + m.add_list(self._preferred_ciphers) + m.add_list(self._preferred_macs) + m.add_list(self._preferred_macs) + m.add_list(self._preferred_compression) + m.add_list(self._preferred_compression) + m.add_string('') + m.add_string('') + m.add_boolean(False) + m.add_int(0) + # save a copy for later (needed to compute a hash) + self.local_kex_init = str(m) + self._send_message(m) + + def _parse_kex_init(self, m): + cookie = m.get_bytes(16) + kex_algo_list = m.get_list() + server_key_algo_list = m.get_list() + client_encrypt_algo_list = m.get_list() + server_encrypt_algo_list = m.get_list() + client_mac_algo_list = m.get_list() + server_mac_algo_list = m.get_list() + client_compress_algo_list = m.get_list() + server_compress_algo_list = m.get_list() + client_lang_list = m.get_list() + server_lang_list = m.get_list() + kex_follows = m.get_boolean() + unused = m.get_int() + + self._log(DEBUG, 'kex algos:' + str(kex_algo_list) + ' server key:' + str(server_key_algo_list) + \ + ' client encrypt:' + str(client_encrypt_algo_list) + \ + ' server encrypt:' + str(server_encrypt_algo_list) + \ + ' client mac:' + str(client_mac_algo_list) + \ + ' server mac:' + str(server_mac_algo_list) + \ + ' client compress:' + str(client_compress_algo_list) + \ + ' server compress:' + str(server_compress_algo_list) + \ + ' client lang:' + str(client_lang_list) + \ + ' server lang:' + str(server_lang_list) + \ + ' kex follows?' + str(kex_follows)) + + # as a server, we pick the first item in the client's list that we support. + # as a client, we pick the first item in our list that the server supports. + if self.server_mode: + agreed_kex = filter(self._preferred_kex.__contains__, kex_algo_list) + else: + agreed_kex = filter(kex_algo_list.__contains__, self._preferred_kex) + if len(agreed_kex) == 0: + raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)') + self.kex_engine = self._kex_info[agreed_kex[0]](self) + + if self.server_mode: + available_server_keys = filter(self.server_key_dict.keys().__contains__, + self._preferred_keys) + agreed_keys = filter(available_server_keys.__contains__, server_key_algo_list) + else: + agreed_keys = filter(server_key_algo_list.__contains__, self._preferred_keys) + if len(agreed_keys) == 0: + raise SSHException('Incompatible ssh peer (no acceptable host key)') + self.host_key_type = agreed_keys[0] + if self.server_mode and (self.get_server_key() is None): + raise SSHException('Incompatible ssh peer (can\'t match requested host key type)') + + if self.server_mode: + agreed_local_ciphers = filter(self._preferred_ciphers.__contains__, + server_encrypt_algo_list) + agreed_remote_ciphers = filter(self._preferred_ciphers.__contains__, + client_encrypt_algo_list) + else: + agreed_local_ciphers = filter(client_encrypt_algo_list.__contains__, + self._preferred_ciphers) + agreed_remote_ciphers = filter(server_encrypt_algo_list.__contains__, + self._preferred_ciphers) + if (len(agreed_local_ciphers) == 0) or (len(agreed_remote_ciphers) == 0): + raise SSHException('Incompatible ssh server (no acceptable ciphers)') + self.local_cipher = agreed_local_ciphers[0] + self.remote_cipher = agreed_remote_ciphers[0] + self._log(DEBUG, 'Ciphers agreed: local=%s, remote=%s' % (self.local_cipher, self.remote_cipher)) + + if self.server_mode: + agreed_remote_macs = filter(self._preferred_macs.__contains__, client_mac_algo_list) + agreed_local_macs = filter(self._preferred_macs.__contains__, server_mac_algo_list) + else: + agreed_local_macs = filter(client_mac_algo_list.__contains__, self._preferred_macs) + agreed_remote_macs = filter(server_mac_algo_list.__contains__, self._preferred_macs) + if (len(agreed_local_macs) == 0) or (len(agreed_remote_macs) == 0): + raise SSHException('Incompatible ssh server (no acceptable macs)') + self.local_mac = agreed_local_macs[0] + self.remote_mac = agreed_remote_macs[0] + + if self.server_mode: + agreed_remote_compression = filter(self._preferred_compression.__contains__, client_compress_algo_list) + agreed_local_compression = filter(self._preferred_compression.__contains__, server_compress_algo_list) + else: + agreed_local_compression = filter(client_compress_algo_list.__contains__, self._preferred_compression) + agreed_remote_compression = filter(server_compress_algo_list.__contains__, self._preferred_compression) + if (len(agreed_local_compression) == 0) or (len(agreed_remote_compression) == 0): + raise SSHException('Incompatible ssh server (no acceptable compression) %r %r %r' % (agreed_local_compression, agreed_remote_compression, self._preferred_compression)) + self.local_compression = agreed_local_compression[0] + self.remote_compression = agreed_remote_compression[0] + + self._log(DEBUG, 'using kex %s; server key type %s; cipher: local %s, remote %s; mac: local %s, remote %s; compression: local %s, remote %s' % + (agreed_kex[0], self.host_key_type, self.local_cipher, self.remote_cipher, self.local_mac, + self.remote_mac, self.local_compression, self.remote_compression)) + + # save for computing hash later... + # now wait! openssh has a bug (and others might too) where there are + # actually some extra bytes (one NUL byte in openssh's case) added to + # the end of the packet but not parsed. turns out we need to throw + # away those bytes because they aren't part of the hash. + self.remote_kex_init = chr(MSG_KEXINIT) + m.get_so_far() + + def _activate_inbound(self): + "switch on newly negotiated encryption parameters for inbound traffic" + block_size = self._cipher_info[self.remote_cipher]['block-size'] + if self.server_mode: + IV_in = self._compute_key('A', block_size) + key_in = self._compute_key('C', self._cipher_info[self.remote_cipher]['key-size']) + else: + IV_in = self._compute_key('B', block_size) + key_in = self._compute_key('D', self._cipher_info[self.remote_cipher]['key-size']) + engine = self._get_cipher(self.remote_cipher, key_in, IV_in) + mac_size = self._mac_info[self.remote_mac]['size'] + mac_engine = self._mac_info[self.remote_mac]['class'] + # initial mac keys are done in the hash's natural size (not the potentially truncated + # transmission size) + if self.server_mode: + mac_key = self._compute_key('E', mac_engine.digest_size) + else: + mac_key = self._compute_key('F', mac_engine.digest_size) + self.packetizer.set_inbound_cipher(engine, block_size, mac_engine, mac_size, mac_key) + compress_in = self._compression_info[self.remote_compression][1] + if (compress_in is not None) and ((self.remote_compression != 'zlib@openssh.com') or self.authenticated): + self._log(DEBUG, 'Switching on inbound compression ...') + self.packetizer.set_inbound_compressor(compress_in()) + + def _activate_outbound(self): + "switch on newly negotiated encryption parameters for outbound traffic" + m = Message() + m.add_byte(chr(MSG_NEWKEYS)) + self._send_message(m) + block_size = self._cipher_info[self.local_cipher]['block-size'] + if self.server_mode: + IV_out = self._compute_key('B', block_size) + key_out = self._compute_key('D', self._cipher_info[self.local_cipher]['key-size']) + else: + IV_out = self._compute_key('A', block_size) + key_out = self._compute_key('C', self._cipher_info[self.local_cipher]['key-size']) + engine = self._get_cipher(self.local_cipher, key_out, IV_out) + mac_size = self._mac_info[self.local_mac]['size'] + mac_engine = self._mac_info[self.local_mac]['class'] + # initial mac keys are done in the hash's natural size (not the potentially truncated + # transmission size) + if self.server_mode: + mac_key = self._compute_key('F', mac_engine.digest_size) + else: + mac_key = self._compute_key('E', mac_engine.digest_size) + self.packetizer.set_outbound_cipher(engine, block_size, mac_engine, mac_size, mac_key) + compress_out = self._compression_info[self.local_compression][0] + if (compress_out is not None) and ((self.local_compression != 'zlib@openssh.com') or self.authenticated): + self._log(DEBUG, 'Switching on outbound compression ...') + self.packetizer.set_outbound_compressor(compress_out()) + if not self.packetizer.need_rekey(): + self.in_kex = False + # we always expect to receive NEWKEYS now + self.expected_packet = MSG_NEWKEYS + + def _auth_trigger(self): + self.authenticated = True + # delayed initiation of compression + if self.local_compression == 'zlib@openssh.com': + compress_out = self._compression_info[self.local_compression][0] + self._log(DEBUG, 'Switching on outbound compression ...') + self.packetizer.set_outbound_compressor(compress_out()) + if self.remote_compression == 'zlib@openssh.com': + compress_in = self._compression_info[self.remote_compression][1] + self._log(DEBUG, 'Switching on inbound compression ...') + self.packetizer.set_inbound_compressor(compress_in()) + + def _parse_newkeys(self, m): + self._log(DEBUG, 'Switch to new keys ...') + self._activate_inbound() + # can also free a bunch of stuff here + self.local_kex_init = self.remote_kex_init = None + self.K = None + self.kex_engine = None + if self.server_mode and (self.auth_handler is None): + # create auth handler for server mode + self.auth_handler = AuthHandler(self) + if not self.initial_kex_done: + # this was the first key exchange + self.initial_kex_done = True + # send an event? + if self.completion_event != None: + self.completion_event.set() + # it's now okay to send data again (if this was a re-key) + if not self.packetizer.need_rekey(): + self.in_kex = False + self.clear_to_send_lock.acquire() + try: + self.clear_to_send.set() + finally: + self.clear_to_send_lock.release() + return + + def _parse_disconnect(self, m): + code = m.get_int() + desc = m.get_string() + self._log(INFO, 'Disconnect (code %d): %s' % (code, desc)) + + def _parse_global_request(self, m): + kind = m.get_string() + self._log(DEBUG, 'Received global request "%s"' % kind) + want_reply = m.get_boolean() + ok = self.server_object.check_global_request(kind, m) + extra = () + if type(ok) is tuple: + extra = ok + ok = True + if want_reply: + msg = Message() + if ok: + msg.add_byte(chr(MSG_REQUEST_SUCCESS)) + msg.add(*extra) + else: + msg.add_byte(chr(MSG_REQUEST_FAILURE)) + self._send_message(msg) + + def _parse_request_success(self, m): + self._log(DEBUG, 'Global request successful.') + 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 + if self.completion_event is not None: + self.completion_event.set() + + def _parse_channel_open_success(self, m): + chanid = m.get_int() + server_chanid = m.get_int() + server_window_size = m.get_int() + server_max_packet_size = m.get_int() + if not self.channels.has_key(chanid): + self._log(WARNING, 'Success for unrequested channel! [??]') + return + self.lock.acquire() + try: + chan = self.channels[chanid] + chan._set_remote_channel(server_chanid, server_window_size, server_max_packet_size) + self._log(INFO, 'Secsh channel %d opened.' % chanid) + if self.channel_events.has_key(chanid): + self.channel_events[chanid].set() + del self.channel_events[chanid] + finally: + self.lock.release() + return + + def _parse_channel_open_failure(self, m): + chanid = m.get_int() + reason = m.get_int() + reason_str = m.get_string() + lang = m.get_string() + if CONNECTION_FAILED_CODE.has_key(reason): + reason_text = CONNECTION_FAILED_CODE[reason] + else: + reason_text = '(unknown code)' + self._log(INFO, 'Secsh channel %d open FAILED: %s: %s' % (chanid, reason_str, reason_text)) + try: + self.lock.aquire() + if self.channels.has_key(chanid): + del self.channels[chanid] + if self.channel_events.has_key(chanid): + self.channel_events[chanid].set() + del self.channel_events[chanid] + finally: + self.lock.release() + return + + def _parse_channel_open(self, m): + kind = m.get_string() + chanid = m.get_int() + initial_window_size = m.get_int() + max_packet_size = m.get_int() + reject = False + if not self.server_mode: + self._log(DEBUG, 'Rejecting "%s" channel request from server.' % kind) + reject = True + reason = OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + else: + self.lock.acquire() + try: + my_chanid = self.channel_counter + while self.channels.has_key(my_chanid): + self.channel_counter = (self.channel_counter + 1) & 0xffffff + my_chanid = self.channel_counter + self.channel_counter = (self.channel_counter + 1) & 0xffffff + finally: + self.lock.release() + reason = self.server_object.check_channel_request(kind, my_chanid) + if reason != OPEN_SUCCEEDED: + self._log(DEBUG, 'Rejecting "%s" channel request from client.' % kind) + reject = True + if reject: + msg = Message() + msg.add_byte(chr(MSG_CHANNEL_OPEN_FAILURE)) + msg.add_int(chanid) + msg.add_int(reason) + msg.add_string('') + msg.add_string('en') + self._send_message(msg) + return + chan = Channel(my_chanid) + try: + self.lock.acquire() + self.channels[my_chanid] = chan + self.channels_seen[my_chanid] = True + chan._set_transport(self) + chan._set_window(self.window_size, self.max_packet_size) + chan._set_remote_channel(chanid, initial_window_size, max_packet_size) + finally: + self.lock.release() + m = Message() + m.add_byte(chr(MSG_CHANNEL_OPEN_SUCCESS)) + m.add_int(chanid) + m.add_int(my_chanid) + m.add_int(self.window_size) + m.add_int(self.max_packet_size) + self._send_message(m) + self._log(INFO, 'Secsh channel %d opened.' % my_chanid) + try: + self.lock.acquire() + self.server_accepts.append(chan) + self.server_accept_cv.notify() + finally: + self.lock.release() + + def _parse_debug(self, m): + always_display = m.get_boolean() + msg = m.get_string() + lang = m.get_string() + self._log(DEBUG, 'Debug msg: ' + util.safe_string(msg)) + + def _get_subsystem_handler(self, name): + try: + self.lock.acquire() + if not self.subsystem_table.has_key(name): + return (None, [], {}) + return self.subsystem_table[name] + finally: + self.lock.release() + + _handler_table = { + MSG_NEWKEYS: _parse_newkeys, + MSG_GLOBAL_REQUEST: _parse_global_request, + MSG_REQUEST_SUCCESS: _parse_request_success, + MSG_REQUEST_FAILURE: _parse_request_failure, + MSG_CHANNEL_OPEN_SUCCESS: _parse_channel_open_success, + MSG_CHANNEL_OPEN_FAILURE: _parse_channel_open_failure, + MSG_CHANNEL_OPEN: _parse_channel_open, + MSG_KEXINIT: _negotiate_keys, + } + + _channel_handler_table = { + MSG_CHANNEL_SUCCESS: Channel._request_success, + MSG_CHANNEL_FAILURE: Channel._request_failed, + MSG_CHANNEL_DATA: Channel._feed, + MSG_CHANNEL_EXTENDED_DATA: Channel._feed_extended, + MSG_CHANNEL_WINDOW_ADJUST: Channel._window_adjust, + MSG_CHANNEL_REQUEST: Channel._handle_request, + MSG_CHANNEL_EOF: Channel._handle_eof, + MSG_CHANNEL_CLOSE: Channel._handle_close, + } diff --git a/paramiko/util.py b/paramiko/util.py new file mode 100644 index 0000000..abab825 --- /dev/null +++ b/paramiko/util.py @@ -0,0 +1,357 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Useful functions used by the rest of paramiko. +""" + +from __future__ import generators + +import fnmatch +import sys +import struct +import traceback +import threading + +from paramiko.common import * + + +# Change by RogerB - python < 2.3 doesn't have enumerate so we implement it +if sys.version_info < (2,3): + class enumerate: + def __init__ (self, sequence): + self.sequence = sequence + def __iter__ (self): + count = 0 + for item in self.sequence: + yield (count, item) + count += 1 + + +def inflate_long(s, always_positive=False): + "turns a normalized byte string into a long-int (adapted from Crypto.Util.number)" + out = 0L + negative = 0 + if not always_positive and (len(s) > 0) and (ord(s[0]) >= 0x80): + negative = 1 + if len(s) % 4: + filler = '\x00' + if negative: + filler = '\xff' + s = filler * (4 - len(s) % 4) + s + for i in range(0, len(s), 4): + out = (out << 32) + struct.unpack('>I', s[i:i+4])[0] + if negative: + out -= (1L << (8 * len(s))) + return out + +def deflate_long(n, add_sign_padding=True): + "turns a long-int into a normalized byte string (adapted from Crypto.Util.number)" + # after much testing, this algorithm was deemed to be the fastest + s = '' + n = long(n) + while (n != 0) and (n != -1): + s = struct.pack('>I', n & 0xffffffffL) + s + n = n >> 32 + # strip off leading zeros, FFs + for i in enumerate(s): + if (n == 0) and (i[1] != '\000'): + break + if (n == -1) and (i[1] != '\xff'): + break + else: + # degenerate case, n was either 0 or -1 + i = (0,) + if n == 0: + s = '\000' + else: + s = '\xff' + s = s[i[0]:] + if add_sign_padding: + if (n == 0) and (ord(s[0]) >= 0x80): + s = '\x00' + s + if (n == -1) and (ord(s[0]) < 0x80): + s = '\xff' + s + return s + +def format_binary_weird(data): + out = '' + for i in enumerate(data): + out += '%02X' % ord(i[1]) + if i[0] % 2: + out += ' ' + if i[0] % 16 == 15: + out += '\n' + return out + +def format_binary(data, prefix=''): + x = 0 + out = [] + while len(data) > x + 16: + out.append(format_binary_line(data[x:x+16])) + x += 16 + if x < len(data): + out.append(format_binary_line(data[x:])) + return [prefix + x for x in out] + +def format_binary_line(data): + left = ' '.join(['%02X' % ord(c) for c in data]) + right = ''.join([('.%c..' % c)[(ord(c)+63)//95] for c in data]) + return '%-50s %s' % (left, right) + +def hexify(s): + "turn a string into a hex sequence" + return ''.join(['%02X' % ord(c) for c in s]) + +def unhexify(s): + "turn a hex sequence back into a string" + return ''.join([chr(int(s[i:i+2], 16)) for i in range(0, len(s), 2)]) + +def safe_string(s): + out = '' + for c in s: + if (ord(c) >= 32) and (ord(c) <= 127): + out += c + else: + out += '%%%02X' % ord(c) + return out + +# ''.join([['%%%02X' % ord(c), c][(ord(c) >= 32) and (ord(c) <= 127)] for c in s]) + +def bit_length(n): + norm = deflate_long(n, 0) + hbyte = ord(norm[0]) + bitlen = len(norm) * 8 + while not (hbyte & 0x80): + hbyte <<= 1 + bitlen -= 1 + return bitlen + +def tb_strings(): + return ''.join(traceback.format_exception(*sys.exc_info())).split('\n') + +def generate_key_bytes(hashclass, salt, key, nbytes): + """ + Given a password, passphrase, or other human-source key, scramble it + through a secure hash into some keyworthy bytes. This specific algorithm + is used for encrypting/decrypting private key files. + + @param hashclass: class from L{Crypto.Hash} that can be used as a secure + hashing function (like C{MD5} or C{SHA}). + @type hashclass: L{Crypto.Hash} + @param salt: data to salt the hash with. + @type salt: string + @param key: human-entered password or passphrase. + @type key: string + @param nbytes: number of bytes to generate. + @type nbytes: int + @return: key data + @rtype: string + """ + keydata = '' + digest = '' + if len(salt) > 8: + salt = salt[:8] + while nbytes > 0: + hash = hashclass.new() + if len(digest) > 0: + hash.update(digest) + hash.update(key) + hash.update(salt) + digest = hash.digest() + size = min(nbytes, len(digest)) + keydata += digest[:size] + nbytes -= size + return keydata + +def load_host_keys(filename): + """ + Read a file of known SSH host keys, in the format used by openssh, and + 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")}. + + @param filename: name of the file to read host keys from + @type filename: str + @return: dict of host keys, indexed by hostname and then keytype + @rtype: dict(hostname, dict(keytype, L{PKey <paramiko.pkey.PKey>})) + """ + import base64 + from rsakey import RSAKey + from dsskey import DSSKey + + keys = {} + f = file(filename, 'r') + for line in f: + line = line.strip() + if (len(line) == 0) or (line[0] == '#'): + continue + keylist = line.split(' ') + if len(keylist) != 3: + continue + hostlist, keytype, key = keylist + hosts = hostlist.split(',') + for host in hosts: + if not keys.has_key(host): + keys[host] = {} + if keytype == 'ssh-rsa': + keys[host][keytype] = RSAKey(data=base64.decodestring(key)) + elif keytype == 'ssh-dss': + keys[host][keytype] = DSSKey(data=base64.decodestring(key)) + f.close() + return keys + +def parse_ssh_config(file_obj): + """ + Parse a config file of the format used by OpenSSH, and return an object + that can be used to make queries to L{lookup_ssh_host_config}. The + format is described in OpenSSH's C{ssh_config} man page. This method 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. + + The return value is currently a list of dictionaries, each containing + host-specific configuration, but this is considered an implementation + detail and may be subject to change in later versions. + + @param file_obj: a file-like object to read the config file from + @type file_obj: file + @return: opaque configuration object + @rtype: object + """ + ret = [] + config = { 'host': '*' } + ret.append(config) + + for line in file_obj: + line = line.rstrip('\n').lstrip() + if (line == '') or (line[0] == '#'): + continue + if '=' in line: + key, value = line.split('=', 1) + key = key.strip().lower() + else: + # find first whitespace, and split there + i = 0 + while (i < len(line)) and not line[i].isspace(): + i += 1 + if i == len(line): + raise Exception('Unparsable line: %r' % line) + key = line[:i].lower() + value = line[i:].lstrip() + + if key == 'host': + # do we have a pre-existing host config to append to? + matches = [c for c in ret if c['host'] == value] + if len(matches) > 0: + config = matches[0] + else: + config = { 'host': value } + ret.append(config) + else: + config[key] = value + + return ret + +def lookup_ssh_host_config(hostname, config): + """ + Return a dict of config options for a given hostname. The C{config} object + must come from L{parse_ssh_config}. + + 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 *"} 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 + values. + + @param hostname: the hostname to lookup + @type hostname: str + @param config: the config object to search + @type config: object + """ + matches = [x for x in config if fnmatch.fnmatch(hostname, x['host'])] + # sort in order of shortest match (usually '*') to longest + matches.sort(key=lambda x: len(x['host'])) + ret = {} + for m in matches: + ret.update(m) + del ret['host'] + return ret + +def mod_inverse(x, m): + # it's crazy how small python can make this function. + u1, u2, u3 = 1, 0, m + v1, v2, v3 = 0, 1, x + + while v3 > 0: + q = u3 // v3 + u1, v1 = v1, u1 - v1 * q + u2, v2 = v2, u2 - v2 * q + u3, v3 = v3, u3 - v3 * q + if u2 < 0: + u2 += m + return u2 + +_g_thread_ids = {} +_g_thread_counter = 0 +_g_thread_lock = threading.Lock() +def get_thread_id(): + global _g_thread_ids, _g_thread_counter, _g_thread_lock + tid = id(threading.currentThread()) + try: + return _g_thread_ids[tid] + except KeyError: + _g_thread_lock.acquire() + try: + _g_thread_counter += 1 + ret = _g_thread_ids[tid] = _g_thread_counter + finally: + _g_thread_lock.release() + return ret + +def log_to_file(filename, level=DEBUG): + "send paramiko logs to a logfile, if they're not already going somewhere" + l = logging.getLogger("paramiko") + if len(l.handlers) > 0: + return + l.setLevel(level) + f = open(filename, 'w') + lh = logging.StreamHandler(f) + lh.setFormatter(logging.Formatter('%(levelname)-.3s [%(asctime)s.%(msecs)03d] thr=%(_threadid)-3d %(name)s: %(message)s', + '%Y%m%d-%H:%M:%S')) + l.addHandler(lh) + +# make only one filter object, so it doesn't get applied more than once +class PFilter (object): + def filter(self, record): + record._threadid = get_thread_id() + return True +_pfilter = PFilter() + +def get_logger(name): + l = logging.getLogger(name) + l.addFilter(_pfilter) + return l diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..ce7d047 --- /dev/null +++ b/setup.py @@ -0,0 +1,49 @@ +from distutils.core import setup + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + + +longdesc = ''' +This is a library for making SSH2 connections (client or server). +Emphasis is on using SSH2 as an alternative to SSL for making secure +connections between python scripts. All major ciphers and hash methods +are supported. SFTP client and server mode are both supported too. + +Required packages: + pyCrypt +''' + +setup(name = "paramiko", + version = "1.5.2", + description = "SSH2 protocol library", + author = "Robey Pointer", + author_email = "robey@lag.net", + url = "http://www.lag.net/paramiko/", + packages = [ 'paramiko' ], + download_url = 'http://www.lag.net/paramiko/download/paramiko-1.5.2.zip', + license = 'LGPL', + platforms = 'Posix; MacOS X; Windows', + classifiers = [ 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', + 'Operating System :: OS Independent', + 'Topic :: Internet', + 'Topic :: Security :: Cryptography' ], + long_description = longdesc, + ) @@ -0,0 +1,103 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +do the unit tests! +""" + +import sys, os, unittest +from optparse import OptionParser +import paramiko + +sys.path.append('tests/') + +from test_message import MessageTest +from test_file import BufferedFileTest +from test_util import UtilTest +from test_pkey import KeyTest +from test_kex import KexTest +from test_packetizer import PacketizerTest +from test_transport import TransportTest +from test_sftp import SFTPTest + +default_host = 'localhost' +default_user = os.environ.get('USER', 'nobody') +default_keyfile = os.path.join(os.environ.get('HOME', '/'), '.ssh/id_rsa') +default_passwd = None + +parser = OptionParser('usage: %prog [options]') +parser.add_option('--verbose', action='store_true', dest='verbose', default=False, + help='verbose display (one line per test)') +parser.add_option('--no-pkey', action='store_false', dest='use_pkey', default=True, + help='skip RSA/DSS private key tests (which can take a while)') +parser.add_option('--no-transport', action='store_false', dest='use_transport', default=True, + help='skip transport tests (which can take a while)') +parser.add_option('--no-sftp', action='store_false', dest='use_sftp', default=True, + help='skip SFTP client/server tests, which can be slow') +parser.add_option('--no-big-file', action='store_false', dest='use_big_file', default=True, + help='skip big file SFTP tests, which are slow as molasses') +parser.add_option('-R', action='store_false', dest='use_loopback_sftp', default=True, + help='perform SFTP tests against a remote server (by default, SFTP tests ' + + 'are done through a loopback socket)') +parser.add_option('-H', '--sftp-host', dest='hostname', type='string', default=default_host, + metavar='<host>', + help='[with -R] host for remote sftp tests (default: %s)' % default_host) +parser.add_option('-U', '--sftp-user', dest='username', type='string', default=default_user, + metavar='<username>', + help='[with -R] username for remote sftp tests (default: %s)' % default_user) +parser.add_option('-K', '--sftp-key', dest='keyfile', type='string', default=default_keyfile, + metavar='<keyfile>', + help='[with -R] location of private key for remote sftp tests (default: %s)' % + default_keyfile) +parser.add_option('-P', '--sftp-passwd', dest='password', type='string', default=default_passwd, + metavar='<password>', + help='[with -R] (optional) password to unlock the private key for remote sftp tests') + +options, args = parser.parse_args() +if len(args) > 0: + parser.error('unknown argument(s)') + +# setup logging +paramiko.util.log_to_file('test.log') + +if options.use_sftp: + if options.use_loopback_sftp: + SFTPTest.init_loopback() + else: + SFTPTest.init(options.hostname, options.username, options.keyfile, options.password) + if not options.use_big_file: + SFTPTest.set_big_file_test(False) + +suite = unittest.TestSuite() +suite.addTest(unittest.makeSuite(MessageTest)) +suite.addTest(unittest.makeSuite(BufferedFileTest)) +suite.addTest(unittest.makeSuite(UtilTest)) +if options.use_pkey: + suite.addTest(unittest.makeSuite(KeyTest)) +suite.addTest(unittest.makeSuite(KexTest)) +suite.addTest(unittest.makeSuite(PacketizerTest)) +if options.use_transport: + suite.addTest(unittest.makeSuite(TransportTest)) +if options.use_sftp: + suite.addTest(unittest.makeSuite(SFTPTest)) +verbosity = 1 +if options.verbose: + verbosity = 2 +unittest.TextTestRunner(verbosity=verbosity).run(suite) diff --git a/tests/loop.py b/tests/loop.py new file mode 100644 index 0000000..ad5f7ca --- /dev/null +++ b/tests/loop.py @@ -0,0 +1,104 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +... +""" + +import threading, socket + + +class LoopSocket (object): + """ + A LoopSocket looks like a normal socket, but all data written to it is + delivered on the read-end of another LoopSocket, and vice versa. It's + like a software "socketpair". + """ + + def __init__(self): + self.__in_buffer = '' + self.__lock = threading.Lock() + self.__cv = threading.Condition(self.__lock) + self.__timeout = None + self.__mate = None + + def close(self): + self.__unlink() + try: + self.__lock.acquire() + self.__in_buffer = '' + finally: + self.__lock.release() + + def send(self, data): + if self.__mate is None: + # EOF + raise EOFError() + self.__mate.__feed(data) + return len(data) + + def recv(self, n): + self.__lock.acquire() + try: + if self.__mate is None: + # EOF + return '' + if len(self.__in_buffer) == 0: + self.__cv.wait(self.__timeout) + if len(self.__in_buffer) == 0: + raise socket.timeout + if n < self.__in_buffer: + out = self.__in_buffer[:n] + self.__in_buffer = self.__in_buffer[n:] + else: + out = self.__in_buffer + self.__in_buffer = '' + return out + finally: + self.__lock.release() + + def settimeout(self, n): + self.__timeout = n + + def link(self, other): + self.__mate = other + self.__mate.__mate = self + + def __feed(self, data): + self.__lock.acquire() + try: + self.__in_buffer += data + self.__cv.notifyAll() + finally: + self.__lock.release() + + def __unlink(self): + m = None + self.__lock.acquire() + try: + if self.__mate is not None: + m = self.__mate + self.__mate = None + finally: + self.__lock.release() + if m is not None: + m.__unlink() + + diff --git a/tests/stub_sftp.py b/tests/stub_sftp.py new file mode 100644 index 0000000..4b8b9c3 --- /dev/null +++ b/tests/stub_sftp.py @@ -0,0 +1,192 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +A stub SFTP server for loopback SFTP testing. +""" + +import os +from paramiko import ServerInterface, SFTPServerInterface, SFTPServer, SFTPAttributes, \ + SFTPHandle, SFTP_OK, AUTH_SUCCESSFUL, OPEN_SUCCEEDED + + +class StubServer (ServerInterface): + def check_auth_password(self, username, password): + # all are allowed + return AUTH_SUCCESSFUL + + def check_channel_request(self, kind, chanid): + return OPEN_SUCCEEDED + + +class StubSFTPHandle (SFTPHandle): + def stat(self): + try: + return SFTPAttributes.from_stat(os.fstat(self.readfile.fileno())) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + + def chattr(self, attr): + # python doesn't have equivalents to fchown or fchmod, so we have to + # use the stored filename + try: + SFTPServer.set_file_attr(self.filename, attr) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + + +class StubSFTPServer (SFTPServerInterface): + # assume current folder is a fine root + # (the tests always create and eventualy delete a subfolder, so there shouldn't be any mess) + ROOT = os.getcwd() + + def _realpath(self, path): + return self.ROOT + self.canonicalize(path) + + def list_folder(self, path): + path = self._realpath(path) + try: + out = [ ] + flist = os.listdir(path) + for fname in flist: + attr = SFTPAttributes.from_stat(os.stat(os.path.join(path, fname))) + attr.filename = fname + out.append(attr) + return out + except OSError, e: + return SFTPServer.convert_errno(e.errno) + + def stat(self, path): + path = self._realpath(path) + try: + return SFTPAttributes.from_stat(os.stat(path)) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + + def lstat(self, path): + path = self._realpath(path) + try: + return SFTPAttributes.from_stat(os.lstat(path)) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + + def open(self, path, flags, attr): + path = self._realpath(path) + try: + fd = os.open(path, flags) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + if (flags & os.O_CREAT) and (attr is not None): + SFTPServer.set_file_attr(path, attr) + if flags & os.O_WRONLY: + fstr = 'w' + elif flags & os.O_RDWR: + fstr = 'r+' + else: + # O_RDONLY (== 0) + fstr = 'r' + try: + f = os.fdopen(fd, fstr) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + fobj = StubSFTPHandle() + fobj.filename = path + fobj.readfile = f + fobj.writefile = f + return fobj + + def remove(self, path): + path = self._realpath(path) + try: + os.remove(path) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def rename(self, oldpath, newpath): + oldpath = self._realpath(oldpath) + newpath = self._realpath(newpath) + try: + os.rename(oldpath, newpath) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def mkdir(self, path, attr): + path = self._realpath(path) + try: + os.mkdir(path) + if attr is not None: + SFTPServer.set_file_attr(path, attr) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def rmdir(self, path): + path = self._realpath(path) + try: + os.rmdir(path) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def chattr(self, path, attr): + path = self._realpath(path) + try: + SFTPServer.set_file_attr(path, attr) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def symlink(self, target_path, path): + path = self._realpath(path) + if (len(target_path) > 0) and (target_path[0] == '/'): + # absolute symlink + target_path = os.path.join(self.ROOT, target_path[1:]) + if target_path[:2] == '//': + # bug in os.path.join + target_path = target_path[1:] + else: + # compute relative to path + abspath = os.path.join(os.path.dirname(path), target_path) + if abspath[:len(self.ROOT)] != self.ROOT: + # this symlink isn't going to work anyway -- just break it immediately + target_path = '<error>' + try: + os.symlink(target_path, path) + except: + return SFTPServer.convert_errno(e.errno) + return SFTP_OK + + def readlink(self, path): + path = self._realpath(path) + try: + symlink = os.readlink(path) + except OSError, e: + return SFTPServer.convert_errno(e.errno) + # if it's absolute, remove the root + if os.path.isabs(symlink): + if symlink[:len(self.ROOT)] == self.ROOT: + symlink = symlink[len(self.ROOT):] + if (len(symlink) == 0) or (symlink[0] != '/'): + symlink = '/' + symlink + else: + symlink = '<error>' + return symlink diff --git a/tests/test_dss.key b/tests/test_dss.key new file mode 100644 index 0000000..e10807f --- /dev/null +++ b/tests/test_dss.key @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBuwIBAAKBgQDngaYDZ30c6/7cJgEEbtl8FgKdwhba1Z7oOrOn4MI/6C42G1bY +wMuqZf4dBCglsdq39SHrcjbE8Vq54gPSOh3g4+uV9Rcg5IOoPLbwp2jQfF6f1FIb +sx7hrDCIqUcQccPSxetPBKmXI9RN8rZLaFuQeTnI65BKM98Ruwvq6SI2LwIVAPDP +hSeawaJI27mKqOfe5PPBSmyHAoGBAJMXxXmPD9sGaQ419DIpmZecJKBUAy9uXD8x +gbgeDpwfDaFJP8owByCKREocPFfi86LjCuQkyUKOfjYMN6iHIf1oEZjB8uJAatUr +FzI0ArXtUqOhwTLwTyFuUojE5own2WYsOAGByvgfyWjsGhvckYNhI4ODpNdPlxQ8 +ZamaPGPsAoGARmR7CCPjodxASvRbIyzaVpZoJ/Z6x7dAumV+ysrV1BVYd0lYukmn +jO1kKBWApqpH1ve9XDQYN8zgxM4b16L21kpoWQnZtXrY3GZ4/it9kUgyB7+NwacI +BlXa8cMDL7Q/69o0d54U0X/NeX5QxuYR6OMJlrkQB7oiW/P/1mwjQgECFGI9QPSc +h9pT9XHqn+1rZ4bK+QGA +-----END DSA PRIVATE KEY----- diff --git a/tests/test_dss_password.key b/tests/test_dss_password.key new file mode 100644 index 0000000..e2a9bc5 --- /dev/null +++ b/tests/test_dss_password.key @@ -0,0 +1,15 @@ +-----BEGIN DSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,78DAEB836ED0A646 + +ldWkq9OMlXqWmjIqppNnmNPIUj5uVT12LkBosTApTbibTme3kIJb1uDeG2BShVfY ++vDOTUE9koGPDLsxW1t5At+EVyIDK8aIO0uHteXM5AbBX20LLUWRbRVqZhsMxqQh +3H3XlHiN+QhaWcb4fFuu18a8SkimTFpDnZuffoCDl/zh/B7XieARTLA805K/ZgVB +BBwflkR2BE053XHrJAIx9BEUlLP76Fo18rvjLZOSeu3s+VnnhqUb5FCt5h50a46u +YXQBbo2r9Zo1ilGMNEXJO0gk5hwGVmTySz53NkPA5HmWt8NIzv5jQHMDy7N+ZykF +uwpP1R5M/ZIFY4Y5h/lvn6IJjQ7VySRPIbpN8o2YJv2OD1Ja80n3tU8Mg77o3o4d +NwKm7cCjlq+FuIBdOsSgsB8FPQRUhW+jpFDxmWN64DM2cEg6RUdptby7WmMp0HwK +1qyEfxHjLMuDVlD7lASIDBrRlUjPtXEH1DzIYQuYaRZaixFoZ7EY+X73TwmrKFEU +US9ZnQZtRtroRqGwR4fz4wQQsjTl/AmOijlBmi29taJccJsT/THrLQ5plOEd8OMv +9FsaPJXBU85gaRKo3JZtrw== +-----END DSA PRIVATE KEY----- diff --git a/tests/test_file.py b/tests/test_file.py new file mode 100644 index 0000000..250821c --- /dev/null +++ b/tests/test_file.py @@ -0,0 +1,153 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for the BufferedFile abstraction. +""" + +import unittest +from paramiko.file import BufferedFile + + +class LoopbackFile (BufferedFile): + """ + BufferedFile object that you can write data into, and then read it back. + """ + def __init__(self, mode='r', bufsize=-1): + BufferedFile.__init__(self) + self._set_mode(mode, bufsize) + self.buffer = '' + + def _read(self, size): + if len(self.buffer) == 0: + return None + if size > len(self.buffer): + size = len(self.buffer) + data = self.buffer[:size] + self.buffer = self.buffer[size:] + return data + + def _write(self, data): + self.buffer += data + return len(data) + + +class BufferedFileTest (unittest.TestCase): + + def test_1_simple(self): + f = LoopbackFile('r') + try: + f.write('hi') + self.assert_(False, 'no exception on write to read-only file') + except: + pass + f.close() + + f = LoopbackFile('w') + try: + f.read(1) + self.assert_(False, 'no exception to read from write-only file') + except: + pass + f.close() + + def test_2_readline(self): + f = LoopbackFile('r+U') + f.write('First line.\nSecond line.\r\nThird line.\nFinal line non-terminated.') + self.assertEqual(f.readline(), 'First line.\n') + # universal newline mode should convert this linefeed: + self.assertEqual(f.readline(), 'Second line.\n') + # truncated line: + self.assertEqual(f.readline(7), 'Third l') + self.assertEqual(f.readline(), 'ine.\n') + self.assertEqual(f.readline(), 'Final line non-terminated.') + self.assertEqual(f.readline(), '') + f.close() + try: + f.readline() + self.assert_(False, 'no exception on readline of closed file') + except IOError: + pass + self.assert_('\n' in f.newlines) + self.assert_('\r\n' in f.newlines) + self.assert_('\r' not in f.newlines) + + def test_3_lf(self): + """ + try to trick the linefeed detector. + """ + f = LoopbackFile('r+U') + f.write('First line.\r') + self.assertEqual(f.readline(), 'First line.\n') + f.write('\nSecond.\r\n') + self.assertEqual(f.readline(), 'Second.\n') + f.close() + self.assertEqual(f.newlines, '\r\n') + + def test_4_write(self): + """ + verify that write buffering is on. + """ + f = LoopbackFile('r+', 1) + f.write('Complete line.\nIncomplete line.') + self.assertEqual(f.readline(), 'Complete line.\n') + self.assertEqual(f.readline(), '') + f.write('..\n') + self.assertEqual(f.readline(), 'Incomplete line...\n') + f.close() + + def test_5_flush(self): + """ + verify that flush will force a write. + """ + f = LoopbackFile('r+', 512) + f.write('Not\nquite\n512 bytes.\n') + self.assertEqual(f.read(1), '') + f.flush() + self.assertEqual(f.read(5), 'Not\nq') + self.assertEqual(f.read(10), 'uite\n512 b') + self.assertEqual(f.read(9), 'ytes.\n') + self.assertEqual(f.read(3), '') + f.close() + + def test_6_buffering(self): + """ + verify that flushing happens automatically on buffer crossing. + """ + f = LoopbackFile('r+', 16) + f.write('Too small.') + self.assertEqual(f.read(4), '') + f.write(' ') + self.assertEqual(f.read(4), '') + f.write('Enough.') + self.assertEqual(f.read(20), 'Too small. Enough.') + f.close() + + def test_7_read_all(self): + """ + verify that read(-1) returns everything left in the file. + """ + f = LoopbackFile('r+', 16) + f.write('The first thing you need to do is open your eyes. ') + f.write('Then, you need to close them again.\n') + s = f.read(-1) + self.assertEqual(s, 'The first thing you need to do is open your eyes. Then, you ' + + 'need to close them again.\n') + f.close() diff --git a/tests/test_kex.py b/tests/test_kex.py new file mode 100644 index 0000000..2680853 --- /dev/null +++ b/tests/test_kex.py @@ -0,0 +1,183 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for the key exchange protocols. +""" + +import unittest +import paramiko.util +from paramiko.kex_group1 import KexGroup1 +from paramiko.kex_gex import KexGex +from paramiko import Message + + +class FakeRandpool (object): + def stir(self): + pass + def get_bytes(self, n): + return chr(0xcc) * n + +class FakeKey (object): + def __str__(self): + return 'fake-key' + def sign_ssh_data(self, randpool, H): + return 'fake-sig' + +class FakeModulusPack (object): + P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL + G = 2 + def get_modulus(self, min, ask, max): + return self.G, self.P + +class FakeTransport (object): + randpool = FakeRandpool() + local_version = 'SSH-2.0-paramiko_1.0' + remote_version = 'SSH-2.0-lame' + local_kex_init = 'local-kex-init' + remote_kex_init = 'remote-kex-init' + + def _send_message(self, m): + self._message = m + def _expect_packet(self, t): + self._expect = t + def _set_K_H(self, K, H): + self._K = K + self._H = H + def _verify_key(self, host_key, sig): + self._verify = (host_key, sig) + def _activate_outbound(self): + self._activated = True + def _log(self, level, s): + pass + def get_server_key(self): + return FakeKey() + def _get_modulus_pack(self): + return FakeModulusPack() + + +class KexTest (unittest.TestCase): + + K = 14730343317708716439807310032871972459448364195094179797249681733965528989482751523943515690110179031004049109375612685505881911274101441415545039654102474376472240501616988799699744135291070488314748284283496055223852115360852283821334858541043710301057312858051901453919067023103730011648890038847384890504L + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_1_group1_client(self): + transport = FakeTransport() + transport.server_mode = False + kex = KexGroup1(transport) + kex.start_kex() + x = '1E000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D4' + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assertEquals(paramiko.kex_group1._MSG_KEXDH_REPLY, transport._expect) + + # fake "reply" + msg = Message() + msg.add_string('fake-host-key') + msg.add_mpint(69) + msg.add_string('fake-sig') + msg.rewind() + kex.parse_next(paramiko.kex_group1._MSG_KEXDH_REPLY, msg) + H = '03079780F3D3AD0B3C6DB30C8D21685F367A86D2' + self.assertEquals(self.K, transport._K) + self.assertEquals(H, paramiko.util.hexify(transport._H)) + self.assertEquals(('fake-host-key', 'fake-sig'), transport._verify) + self.assert_(transport._activated) + + def test_2_group1_server(self): + transport = FakeTransport() + transport.server_mode = True + kex = KexGroup1(transport) + kex.start_kex() + self.assertEquals(paramiko.kex_group1._MSG_KEXDH_INIT, transport._expect) + + msg = Message() + msg.add_mpint(69) + msg.rewind() + kex.parse_next(paramiko.kex_group1._MSG_KEXDH_INIT, msg) + H = 'B16BF34DD10945EDE84E9C1EF24A14BFDC843389' + x = '1F0000000866616B652D6B6579000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D40000000866616B652D736967' + self.assertEquals(self.K, transport._K) + self.assertEquals(H, paramiko.util.hexify(transport._H)) + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assert_(transport._activated) + + def test_3_gex_client(self): + transport = FakeTransport() + transport.server_mode = False + kex = KexGex(transport) + kex.start_kex() + x = '22000004000000080000002000' + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_GROUP, transport._expect) + + msg = Message() + msg.add_mpint(FakeModulusPack.P) + msg.add_mpint(FakeModulusPack.G) + msg.rewind() + kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_GROUP, msg) + x = '20000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D4' + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_REPLY, transport._expect) + + msg = Message() + msg.add_string('fake-host-key') + msg.add_mpint(69) + msg.add_string('fake-sig') + msg.rewind() + kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_REPLY, msg) + H = 'A265563F2FA87F1A89BF007EE90D58BE2E4A4BD0' + self.assertEquals(self.K, transport._K) + self.assertEquals(H, paramiko.util.hexify(transport._H)) + self.assertEquals(('fake-host-key', 'fake-sig'), transport._verify) + self.assert_(transport._activated) + + def test_4_gex_server(self): + transport = FakeTransport() + transport.server_mode = True + kex = KexGex(transport) + kex.start_kex() + self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST, transport._expect) + + msg = Message() + msg.add_int(1024) + msg.add_int(2048) + msg.add_int(4096) + msg.rewind() + kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST, msg) + x = '1F0000008100FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF0000000102' + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_INIT, transport._expect) + + msg = Message() + msg.add_mpint(12345) + msg.rewind() + kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_INIT, msg) + K = 67592995013596137876033460028393339951879041140378510871612128162185209509220726296697886624612526735888348020498716482757677848959420073720160491114319163078862905400020959196386947926388406687288901564192071077389283980347784184487280885335302632305026248574716290537036069329724382811853044654824945750581L + H = 'CE754197C21BF3452863B4F44D0B3951F12516EF' + x = '210000000866616B652D6B6579000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D40000000866616B652D736967' + self.assertEquals(K, transport._K) + self.assertEquals(H, paramiko.util.hexify(transport._H)) + self.assertEquals(x, paramiko.util.hexify(str(transport._message))) + self.assert_(transport._activated) diff --git a/tests/test_message.py b/tests/test_message.py new file mode 100644 index 0000000..441e3ce --- /dev/null +++ b/tests/test_message.py @@ -0,0 +1,102 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for ssh protocol message blocks. +""" + +import unittest +from paramiko.message import Message + + +class MessageTest (unittest.TestCase): + + __a = '\x00\x00\x00\x17\x07\x60\xe0\x90\x00\x00\x00\x01q\x00\x00\x00\x05hello\x00\x00\x03\xe8' + ('x' * 1000) + __b = '\x01\x00\xf3\x00\x3f\x00\x00\x00\x10huey,dewey,louie' + __c = '\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\xf5\xe4\xd3\xc2\xb1\x09\x00\x00\x00\x01\x11\x00\x00\x00\x07\x00\xf5\xe4\xd3\xc2\xb1\x09\x00\x00\x00\x06\x9a\x1b\x2c\x3d\x4e\xf7' + __d = '\x00\x00\x00\x05\x00\x00\x00\x05\x11\x22\x33\x44\x55\x01\x00\x00\x00\x03cat\x00\x00\x00\x03a,b' + + def test_1_encode(self): + msg = Message() + msg.add_int(23) + msg.add_int(123789456) + msg.add_string('q') + msg.add_string('hello') + msg.add_string('x' * 1000) + self.assertEquals(str(msg), self.__a) + + msg = Message() + msg.add_boolean(True) + msg.add_boolean(False) + msg.add_byte('\xf3') + msg.add_bytes('\x00\x3f') + msg.add_list(['huey', 'dewey', 'louie']) + self.assertEquals(str(msg), self.__b) + + msg = Message() + msg.add_int64(5) + msg.add_int64(0xf5e4d3c2b109L) + msg.add_mpint(17) + msg.add_mpint(0xf5e4d3c2b109L) + msg.add_mpint(-0x65e4d3c2b109L) + self.assertEquals(str(msg), self.__c) + + def test_2_decode(self): + msg = Message(self.__a) + self.assertEquals(msg.get_int(), 23) + self.assertEquals(msg.get_int(), 123789456) + self.assertEquals(msg.get_string(), 'q') + self.assertEquals(msg.get_string(), 'hello') + self.assertEquals(msg.get_string(), 'x' * 1000) + + msg = Message(self.__b) + self.assertEquals(msg.get_boolean(), True) + self.assertEquals(msg.get_boolean(), False) + self.assertEquals(msg.get_byte(), '\xf3') + self.assertEquals(msg.get_bytes(2), '\x00\x3f') + self.assertEquals(msg.get_list(), ['huey', 'dewey', 'louie']) + + msg = Message(self.__c) + self.assertEquals(msg.get_int64(), 5) + self.assertEquals(msg.get_int64(), 0xf5e4d3c2b109L) + self.assertEquals(msg.get_mpint(), 17) + self.assertEquals(msg.get_mpint(), 0xf5e4d3c2b109L) + self.assertEquals(msg.get_mpint(), -0x65e4d3c2b109L) + + def test_3_add(self): + msg = Message() + msg.add(5) + msg.add(0x1122334455L) + msg.add(True) + msg.add('cat') + msg.add(['a', 'b']) + self.assertEquals(str(msg), self.__d) + + def test_4_misc(self): + msg = Message(self.__d) + self.assertEquals(msg.get_int(), 5) + self.assertEquals(msg.get_mpint(), 0x1122334455L) + self.assertEquals(msg.get_so_far(), self.__d[:13]) + self.assertEquals(msg.get_remainder(), self.__d[13:]) + msg.rewind() + self.assertEquals(msg.get_int(), 5) + self.assertEquals(msg.get_so_far(), self.__d[:4]) + self.assertEquals(msg.get_remainder(), self.__d[4:]) + diff --git a/tests/test_packetizer.py b/tests/test_packetizer.py new file mode 100644 index 0000000..8c992bd --- /dev/null +++ b/tests/test_packetizer.py @@ -0,0 +1,70 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for the ssh2 protocol in Transport. +""" + +import unittest +from loop import LoopSocket +from Crypto.Cipher import AES +from Crypto.Hash import SHA, HMAC +from paramiko import Message, Packetizer, util + +class PacketizerTest (unittest.TestCase): + + def test_1_write (self): + rsock = LoopSocket() + wsock = LoopSocket() + rsock.link(wsock) + p = Packetizer(wsock) + p.set_log(util.get_logger('paramiko.transport')) + p.set_hexdump(True) + cipher = AES.new('\x00' * 16, AES.MODE_CBC, '\x55' * 16) + p.set_outbound_cipher(cipher, 16, SHA, 12, '\x1f' * 20) + + # message has to be at least 16 bytes long, so we'll have at least one + # block of data encrypted that contains zero random padding bytes + m = Message() + m.add_byte(chr(100)) + m.add_int(100) + m.add_int(1) + m.add_int(900) + p.send_message(m) + data = rsock.recv(100) + # 32 + 12 bytes of MAC = 44 + self.assertEquals(44, len(data)) + self.assertEquals('\x43\x91\x97\xbd\x5b\x50\xac\x25\x87\xc2\xc4\x6b\xc7\xe9\x38\xc0', data[:16]) + + def test_2_read (self): + rsock = LoopSocket() + wsock = LoopSocket() + rsock.link(wsock) + p = Packetizer(rsock) + p.set_log(util.get_logger('paramiko.transport')) + p.set_hexdump(True) + cipher = AES.new('\x00' * 16, AES.MODE_CBC, '\x55' * 16) + p.set_inbound_cipher(cipher, 16, SHA, 12, '\x1f' * 20) + + wsock.send('C\x91\x97\xbd[P\xac%\x87\xc2\xc4k\xc7\xe98\xc0' + \ + '\x90\xd2\x16V\rqsa8|L=\xfb\x97}\xe2n\x03\xb1\xa0\xc2\x1c\xd6AAL\xb4Y') + cmd, m = p.read_message() + self.assertEquals(100, cmd) + self.assertEquals(100, m.get_int()) + self.assertEquals(1, m.get_int()) + self.assertEquals(900, m.get_int()) diff --git a/tests/test_pkey.py b/tests/test_pkey.py new file mode 100644 index 0000000..e56edb1 --- /dev/null +++ b/tests/test_pkey.py @@ -0,0 +1,140 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for public/private key objects. +""" + +import unittest +from paramiko import RSAKey, DSSKey, Message, util, randpool + +# from openssh's ssh-keygen +PUB_RSA = 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA049W6geFpmsljTwfvI1UmKWWJPNFI74+vNKTk4dmzkQY2yAMs6FhlvhlI8ysU4oj71ZsRYMecHbBbxdN79+JRFVYTKaLqjwGENeTd+yv4q+V2PvZv3fLnzApI3l7EJCqhWwJUHJ1jAkZzqDx0tyOL4uoZpww3nmE0kb3y21tH4c=' +PUB_DSS = 'ssh-dss AAAAB3NzaC1kc3MAAACBAOeBpgNnfRzr/twmAQRu2XwWAp3CFtrVnug6s6fgwj/oLjYbVtjAy6pl/h0EKCWx2rf1IetyNsTxWrniA9I6HeDj65X1FyDkg6g8tvCnaNB8Xp/UUhuzHuGsMIipRxBxw9LF608EqZcj1E3ytktoW5B5OcjrkEoz3xG7C+rpIjYvAAAAFQDwz4UnmsGiSNu5iqjn3uTzwUpshwAAAIEAkxfFeY8P2wZpDjX0MimZl5wkoFQDL25cPzGBuB4OnB8NoUk/yjAHIIpEShw8V+LzouMK5CTJQo5+Ngw3qIch/WgRmMHy4kBq1SsXMjQCte1So6HBMvBPIW5SiMTmjCfZZiw4AYHK+B/JaOwaG9yRg2Ejg4Ok10+XFDxlqZo8Y+wAAACARmR7CCPjodxASvRbIyzaVpZoJ/Z6x7dAumV+ysrV1BVYd0lYukmnjO1kKBWApqpH1ve9XDQYN8zgxM4b16L21kpoWQnZtXrY3GZ4/it9kUgyB7+NwacIBlXa8cMDL7Q/69o0d54U0X/NeX5QxuYR6OMJlrkQB7oiW/P/1mwjQgE=' +FINGER_RSA = '1024 60:73:38:44:cb:51:86:65:7f:de:da:a2:2b:5a:57:d5' +FINGER_DSS = '1024 44:78:f0:b9:a2:3c:c5:18:20:09:ff:75:5b:c1:d2:6c' +SIGNED_RSA = '20:d7:8a:31:21:cb:f7:92:12:f2:a4:89:37:f5:78:af:e6:16:b6:25:b9:97:3d:a2:cd:5f:ca:20:21:73:4c:ad:34:73:8f:20:77:28:e2:94:15:08:d8:91:40:7a:85:83:bf:18:37:95:dc:54:1a:9b:88:29:6c:73:ca:38:b4:04:f1:56:b9:f2:42:9d:52:1b:29:29:b4:4f:fd:c9:2d:af:47:d2:40:76:30:f3:63:45:0c:d9:1d:43:86:0f:1c:70:e2:93:12:34:f3:ac:c5:0a:2f:14:50:66:59:f1:88:ee:c1:4a:e9:d1:9c:4e:46:f0:0e:47:6f:38:74:f1:44:a8' + + +class KeyTest (unittest.TestCase): + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_1_generate_key_bytes(self): + from Crypto.Hash import MD5 + key = util.generate_key_bytes(MD5, '\x01\x02\x03\x04', 'happy birthday', 30) + exp = util.unhexify('61E1F272F4C1C4561586BD322498C0E924672780F47BB37DDA7D54019E64') + self.assertEquals(exp, key) + + def test_2_load_rsa(self): + key = RSAKey.from_private_key_file('tests/test_rsa.key') + self.assertEquals('ssh-rsa', key.get_name()) + exp_rsa = FINGER_RSA.split()[1].replace(':', '') + my_rsa = util.hexify(key.get_fingerprint()).lower() + self.assertEquals(exp_rsa, my_rsa) + self.assertEquals(PUB_RSA.split()[1], key.get_base64()) + self.assertEquals(1024, key.get_bits()) + + def test_3_load_rsa_password(self): + key = RSAKey.from_private_key_file('tests/test_rsa_password.key', 'television') + self.assertEquals('ssh-rsa', key.get_name()) + exp_rsa = FINGER_RSA.split()[1].replace(':', '') + my_rsa = util.hexify(key.get_fingerprint()).lower() + self.assertEquals(exp_rsa, my_rsa) + self.assertEquals(PUB_RSA.split()[1], key.get_base64()) + self.assertEquals(1024, key.get_bits()) + + def test_4_load_dss(self): + key = DSSKey.from_private_key_file('tests/test_dss.key') + self.assertEquals('ssh-dss', key.get_name()) + exp_dss = FINGER_DSS.split()[1].replace(':', '') + my_dss = util.hexify(key.get_fingerprint()).lower() + self.assertEquals(exp_dss, my_dss) + self.assertEquals(PUB_DSS.split()[1], key.get_base64()) + self.assertEquals(1024, key.get_bits()) + + def test_5_load_dss_password(self): + key = DSSKey.from_private_key_file('tests/test_dss_password.key', 'television') + self.assertEquals('ssh-dss', key.get_name()) + exp_dss = FINGER_DSS.split()[1].replace(':', '') + my_dss = util.hexify(key.get_fingerprint()).lower() + self.assertEquals(exp_dss, my_dss) + self.assertEquals(PUB_DSS.split()[1], key.get_base64()) + self.assertEquals(1024, key.get_bits()) + + def test_6_compare_rsa(self): + # verify that the private & public keys compare equal + key = RSAKey.from_private_key_file('tests/test_rsa.key') + self.assertEquals(key, key) + pub = RSAKey(data=str(key)) + self.assert_(key.can_sign()) + self.assert_(not pub.can_sign()) + self.assertEquals(key, pub) + + def test_7_compare_dss(self): + # verify that the private & public keys compare equal + key = DSSKey.from_private_key_file('tests/test_dss.key') + self.assertEquals(key, key) + pub = DSSKey(data=str(key)) + self.assert_(key.can_sign()) + self.assert_(not pub.can_sign()) + self.assertEquals(key, pub) + + def test_8_sign_rsa(self): + # verify that the rsa private key can sign and verify + key = RSAKey.from_private_key_file('tests/test_rsa.key') + msg = key.sign_ssh_data(randpool, 'ice weasels') + self.assert_(type(msg) is Message) + msg.rewind() + self.assertEquals('ssh-rsa', msg.get_string()) + sig = ''.join([chr(int(x, 16)) for x in SIGNED_RSA.split(':')]) + self.assertEquals(sig, msg.get_string()) + msg.rewind() + pub = RSAKey(data=str(key)) + self.assert_(pub.verify_ssh_sig('ice weasels', msg)) + + def test_9_sign_dss(self): + # verify that the dss private key can sign and verify + key = DSSKey.from_private_key_file('tests/test_dss.key') + msg = key.sign_ssh_data(randpool, 'ice weasels') + self.assert_(type(msg) is Message) + msg.rewind() + self.assertEquals('ssh-dss', msg.get_string()) + # can't do the same test as we do for RSA, because DSS signatures + # are usually different each time. but we can test verification + # anyway so it's ok. + self.assertEquals(40, len(msg.get_string())) + msg.rewind() + pub = DSSKey(data=str(key)) + self.assert_(pub.verify_ssh_sig('ice weasels', msg)) + + def test_A_generate_rsa(self): + key = RSAKey.generate(1024) + msg = key.sign_ssh_data(randpool, 'jerri blank') + msg.rewind() + self.assert_(key.verify_ssh_sig('jerri blank', msg)) + + def test_B_generate_dss(self): + key = DSSKey.generate(1024) + msg = key.sign_ssh_data(randpool, 'jerri blank') + msg.rewind() + self.assert_(key.verify_ssh_sig('jerri blank', msg)) diff --git a/tests/test_rsa.key b/tests/test_rsa.key new file mode 100644 index 0000000..f50e9c5 --- /dev/null +++ b/tests/test_rsa.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWgIBAAKBgQDTj1bqB4WmayWNPB+8jVSYpZYk80Ujvj680pOTh2bORBjbIAyz +oWGW+GUjzKxTiiPvVmxFgx5wdsFvF03v34lEVVhMpouqPAYQ15N37K/ir5XY+9m/ +d8ufMCkjeXsQkKqFbAlQcnWMCRnOoPHS3I4vi6hmnDDeeYTSRvfLbW0fhwIBIwKB +gBIiOqZYaoqbeD9OS9z2K9KR2atlTxGxOJPXiP4ESqP3NVScWNwyZ3NXHpyrJLa0 +EbVtzsQhLn6rF+TzXnOlcipFvjsem3iYzCpuChfGQ6SovTcOjHV9z+hnpXvQ/fon +soVRZY65wKnF7IAoUwTmJS9opqgrN6kRgCd3DASAMd1bAkEA96SBVWFt/fJBNJ9H +tYnBKZGw0VeHOYmVYbvMSstssn8un+pQpUm9vlG/bp7Oxd/m+b9KWEh2xPfv6zqU +avNwHwJBANqzGZa/EpzF4J8pGti7oIAPUIDGMtfIcmqNXVMckrmzQ2vTfqtkEZsA +4rE1IERRyiJQx6EJsz21wJmGV9WJQ5kCQQDwkS0uXqVdFzgHO6S++tjmjYcxwr3g +H0CoFYSgbddOT6miqRskOQF3DZVkJT3kyuBgU2zKygz52ukQZMqxCb1fAkASvuTv +qfpH87Qq5kQhNKdbbwbmd2NxlNabazPijWuphGTdW0VfJdWfklyS2Kr+iqrs/5wV +HhathJt636Eg7oIjAkA8ht3MQ+XSl9yIJIS8gVpbPxSw5OMfw0PjVE7tBdQruiSc +nvuQES5C9BMHjF39LZiGH1iLQy7FgdHyoP+eodI7 +-----END RSA PRIVATE KEY----- diff --git a/tests/test_rsa_password.key b/tests/test_rsa_password.key new file mode 100644 index 0000000..7713049 --- /dev/null +++ b/tests/test_rsa_password.key @@ -0,0 +1,18 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,DAA422E8A5A8EFB7 + ++nssHGmWl91IcmGiE6DdCIqGvAP04tuLh60wLjWBvdjtF9CjztPnF57xe+6pBk7o +YgF/Ry3ik9ZV9rHNcRXifDKM9crxtYlpUlkM2C0SP89sXaO0P1Q1yCnrtZUwDIKO +BNV8et5X7+AGMFsy/nmv0NFMrbpoG03Dppsloecd29NTRlIXwxHRFyHxy6BdEib/ +Dn0mEVbwg3dTvKrd/sODWR9hRwpDGM9nkEbUNJCh7vMwFKkIZZF8yqFvmGckuO5C +HZkDJ6RkEDYrSZJAavQaiOPF5bu3cHughRfnrIKVrQuTTDiWjwX9Ny8e4p4k7dy7 +rLpbPhtxUOUbpOF7T1QxljDi1Tcq3Ebk3kN/ZLPRFnDrJfyUx+m9BXmAa78Wxs/l +KaS8DTkYykd3+EGOeJFjZg2bvgqil4V+5JIt/+MQ5pZ/ui7i4GcH2bvZyGAbrXzP +3LipSAdN5RG+fViLe3HUtfCx4ZAgtU78TWJrLk2FwKQGglFxKLnswp+IKZb09rZV +uxmG4pPLUnH+mMYdiy5ugzj+5C8iZ0/IstpHVmO6GWROfedpJ82eMztTOtdhfMep +8Z3HwAwkDtksL7Gq9klb0Wq5+uRlBWetixddAvnmqXNzYhaANWcAF/2a2Hz06Rb0 +e6pe/g0Ek5KV+6YI+D+oEblG0Sr+d4NtxtDTmIJKNVkmzlhI2s53bHp6txCb5JWJ +S8mKLPBBBzaNXYd3odDvGXguuxUntWSsD11KyR6B9DXMIfWQW5dT7hp5kTMGlXWJ +lD2hYab13DCCuAkwVTdpzhHYLZyxLYoSu05W6z8SAOs= +-----END RSA PRIVATE KEY----- diff --git a/tests/test_sftp.py b/tests/test_sftp.py new file mode 100644 index 0000000..993899a --- /dev/null +++ b/tests/test_sftp.py @@ -0,0 +1,740 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +some unit tests to make sure sftp works. + +a real actual sftp server is contacted, and a new folder is created there to +do test file operations in (so no existing files will be harmed). +""" + +import logging +import os +import random +import sys +import threading +import time +import unittest + +import paramiko +from stub_sftp import StubServer, StubSFTPServer +from loop import LoopSocket + +ARTICLE = ''' +Insulin sensitivity and liver insulin receptor structure in ducks from two +genera + +T. Constans, B. Chevalier, M. Derouet and J. Simon +Station de Recherches Avicoles, Institut National de la Recherche Agronomique, +Nouzilly, France. + +Insulin sensitivity and liver insulin receptor structure were studied in +5-wk-old ducks from two genera (Muscovy and Pekin). In the fasting state, both +duck types were equally resistant to exogenous insulin compared with chicken. +Despite the low potency of duck insulin, the number of insulin receptors was +lower in Muscovy duck and similar in Pekin duck and chicken liver membranes. +After 125I-insulin cross-linking, the size of the alpha-subunit of the +receptors from the three species was 135,000. Wheat germ agglutinin-purified +receptors from the three species were contaminated by an active and unusual +adenosinetriphosphatase (ATPase) contaminant (highest activity in Muscovy +duck). Sequential purification of solubilized receptor from both duck types on +lentil and then wheat germ agglutinin lectins led to a fraction of receptors +very poor in ATPase activity that exhibited a beta-subunit size (95,000) and +tyrosine kinase activity similar to those of ATPase-free chicken insulin +receptors. Therefore the ducks from the two genera exhibit an alpha-beta- +structure for liver insulin receptors and a clear difference in the number of +liver insulin receptors. Their sensitivity to insulin is, however, similarly +decreased compared with chicken. +''' + +FOLDER = os.environ.get('TEST_FOLDER', 'temp-testing000') + +sftp = None +tc = None +g_big_file_test = True + + +class SFTPTest (unittest.TestCase): + + def init(hostname, username, keyfile, passwd): + global sftp, tc + + t = paramiko.Transport(hostname) + tc = t + try: + key = paramiko.RSAKey.from_private_key_file(keyfile, passwd) + except paramiko.PasswordRequiredException: + sys.stderr.write('\n\nparamiko.RSAKey.from_private_key_file REQUIRES PASSWORD.\n') + sys.stderr.write('You have two options:\n') + sys.stderr.write('* Use the "-K" option to point to a different (non-password-protected)\n') + sys.stderr.write(' private key file.\n') + sys.stderr.write('* Use the "-P" option to provide the password needed to unlock this private\n') + sys.stderr.write(' key.\n') + sys.stderr.write('\n') + sys.exit(1) + try: + t.connect(username=username, pkey=key) + except paramiko.SSHException: + t.close() + sys.stderr.write('\n\nparamiko.Transport.connect FAILED.\n') + sys.stderr.write('There are several possible reasons why it might fail so quickly:\n\n') + sys.stderr.write('* The host to connect to (%s) is not a valid SSH server.\n' % hostname) + sys.stderr.write(' (Use the "-H" option to change the host.)\n') + sys.stderr.write('* The username to auth as (%s) is invalid.\n' % username) + sys.stderr.write(' (Use the "-U" option to change the username.)\n') + sys.stderr.write('* The private key given (%s) is not accepted by the server.\n' % keyfile) + sys.stderr.write(' (Use the "-K" option to provide a different key file.)\n') + sys.stderr.write('\n') + sys.exit(1) + sftp = paramiko.SFTP.from_transport(t) + init = staticmethod(init) + + def init_loopback(): + global sftp, tc + + socks = LoopSocket() + sockc = LoopSocket() + sockc.link(socks) + tc = paramiko.Transport(sockc) + ts = paramiko.Transport(socks) + + host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key') + ts.add_server_key(host_key) + event = threading.Event() + server = StubServer() + ts.set_subsystem_handler('sftp', paramiko.SFTPServer, StubSFTPServer) + ts.start_server(event, server) + tc.connect(username='slowdive', password='pygmalion') + event.wait(1.0) + + sftp = paramiko.SFTP.from_transport(tc) + init_loopback = staticmethod(init_loopback) + + def set_big_file_test(onoff): + 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): + FOLDER = FOLDER[:-3] + '%03d' % i + try: + sftp.mkdir(FOLDER) + break + except (IOError, OSError): + pass + + def tearDown(self): + sftp.rmdir(FOLDER) + + def test_1_file(self): + """ + verify that we can create a file. + """ + f = sftp.open(FOLDER + '/test', 'w') + try: + self.assertEqual(f.stat().st_size, 0) + f.close() + finally: + sftp.remove(FOLDER + '/test') + + def test_2_close(self): + """ + verify that closing the sftp session doesn't do anything bad, and that + a new one can be opened. + """ + global sftp + sftp.close() + try: + sftp.open(FOLDER + '/test2', 'w') + self.fail('expected exception') + except: + pass + sftp = paramiko.SFTP.from_transport(tc) + + def test_3_write(self): + """ + verify that a file can be created and written, and the size is correct. + """ + f = sftp.open(FOLDER + '/duck.txt', 'w') + try: + f.write(ARTICLE) + f.close() + self.assertEqual(sftp.stat(FOLDER + '/duck.txt').st_size, 1483) + finally: + sftp.remove(FOLDER + '/duck.txt') + + def test_4_append(self): + """ + verify that a file can be opened for append, and tell() still works. + """ + f = sftp.open(FOLDER + '/append.txt', 'w') + try: + f.write('first line\nsecond line\n') + self.assertEqual(f.tell(), 23) + f.close() + + f = sftp.open(FOLDER + '/append.txt', 'a+') + f.write('third line!!!\n') + self.assertEqual(f.tell(), 37) + self.assertEqual(f.stat().st_size, 37) + f.seek(-26, f.SEEK_CUR) + self.assertEqual(f.readline(), 'second line\n') + f.close() + finally: + sftp.remove(FOLDER + '/append.txt') + + def test_5_rename(self): + """ + verify that renaming a file works. + """ + f = sftp.open(FOLDER + '/first.txt', 'w') + try: + f.write('content!\n'); + f.close() + sftp.rename(FOLDER + '/first.txt', FOLDER + '/second.txt') + try: + f = sftp.open(FOLDER + '/first.txt', 'r') + self.assert_(False, 'no exception on reading nonexistent file') + except IOError: + pass + f = sftp.open(FOLDER + '/second.txt', 'r') + f.seek(-6, f.SEEK_END) + self.assertEqual(f.read(4), 'tent') + f.close() + finally: + try: + sftp.remove(FOLDER + '/first.txt') + except: + pass + try: + sftp.remove(FOLDER + '/second.txt') + except: + pass + + def test_6_folder(self): + """ + create a temporary folder, verify that we can create a file in it, then + remove the folder and verify that we can't create a file in it anymore. + """ + sftp.mkdir(FOLDER + '/subfolder') + f = sftp.open(FOLDER + '/subfolder/test', 'w') + f.close() + sftp.remove(FOLDER + '/subfolder/test') + sftp.rmdir(FOLDER + '/subfolder') + try: + f = sftp.open(FOLDER + '/subfolder/test') + # shouldn't be able to create that file + self.assert_(False, 'no exception at dummy file creation') + except IOError: + pass + + def test_7_listdir(self): + """ + verify that a folder can be created, a bunch of files can be placed in it, + and those files show up in sftp.listdir. + """ + try: + f = sftp.open(FOLDER + '/duck.txt', 'w') + f.close() + + f = sftp.open(FOLDER + '/fish.txt', 'w') + f.close() + + f = sftp.open(FOLDER + '/tertiary.py', 'w') + f.close() + + x = sftp.listdir(FOLDER) + self.assertEqual(len(x), 3) + self.assert_('duck.txt' in x) + self.assert_('fish.txt' in x) + self.assert_('tertiary.py' in x) + self.assert_('random' not in x) + finally: + sftp.remove(FOLDER + '/duck.txt') + sftp.remove(FOLDER + '/fish.txt') + sftp.remove(FOLDER + '/tertiary.py') + + def test_8_setstat(self): + """ + verify that the setstat functions (chown, chmod, utime) work. + """ + f = sftp.open(FOLDER + '/special', 'w') + try: + f.close() + + stat = sftp.stat(FOLDER + '/special') + sftp.chmod(FOLDER + '/special', (stat.st_mode & ~0777) | 0600) + self.assertEqual(sftp.stat(FOLDER + '/special').st_mode & 0777, 0600) + + mtime = stat.st_mtime - 3600 + atime = stat.st_atime - 1800 + sftp.utime(FOLDER + '/special', (atime, mtime)) + nstat = sftp.stat(FOLDER + '/special') + self.assertEqual(nstat.st_mtime, mtime) + self.assertEqual(nstat.st_atime, atime) + + # can't really test chown, since we'd have to know a valid uid. + finally: + sftp.remove(FOLDER + '/special') + + def test_9_readline_seek(self): + """ + create a text file and write a bunch of text into it. then count the lines + in the file, and seek around to retreive particular lines. this should + verify that read buffering and 'tell' work well together, and that read + buffering is reset on 'seek'. + """ + try: + f = sftp.open(FOLDER + '/duck.txt', 'w') + f.write(ARTICLE) + f.close() + + f = sftp.open(FOLDER + '/duck.txt', 'r+') + line_number = 0 + loc = 0 + pos_list = [] + for line in f: + line_number += 1 + pos_list.append(loc) + loc = f.tell() + f.seek(pos_list[6], f.SEEK_SET) + self.assertEqual(f.readline(), 'Nouzilly, France.\n') + f.seek(pos_list[17], f.SEEK_SET) + self.assertEqual(f.readline()[:4], 'duck') + f.seek(pos_list[10], f.SEEK_SET) + self.assertEqual(f.readline(), 'duck types were equally resistant to exogenous insulin compared with chicken.\n') + f.close() + finally: + sftp.remove(FOLDER + '/duck.txt') + + def test_A_write_seek(self): + """ + create a text file, seek back and change part of it, and verify that the + changes worked. + """ + f = sftp.open(FOLDER + '/testing.txt', 'w') + try: + f.write('hello kitty.\n') + f.seek(-5, f.SEEK_CUR) + f.write('dd') + f.close() + + self.assertEqual(sftp.stat(FOLDER + '/testing.txt').st_size, 13) + f = sftp.open(FOLDER + '/testing.txt', 'r') + data = f.read(20) + f.close() + self.assertEqual(data, 'hello kiddy.\n') + finally: + sftp.remove(FOLDER + '/testing.txt') + + def test_B_symlink(self): + """ + create a symlink and then check that lstat doesn't follow it. + """ + f = sftp.open(FOLDER + '/original.txt', 'w') + try: + f.write('original\n') + f.close() + sftp.symlink('original.txt', FOLDER + '/link.txt') + self.assertEqual(sftp.readlink(FOLDER + '/link.txt'), 'original.txt') + + f = sftp.open(FOLDER + '/link.txt', 'r') + self.assertEqual(f.readlines(), [ 'original\n' ]) + f.close() + + cwd = sftp.normalize('.') + if cwd[-1] == '/': + cwd = cwd[:-1] + abs_path = cwd + '/' + FOLDER + '/original.txt' + sftp.symlink(abs_path, FOLDER + '/link2.txt') + self.assertEqual(abs_path, sftp.readlink(FOLDER + '/link2.txt')) + + self.assertEqual(sftp.lstat(FOLDER + '/link.txt').st_size, 12) + self.assertEqual(sftp.stat(FOLDER + '/link.txt').st_size, 9) + # the sftp server may be hiding extra path members from us, so the + # length may be longer than we expect: + self.assert_(sftp.lstat(FOLDER + '/link2.txt').st_size >= len(abs_path)) + self.assertEqual(sftp.stat(FOLDER + '/link2.txt').st_size, 9) + self.assertEqual(sftp.stat(FOLDER + '/original.txt').st_size, 9) + finally: + try: + sftp.remove(FOLDER + '/link.txt') + except: + pass + try: + sftp.remove(FOLDER + '/link2.txt') + except: + pass + try: + sftp.remove(FOLDER + '/original.txt') + except: + pass + + def test_C_flush_seek(self): + """ + verify that buffered writes are automatically flushed on seek. + """ + f = sftp.open(FOLDER + '/happy.txt', 'w', 1) + try: + f.write('full line.\n') + f.write('partial') + f.seek(9, f.SEEK_SET) + f.write('?\n') + f.close() + + f = sftp.open(FOLDER + '/happy.txt', 'r') + self.assertEqual(f.readline(), 'full line?\n') + self.assertEqual(f.read(7), 'partial') + f.close() + finally: + try: + sftp.remove(FOLDER + '/happy.txt') + except: + pass + + def test_D_lots_of_files(self): + """ + create a bunch of files over the same session. + """ + global g_big_file_test + if not g_big_file_test: + return + numfiles = 100 + try: + for i in range(numfiles): + f = sftp.open('%s/file%d.txt' % (FOLDER, i), 'w', 1) + f.write('this is file #%d.\n' % i) + f.close() + sftp.chmod('%s/file%d.txt' % (FOLDER, i), 0660) + + # now make sure every file is there, by creating a list of filenmes + # and reading them in random order. + numlist = range(numfiles) + while len(numlist) > 0: + r = numlist[random.randint(0, len(numlist) - 1)] + f = sftp.open('%s/file%d.txt' % (FOLDER, r)) + self.assertEqual(f.readline(), 'this is file #%d.\n' % r) + f.close() + numlist.remove(r) + finally: + for i in range(numfiles): + try: + sftp.remove('%s/file%d.txt' % (FOLDER, i)) + except: + pass + + def test_E_big_file(self): + """ + write a 1MB file with no buffering. + """ + global g_big_file_test + if not g_big_file_test: + return + kblob = (1024 * 'x') + start = time.time() + try: + f = sftp.open('%s/hongry.txt' % FOLDER, 'w') + for n in range(1024): + f.write(kblob) + if n % 128 == 0: + sys.stderr.write('.') + f.close() + sys.stderr.write(' ') + + self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024) + end = time.time() + sys.stderr.write('%ds ' % round(end - start)) + + start = time.time() + f = sftp.open('%s/hongry.txt' % FOLDER, 'r') + for n in range(1024): + data = f.read(1024) + self.assertEqual(data, kblob) + f.close() + + end = time.time() + sys.stderr.write('%ds ' % round(end - start)) + finally: + sftp.remove('%s/hongry.txt' % FOLDER) + + def test_F_big_file_pipelined(self): + """ + write a 1MB file, with no linefeeds, using pipelining. + """ + global g_big_file_test + if not g_big_file_test: + return + kblob = (1024 * 'x') + start = time.time() + try: + f = sftp.open('%s/hongry.txt' % FOLDER, 'w') + f.set_pipelined(True) + for n in range(1024): + f.write(kblob) + if n % 128 == 0: + sys.stderr.write('.') + f.close() + sys.stderr.write(' ') + + self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024) + end = time.time() + sys.stderr.write('%ds ' % round(end - start)) + + start = time.time() + f = sftp.open('%s/hongry.txt' % FOLDER, 'r') + f.prefetch() + for n in range(1024): + data = f.read(1024) + self.assertEqual(data, kblob) + f.close() + + end = time.time() + sys.stderr.write('%ds ' % round(end - start)) + finally: + sftp.remove('%s/hongry.txt' % FOLDER) + + def test_G_lots_of_prefetching(self): + """ + prefetch a 1MB file a bunch of times, discarding the file object + without using it, to verify that paramiko doesn't get confused. + """ + global g_big_file_test + if not g_big_file_test: + return + kblob = (1024 * 'x') + try: + f = sftp.open('%s/hongry.txt' % FOLDER, 'w') + f.set_pipelined(True) + for n in range(1024): + f.write(kblob) + if n % 128 == 0: + sys.stderr.write('.') + f.close() + sys.stderr.write(' ') + + self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024) + + for i in range(10): + f = sftp.open('%s/hongry.txt' % FOLDER, 'r') + f.prefetch() + f = sftp.open('%s/hongry.txt' % FOLDER, 'r') + f.prefetch() + for n in range(1024): + data = f.read(1024) + self.assertEqual(data, kblob) + if n % 128 == 0: + sys.stderr.write('.') + f.close() + sys.stderr.write(' ') + finally: + sftp.remove('%s/hongry.txt' % FOLDER) + + def test_H_big_file_big_buffer(self): + """ + write a 1MB file, with no linefeeds, and a big buffer. + """ + global g_big_file_test + if not g_big_file_test: + return + mblob = (1024 * 1024 * 'x') + try: + f = sftp.open('%s/hongry.txt' % FOLDER, 'w', 128 * 1024) + f.write(mblob) + f.close() + + self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024) + finally: + sftp.remove('%s/hongry.txt' % FOLDER) + + def test_I_big_file_renegotiate(self): + """ + write a 1MB file, forcing key renegotiation in the middle. + """ + global g_big_file_test + if not g_big_file_test: + return + t = sftp.sock.get_transport() + t.packetizer.REKEY_BYTES = 512 * 1024 + k32blob = (32 * 1024 * 'x') + try: + f = sftp.open('%s/hongry.txt' % FOLDER, 'w', 128 * 1024) + for i in xrange(32): + f.write(k32blob) + f.close() + + self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024) + self.assertNotEquals(t.H, t.session_id) + finally: + sftp.remove('%s/hongry.txt' % FOLDER) + t.packetizer.REKEY_BYTES = pow(2, 30) + + def test_J_realpath(self): + """ + test that realpath is returning something non-empty and not an + error. + """ + pwd = sftp.normalize('.') + self.assert_(len(pwd) > 0) + f = sftp.normalize('./' + FOLDER) + self.assert_(len(f) > 0) + self.assertEquals(os.path.join(pwd, FOLDER), f) + + def test_K_mkdir(self): + """ + verify that mkdir/rmdir work. + """ + try: + sftp.mkdir(FOLDER + '/subfolder') + except: + self.assert_(False, 'exception creating subfolder') + try: + sftp.mkdir(FOLDER + '/subfolder') + self.assert_(False, 'no exception overwriting subfolder') + except IOError: + pass + try: + sftp.rmdir(FOLDER + '/subfolder') + except: + self.assert_(False, 'exception removing subfolder') + try: + sftp.rmdir(FOLDER + '/subfolder') + self.assert_(False, 'no exception removing nonexistent subfolder') + except IOError: + pass + + def test_L_chdir(self): + """ + verify that chdir/getcwd work. + """ + root = sftp.normalize('.') + if root[-1] != '/': + root += '/' + try: + sftp.mkdir(FOLDER + '/alpha') + sftp.chdir(FOLDER + '/alpha') + 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') + f.close() + sftp.chdir('..') + self.assertEquals(['fish'], sftp.listdir('beta')) + sftp.chdir('..') + self.assertEquals(['fish'], sftp.listdir('alpha/beta')) + finally: + sftp.chdir(root) + try: + sftp.unlink(FOLDER + '/alpha/beta/fish') + except: + pass + try: + sftp.rmdir(FOLDER + '/alpha/beta') + except: + pass + try: + sftp.rmdir(FOLDER + '/alpha') + except: + pass + + def test_M_get_put(self): + """ + verify that get/put work. + """ + import os, warnings + warnings.filterwarnings('ignore', 'tempnam.*') + + localname = os.tempnam() + text = 'All I wanted was a plastic bunny rabbit.\n' + f = open(localname, 'w') + f.write(text) + f.close() + sftp.put(localname, FOLDER + '/bunny.txt') + + f = sftp.open(FOLDER + '/bunny.txt', 'r') + self.assertEquals(text, f.read(128)) + f.close() + + os.unlink(localname) + localname = os.tempnam() + sftp.get(FOLDER + '/bunny.txt', localname) + + f = open(localname, 'r') + self.assertEquals(text, f.read(128)) + f.close() + + os.unlink(localname) + sftp.unlink(FOLDER + '/bunny.txt') + + def test_N_check(self): + """ + verify that file.check() works against our own server. + (it's an sftp extension that we support, and may be the only ones who + support it.) + """ + 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') + self.assertEquals('91059CFC6615941378D413CB5ADAF4C5EB293402', paramiko.util.hexify(sum)) + sum = f.check('md5', 0, 512) + self.assertEquals('93DE4788FCA28D471516963A1FE3856A', paramiko.util.hexify(sum)) + sum = f.check('md5', 0, 0, 510) + self.assertEquals('EB3B45B8CD55A0707D99B177544A319F373183D241432BB2157AB9E46358C4AC90370B5CADE5D90336FC1716F90B36D6', + paramiko.util.hexify(sum)) + finally: + sftp.unlink(FOLDER + '/kitty.txt') + + def test_O_x_flag(self): + """ + verify that the 'x' flag works when opening a file. + """ + f = sftp.open(FOLDER + '/unusual.txt', 'wx') + f.close() + + try: + try: + f = sftp.open(FOLDER + '/unusual.txt', 'wx') + self.fail('expected exception') + except IOError, x: + pass + finally: + sftp.unlink(FOLDER + '/unusual.txt') + + def test_P_utf8(self): + """ + verify that unicode strings are encoded into utf8 correctly. + """ + 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') + except Exception, e: + self.fail('exception ' + e) + sftp.unlink(FOLDER + '/\xc3\xbcnic\xc3\xb8\x64\x65') + diff --git a/tests/test_transport.py b/tests/test_transport.py new file mode 100644 index 0000000..5fcc786 --- /dev/null +++ b/tests/test_transport.py @@ -0,0 +1,573 @@ +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for the ssh2 protocol in Transport. +""" + +import sys, time, threading, unittest +import select +from paramiko import Transport, SecurityOptions, ServerInterface, RSAKey, DSSKey, \ + SSHException, BadAuthenticationType, InteractiveQuery, util +from paramiko import AUTH_FAILED, AUTH_PARTIALLY_SUCCESSFUL, AUTH_SUCCESSFUL +from paramiko import OPEN_SUCCEEDED +from loop import LoopSocket + + +class NullServer (ServerInterface): + paranoid_did_password = False + paranoid_did_public_key = False + paranoid_key = DSSKey.from_private_key_file('tests/test_dss.key') + + def get_allowed_auths(self, username): + if username == 'slowdive': + return 'publickey,password' + if username == 'paranoid': + if not self.paranoid_did_password and not self.paranoid_did_public_key: + return 'publickey,password' + elif self.paranoid_did_password: + return 'publickey' + else: + return 'password' + if username == 'commie': + return 'keyboard-interactive' + return 'publickey' + + def check_auth_password(self, username, password): + if (username == 'slowdive') and (password == 'pygmalion'): + return AUTH_SUCCESSFUL + if (username == 'paranoid') and (password == 'paranoid'): + # 2-part auth (even openssh doesn't support this) + self.paranoid_did_password = True + if self.paranoid_did_public_key: + return AUTH_SUCCESSFUL + return AUTH_PARTIALLY_SUCCESSFUL + return AUTH_FAILED + + def check_auth_publickey(self, username, key): + if (username == 'paranoid') and (key == self.paranoid_key): + # 2-part auth + self.paranoid_did_public_key = True + if self.paranoid_did_password: + return AUTH_SUCCESSFUL + return AUTH_PARTIALLY_SUCCESSFUL + return AUTH_FAILED + + def check_auth_interactive(self, username, submethods): + if username == 'commie': + self.username = username + return InteractiveQuery('password', 'Please enter a password.', ('Password', False)) + return AUTH_FAILED + + def check_auth_interactive_response(self, responses): + if self.username == 'commie': + if (len(responses) == 1) and (responses[0] == 'cat'): + return AUTH_SUCCESSFUL + return AUTH_FAILED + + def check_channel_request(self, kind, chanid): + return OPEN_SUCCEEDED + + def check_channel_exec_request(self, channel, command): + if command != 'yes': + return False + return True + + def check_channel_shell_request(self, channel): + return True + + def check_global_request(self, kind, msg): + self._global_request = kind + return False + + +class TransportTest (unittest.TestCase): + + def setUp(self): + self.socks = LoopSocket() + self.sockc = LoopSocket() + self.sockc.link(self.socks) + self.tc = Transport(self.sockc) + self.ts = Transport(self.socks) + + def tearDown(self): + self.tc.close() + self.ts.close() + self.socks.close() + self.sockc.close() + + def test_1_security_options(self): + o = self.tc.get_security_options() + self.assertEquals(type(o), SecurityOptions) + self.assert_(('aes256-cbc', 'blowfish-cbc') != o.ciphers) + o.ciphers = ('aes256-cbc', 'blowfish-cbc') + self.assertEquals(('aes256-cbc', 'blowfish-cbc'), o.ciphers) + try: + o.ciphers = ('aes256-cbc', 'made-up-cipher') + self.assert_(False) + except ValueError: + pass + try: + o.ciphers = 23 + self.assert_(False) + except TypeError: + pass + + def test_2_compute_key(self): + self.tc.K = 123281095979686581523377256114209720774539068973101330872763622971399429481072519713536292772709507296759612401802191955568143056534122385270077606457721553469730659233569339356140085284052436697480759510519672848743794433460113118986816826624865291116513647975790797391795651716378444844877749505443714557929L + self.tc.H = util.unhexify('0C8307CDE6856FF30BA93684EB0F04C2520E9ED3') + self.tc.session_id = self.tc.H + key = self.tc._compute_key('C', 32) + self.assertEquals('207E66594CA87C44ECCBA3B3CD39FDDB378E6FDB0F97C54B2AA0CFBF900CD995', + util.hexify(key)) + + def test_3_simple(self): + """ + verify that we can establish an ssh link with ourselves across the + loopback sockets. this is hardly "simple" but it's simpler than the + later tests. :) + """ + 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.assertEquals(None, self.tc.get_username()) + self.assertEquals(None, self.ts.get_username()) + self.assertEquals(False, self.tc.is_authenticated()) + self.assertEquals(False, self.ts.is_authenticated()) + 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()) + self.assertEquals('slowdive', self.tc.get_username()) + self.assertEquals('slowdive', self.ts.get_username()) + self.assertEquals(True, self.tc.is_authenticated()) + self.assertEquals(True, self.ts.is_authenticated()) + + def test_4_special(self): + """ + verify that the client can demand odd handshake settings, and can + renegotiate keys in mid-stream. + """ + 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.ts.start_server(event, server) + options = self.tc.get_security_options() + options.ciphers = ('aes256-cbc',) + options.digests = ('hmac-md5-96',) + 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()) + self.assertEquals('aes256-cbc', self.tc.local_cipher) + self.assertEquals('aes256-cbc', self.tc.remote_cipher) + self.assertEquals(12, self.tc.packetizer.get_mac_size_out()) + self.assertEquals(12, self.tc.packetizer.get_mac_size_in()) + + self.tc.send_ignore(1024) + self.assert_(self.tc.renegotiate_keys()) + self.ts.send_ignore(1024) + + def test_5_keepalive(self): + """ + verify that the keepalive will be sent. + """ + self.tc.set_hexdump(True) + + 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.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()) + + self.assertEquals(None, getattr(server, '_global_request', None)) + self.tc.set_keepalive(1) + time.sleep(2) + self.assertEquals('keepalive@lag.net', server._global_request) + + def test_6_bad_auth_type(self): + """ + verify that we get the right exception when an unsupported auth + type is requested. + """ + 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.ts.start_server(event, server) + try: + self.tc.connect(hostkey=public_host_key, + username='unknown', password='error') + self.assert_(False) + except: + etype, evalue, etb = sys.exc_info() + self.assertEquals(BadAuthenticationType, etype) + self.assertEquals(['publickey'], evalue.allowed_types) + + def test_7_bad_password(self): + """ + verify that a bad password gets the right exception, and that a retry + with the right password works. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + try: + self.tc.auth_password(username='slowdive', password='error') + self.assert_(False) + except: + etype, evalue, etb = sys.exc_info() + self.assertEquals(SSHException, etype) + self.tc.auth_password(username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + def test_8_multipart_auth(self): + """ + verify that multipart auth works. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + remain = self.tc.auth_password(username='paranoid', password='paranoid') + self.assertEquals(['publickey'], remain) + key = DSSKey.from_private_key_file('tests/test_dss.key') + remain = self.tc.auth_publickey(username='paranoid', key=key) + self.assertEquals([], remain) + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + def test_9_interactive_auth(self): + """ + verify keyboard-interactive auth works. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + + def handler(title, instructions, prompts): + self.got_title = title + self.got_instructions = instructions + self.got_prompts = prompts + return ['cat'] + remain = self.tc.auth_interactive('commie', handler) + self.assertEquals(self.got_title, 'password') + self.assertEquals(self.got_prompts, [('Password', False)]) + self.assertEquals([], remain) + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + def test_A_interactive_auth_fallback(self): + """ + verify that a password auth attempt will fallback to "interactive" + if password auth isn't supported but interactive is. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + remain = self.tc.auth_password('commie', 'cat') + self.assertEquals([], remain) + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + def test_B_exec_command(self): + """ + verify that exec_command() does something reasonable. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + self.tc.auth_password(username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + chan = self.tc.open_session() + schan = self.ts.accept(1.0) + self.assert_(not chan.exec_command('no')) + + chan = self.tc.open_session() + self.assert_(chan.exec_command('yes')) + schan = self.ts.accept(1.0) + schan.send('Hello there.\n') + schan.send_stderr('This is on stderr.\n') + schan.close() + + f = chan.makefile() + self.assertEquals('Hello there.\n', f.readline()) + self.assertEquals('', f.readline()) + f = chan.makefile_stderr() + self.assertEquals('This is on stderr.\n', f.readline()) + self.assertEquals('', f.readline()) + + # now try it with combined stdout/stderr + chan = self.tc.open_session() + self.assert_(chan.exec_command('yes')) + schan = self.ts.accept(1.0) + schan.send('Hello there.\n') + schan.send_stderr('This is on stderr.\n') + schan.close() + + chan.set_combine_stderr(True) + f = chan.makefile() + self.assertEquals('Hello there.\n', f.readline()) + self.assertEquals('This is on stderr.\n', f.readline()) + self.assertEquals('', f.readline()) + + def test_C_invoke_shell(self): + """ + verify that invoke_shell() does something reasonable. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + self.tc.auth_password(username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + chan = self.tc.open_session() + self.assert_(chan.invoke_shell()) + schan = self.ts.accept(1.0) + chan.send('communist j. cat\n') + f = schan.makefile() + self.assertEquals('communist j. cat\n', f.readline()) + chan.close() + self.assertEquals('', f.readline()) + + def test_D_exit_status(self): + """ + verify that get_exit_status() works. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + self.tc.auth_password(username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + chan = self.tc.open_session() + schan = self.ts.accept(1.0) + self.assert_(chan.exec_command('yes')) + schan.send('Hello there.\n') + # trigger an EOF + schan.shutdown_read() + schan.shutdown_write() + schan.send_exit_status(23) + schan.close() + + f = chan.makefile() + self.assertEquals('Hello there.\n', f.readline()) + self.assertEquals('', f.readline()) + self.assertEquals(23, chan.recv_exit_status()) + chan.close() + + def test_E_select(self): + """ + verify that select() on a channel works. + """ + 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.ts.start_server(event, server) + self.tc.ultra_debug = True + self.tc.connect(hostkey=public_host_key) + self.tc.auth_password(username='slowdive', password='pygmalion') + event.wait(1.0) + self.assert_(event.isSet()) + self.assert_(self.ts.is_active()) + + chan = self.tc.open_session() + self.assert_(chan.invoke_shell()) + schan = self.ts.accept(1.0) + + # nothing should be ready + r, w, e = select.select([chan], [], [], 0.1) + self.assertEquals([], r) + self.assertEquals([], w) + self.assertEquals([], e) + + schan.send('hello\n') + + # something should be ready now (give it 1 second to appear) + for i in range(10): + r, w, e = select.select([chan], [], [], 0.1) + if chan in r: + break + time.sleep(0.1) + self.assertEquals([chan], r) + self.assertEquals([], w) + self.assertEquals([], e) + + self.assertEquals('hello\n', chan.recv(6)) + + # and, should be dead again now + r, w, e = select.select([chan], [], [], 0.1) + self.assertEquals([], r) + self.assertEquals([], w) + self.assertEquals([], e) + + schan.close() + + # detect eof? + for i in range(10): + r, w, e = select.select([chan], [], [], 0.1) + if chan in r: + break + time.sleep(0.1) + self.assertEquals([chan], r) + self.assertEquals([], w) + self.assertEquals([], e) + self.assertEquals('', chan.recv(16)) + + chan.close() + + def test_F_renegotiate(self): + """ + verify that a transport can correctly renegotiate mid-stream. + """ + 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.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()) + + self.tc.packetizer.REKEY_BYTES = 16384 + + chan = self.tc.open_session() + self.assert_(chan.exec_command('yes')) + schan = self.ts.accept(1.0) + + self.assertEquals(self.tc.H, self.tc.session_id) + for i in range(20): + chan.send('x' * 1024) + chan.close() + + # allow a few seconds for the rekeying to complete + for i in xrange(50): + if self.tc.H != self.tc.session_id: + break + time.sleep(0.1) + self.assertNotEquals(self.tc.H, self.tc.session_id) + + schan.close() + + def test_G_compression(self): + """ + verify that zlib compression is basically working. + """ + 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) + self.ts.get_security_options().compression = ('zlib',) + self.tc.get_security_options().compression = ('zlib',) + event = threading.Event() + server = NullServer() + 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()) + + chan = self.tc.open_session() + self.assert_(chan.exec_command('yes')) + schan = self.ts.accept(1.0) + + bytes = self.tc.packetizer._Packetizer__sent_bytes + chan.send('x' * 1024) + bytes2 = self.tc.packetizer._Packetizer__sent_bytes + # tests show this is actually compressed to *52 bytes*! including packet overhead! nice!! :) + self.assert_(bytes2 - bytes < 1024) + + chan.close() + schan.close() diff --git a/tests/test_util.py b/tests/test_util.py new file mode 100644 index 0000000..fa8c029 --- /dev/null +++ b/tests/test_util.py @@ -0,0 +1,80 @@ +#!/usr/bin/python + +# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net> +# +# This file is part of paramiko. +# +# Paramiko is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Paramiko; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +""" +Some unit tests for utility functions. +""" + +import cStringIO +import unittest +from Crypto.Hash import SHA +import paramiko.util + + +test_config_file = """\ +Host * + User robey + IdentityFile =~/.ssh/id_rsa + +# comment +Host *.example.com + \tUser bjork +Port=3333 +Host * + \t \t Crazy something dumb +Host spoo.example.com +Crazy something else +""" + + +class UtilTest (unittest.TestCase): + + K = 14730343317708716439807310032871972459448364195094179797249681733965528989482751523943515690110179031004049109375612685505881911274101441415545039654102474376472240501616988799699744135291070488314748284283496055223852115360852283821334858541043710301057312858051901453919067023103730011648890038847384890504L + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_1_parse_config(self): + global test_config_file + f = cStringIO.StringIO(test_config_file) + config = paramiko.util.parse_ssh_config(f) + self.assertEquals(config, [ {'identityfile': '~/.ssh/id_rsa', 'host': '*', 'user': 'robey', + 'crazy': 'something dumb '}, + {'host': '*.example.com', 'user': 'bjork', 'port': '3333'}, + {'host': 'spoo.example.com', 'crazy': 'something else'}]) + + def test_2_host_config(self): + global test_config_file + f = cStringIO.StringIO(test_config_file) + config = paramiko.util.parse_ssh_config(f) + c = paramiko.util.lookup_ssh_host_config('irc.danger.com', config) + self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'robey', 'crazy': 'something dumb '}) + c = paramiko.util.lookup_ssh_host_config('irc.example.com', config) + self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'bjork', 'crazy': 'something dumb ', 'port': '3333'}) + c = paramiko.util.lookup_ssh_host_config('spoo.example.com', config) + self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'bjork', 'crazy': 'something else', 'port': '3333'}) + + def test_3_generate_key_bytes(self): + x = paramiko.util.generate_key_bytes(SHA, 'ABCDEFGH', 'This is my secret passphrase.', 64) + hex = ''.join(['%02x' % ord(c) for c in x]) + self.assertEquals(hex, '9110e2f6793b69363e58173e9436b13a5a4b339005741d5c680e505f57d871347b4239f14fb5c46e857d5e100424873ba849ac699cea98d729e57b3e84378e8b') |