python libraries for ssh handling python libraries for ssh handling python python

python libraries for ssh handling


Since you're not doing anything special at the protocol level, you presumably don't need the protocol to be entirely implemented in python, and you could simply run ssh/scp commands using the subprocess module.

import subprocesssubprocess.check_call(['ssh', 'server', 'command'])subprocess.check_call(['scp', 'server:file', 'file'])


Libraries, Wrappers:

  1. http://www.lag.net/paramiko/

    #!/usr/bin/env pythonimport paramikofrom contextlib import contextmanagerhost = '192.168.10.142'username = 'slacker'password = 'password'def create_ssh(host=host, username=username, password=password):    ssh = paramiko.SSHClient()    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())     try:       print "creating connection"       ssh.connect(host, username=username, password=password)       print "connected"       yield ssh    finally:       print "closing connection"       ssh.close()       print "closed"

1) utilizes the 2) and provides some higher level functions. If the latter suit your requirements, I'd suggest trying out 1)


Update: 1) is gone now (2017-09-12)

  1. http://media.commandline.org.uk/code/ssh.txt (example usage: https://zeth.net/archive/2008/05/29/sftp-python-really-simple-ssh/)

    s = ssh.Connection('example.com', 'warrior', password = 'lennalenna')s.put('/home/warrior/hello.txt', '/home/zombie/textfiles/report.txt')s.get('/var/log/strange.log', '/home/warrior/serverlog.txt')s.execute('ls -l')s.close()

Note: The code examples above are provided just for getting an impression; the code is not tested.


The one feature that none of the above-discussed libraries provide is a concurrent connection to multiple servers.In today's age where system admins need to run commands on hundreds of servers,libraries which can handle parallel command execution are very important. The two libraries that I know of are :

  1. Trigger

  2. Parallel-SSH

Trigger is much more than a SSH wrapper and more of a networking library,it utilizes the Twisted core API to enable concurrent I/O operations.

Parallel-SSH is a library which is thin wrapper over Paramiko but uses Gevent under the hood to enable concurrent I/O operations