This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description
[![license](https://img.shields.io/github/license/bucknerns/sshaolin.svg?maxAge=2592000)](https://github.com/bucknerns/sshaolin/blob/master/LICENSE)
[![GitHub issues](https://img.shields.io/github/issues/bucknerns/sshaolin.svg)](https://github.com/bucknerns/sshaolin/issues)

# SSHaolin: SSH for Ninjas

Tired of dealing with python SSH interfaces that are far too complicated!
Want a nice simple python SSH interface that just works!
SSHaolin aims to give you that experience and more!
Built on top of [paramiko](https://github.com/paramiko/paramiko)
SSHaolin is the python interface that makes it simple to write that ssh script
you've been meaning to do for years!

Built into the SSHaolin core is verbose logging that shows you every
command that is running along with the ability to decipher both stdout and
stderr straight from your logs!

Also included are interfaces for both persistent ssh sessions (_SSHShell_) and
sftp session (_SFTPShell_). Both are easy to use and provide a great speed
boost as opposed to connecting and reconnecting for every action!

Have an issue? Submit it [here](https://github.com/bucknerns/sshaolin/issues)!

## Installation:

Recommended:
```
$ pip install git+https://github.com/bucknerns/sshaolin
```

## Requirements:

* [paramiko](https://github.com/paramiko/paramiko)
* [PySocks](https://github.com/Anorov/PySocks)

## Features:

* Easily send commands over ssh!
* Creating persistent ssh sessions!
* Creating persistent sftp sessions!
* Easy connection cleanup! (No more manual closing!)

## Examples:

Running `ls -ltr` on server `foo` as user `bar` with password `blah`
```python
from sshaolin.client import SSHClient

client = SSHClient(hostname='foo', username='bar', password='blah')
response = client.execute_command('ls -ltr')

# It comes with an exit status!
print(response.exit_status)

# It comes with stdout!
print(response.stdout)

# It comes with stderr!
print(response.stderr)
```

Transferring local file `example.txt` to server `foo` as user `bar` with RSA
file authentication `/home/bar/.ssh/id_rsa` at `/usr/local/src/example.txt` and
`/usr/local/src/example2.txt`
```python
from sshaolin.client import SSHClient

client = SSHClient(
hostname='foo', username='bar', key_filename='/home/bar/.ssh/id_rsa')
with open('example.txt', 'r') as fp:
data = fp.read()

# Context managers to ensure the closing of a connection!
with client.create_sftp() as sftp:
sftp.write_file(data=data, remote_path='/usr/local/src/example.txt')

# If you don't want to mess with context managers you can store it as a
# variable! SSHaolin will clean it up when the program exits!
sftp = client.create_sftp()
sftp.write_file(data=data, remote_path='/usr/local/src/example2.txt')
```

Sudoing to `privelegeduser1`, cd'ing to `/usr/local/executables` and running
`perl randomperlscript.pl`
```python
from sshaolin.client import SSHClient

client = SSHClient(
hostname='foo', username='bar', key_filename='/home/bar/.ssh/id_rsa')
shell = client.create_shell()
# No more need to do hacky workarounds to sudo to another user!
shell.execute_command('sudo su privelegeduser1')
shell.execute_command('cd /usr/local/executables')
perl_response = shell.execute_command('perl randomperlscript.pl')
shell.close() # We can close things manually as well!

if perl_response.exit_status == 0:
print('Success!')
else:
raise Exception('Failed to execute randomperlscript.pl correctly')
```

## Contributing:
1. Fork the [repository](https://github.com/bucknerns/sshaolin)!
2. Commit some stuff!
3. Submit a pull request!
Release History

Release History

0.0.4

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
sshaolin-0.0.4-py2.py3-none-any.whl (21.8 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Dec 7, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting