Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

Download
ActivePython
INSTALL>
pypm install sshpool

How to install sshpool

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install sshpool
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
Windows (64-bit)
Mac OS X (10.5+)
0.1.2 Available View build log
Linux (32-bit)
0.1.2 Available View build log
Linux (64-bit)
0.1.2 Available View build log
 
Author
License
BSD
Imports
Lastest release
version 0.1.2 on Jul 20th, 2013
SSHPool
=======

Manage persistent pool of SSH channels accessible via RESTful API and command line utility

![Build status](https://api.travis-ci.org/abhinavsingh/sshpool.png)

Install
-------

To install sshpool, simply:

    $ pip install sshpool

This will add two executable scripts `sshpoold` and `sshpoolctl` inside your python environment bin folder.

sshpoold
--------

`sshpoold` manages SSH channels and allow communication via RESTful API

    $ sshpoold -h
    
    usage: sshpoold [-h] [--channel CHANNEL] [--host HOST] [--port PORT]
    
    optional arguments:
      -h, --help         show this help message and exit
      --channel CHANNEL  alias://user:pass@host:port
      --host HOST        SSHPool interface (default: 127.0.0.1)
      --port PORT        SSHPool listening port (default: 8877)

Start `sshpoold` daemon:

    $ sshpoold
    [2013-07-16 22:12:46,291]  * Running on http://127.0.0.1:8877/

Optionally, `sshpoold` daemon can also be started with one or more SSH channel DSN:

    $ sshpoold --channel=localhost://localhost
    [2013-07-16 22:14:31,325] connecting to localhost://abhinavsingh:None@localhost:22
    [2013-07-16 22:14:31,331]  * Running on http://127.0.0.1:8877/
    [2013-07-16 22:14:31,815] connected to localhost://abhinavsingh:None@localhost:22

Channel DSN
-----------

[DSN](http://en.wikipedia.org/wiki/Data_source_name) string describes a connection to SSH server. Format `alias://user:pass@host:port`:

Attribute | Description
--- | ---
alias | *(required)* An alias to use with `sshpoolctl` and RESTful API's
user | Defaults to current system user
pass | If not provided `sshpoold` will attempt to use public keys for authentication
host | *(required)* IP Address or FQDN
port | Defaults to 22

REST API
--------

Resource | Method | Parameters | Response | Description
--- | --- | --- | --- | ---
/channels | GET | - | JSON dict | Retrieve meta info for all SSH channels
/channels/<alias> | GET | - | JSON dict | Retrieve meta info for a specific SSH channel
/channels | POST | DSN | "OK" | Start a new SSH channel
/channels/<alias> | POST | command | JSON dict | Execute arbitrary command over a SSH channel
/channels/<alias> | DELETE | - | "OK" | Terminate a SSH channel

Channel meta info dictionary consists of following attributes:

Attribute | Description
--- | ---
user | username used for SSH channel
pass | None or string
host | IP Address or FQDN
port | SSH server port used for connection
is_alive | boolean
start_time | epoch timestamp of when SSH channel was started

Command output dictionary consists of following attributes:

Attribute | Description
--- | ---
stdout | stdout stream
stderr | stderr stream
exit_code | exit code of executed command
exception | available if command execution failed internally

sshpoolctl
----------

`sshpoolctl` provides an interactive shell to communicate with `sshpoold` daemon

    $ sshpoolctl -h
    
    usage: sshpoolctl [-h] [--host HOST] [--port PORT]
    
    optional arguments:
      -h, --help   show this help message and exit
      --host HOST  SSHPool interface (default: 127.0.0.1)
      --port PORT  SSHPool listening port (default: 8877)

Start sshpoolctl utility:

    $ sshpoolctl 
    ==> Press Ctrl-C to exit <==
    sshpool> help
    
    Documented commands (type help ):
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    exit  help  quit  run  start  status  stop

Run arbitrary shell commands:
    
    sshpool> help run
    run     Run arbitrary commands over a channel
    
    sshpool> run localhost echo hello world
    hello world
    
    sshpool> run localhost pwd
    /Users/abhinavsingh

Start a new SSH channel:

    sshpool> help start
    start  Add a new channel
    
    sshpool> start local://localhost
    OK

View status of all SSH channels:

    sshpool> help status
    status      View status of started channels
    
    sshpool> status
    local       abhinavsingh:None@localhost:22  running 53
    localhost   abhinavsingh:None@localhost:22  running 449

Stop a SSH channel:

    sshpool> help stop
    stop     Stop an existing channel
    
    sshpool> stop localhost
    OK
    
    sshpool> status
    local       abhinavsingh:None@localhost:22  running 154

Subscribe to package updates

Last updated Jul 20th, 2013

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.