An easy to use libssh wrapper to execute commands on a remote server via SSH with Python
Project description
pystassh
An easy to use libssh wrapper to execute commands on a remote server via SSH with Python.
- Author: Julien CHAUMONT (https://julienc.io)
- Version: 1.2.2
- Date: 2022-05-17
- Licence: MIT
- Url: https://julienc91.github.io/pystassh/
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a1afd630f4275ac4ebbe163452b079d4ec82d83d26a0fb5383be40b88ff4a47 |
|
MD5 | 0b97193096638b436fdf9bdf1f7243e0 |
|
BLAKE2b-256 | f13a939761aa3df7ba1d4d22476002bee853edd6b28f2bec3951c734ad959715 |