Skip to main content

An easy to use libssh wrapper to execute commands on a remote server via SSH with Python

Project description

Build codecov Documentation

pystassh

An easy to use libssh wrapper to execute commands on a remote server via SSH with Python.

Installation

Just use pip to install the package:

pip install pystassh

pystassh is working with python 3+ and pypy.

Requirements

pystassh is using libssh to work, you will have to install the library before using pystassh. Only version 0.7.3 was used during the development, but versions 0.5 and above should work fine as well with pystassh. Visit libssh's official website for more information. libffi-dev is also required by the cffi module.

On Debian and Ubuntu:

apt-get install libssh-4 libffi-dev

On Fedora:

dnf install libssh libffi-devel

Examples

Establishing a connection:

>>> from pystassh import Session
>>> # With default private key
>>> session = Session('remote_host.org', username='user')
>>> # With username and password
>>> session = Session('remote_host.org', username='foo', password='bar')
>>> # With specific private key and a passphrase
>>> session = Session('remote_host.org', privkey_file='/home/user/.ssh/my_key', passphrase='baz')

Running simple commands:

>>> from pystassh import Session
>>> with Session('remote_host.org', username='user') as ssh_session:
...     res = ssh_session.execute('whoami')
>>> res.stdout
'foo'

Handling errors:

>>> from pystassh import Session
>>> with Session('remote_host.org', username='user') as ssh_session:
...     res = ssh_session.execute('whoam')
>>> res.stderr
'bash: whoam : command not found'

Running multiple commands:

>>> from pystassh import Session
>>> with Session('remote_host.org', username='user') as ssh_session:
...     ssh_session.execute('echo "bar" > /tmp/foo')
...     res = ssh_session.execute('cat /tmp/foo')
>>> res.stdout
'bar'

Using a session without a with block:

>>> from pystassh import Session
>>> ssh_session = Session('remote_host.org', username='user')
>>> ssh_session.connect()
>>> res = ssh_session.execute('whoami')
>>> res.stdout
'foo'
>>> ssh_session.disconnect()

Using a shell:

>>> from pystassh import Session
>>> with Session('remote_host.org', username='user') as ssh_session:
...     channel = ssh_session.channel
...     with channel:
...         channel.request_shell(request_pty=False)
...         # non blocking read to flush the motd, if there is one
...         channel.read_nonblocking(1024)
...         channel.write("export foo=42;\n")
...         channel.write("echo $foo;\n")
...         channel.read(2048)
b'42\n'

Documentation

The complete documentation is available at: http://pystassh.readthedocs.org/en/latest/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pystassh-1.2.2-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file pystassh-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: pystassh-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for pystassh-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2a1afd630f4275ac4ebbe163452b079d4ec82d83d26a0fb5383be40b88ff4a47
MD5 0b97193096638b436fdf9bdf1f7243e0
BLAKE2b-256 f13a939761aa3df7ba1d4d22476002bee853edd6b28f2bec3951c734ad959715

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page