A lightweight, ergonomic SSH library.
Project description
EZSSH
An Ergonomic and Lightweight SSH Library.
Installation
pip install ezssh
Quick Start
from ezssh import SSHRunner, Command, BatchPolicy
# As of v0.0.9, SSHRunner will auto-add on new host. Disable for added security.
with SSHRunner(
host="10.0.0.5",
username="ubuntu",
password="secret", # password as null will attempt pubkey
missing_host_key_policy='autoadd'
) as runner:
result = runner.run("uname -a")
print(result.stdout)
batch = runner.run_batch(
[
"whoami",
Command("systemctl is-active ssh", sudo=True, name="ssh_status"),
],
policy=BatchPolicy(stop_on_failure=False),
)
for r in batch.results:
print(r.command.name, r.exit_status)
Batch Operations
batch processing of cli commands is also available. To execute a chain of prepared commands:
batch = runner.run_batch(
[
Command("mkdir -p /tmp/example"),
Command("touch /tmp/example/file.txt"),
Command("false", name="intentional_failure"),
Command("echo still runs"),
],
policy=BatchPolicy(stop_on_failure=False),
)
# Each returns an exit status, stdout/stderror, start/end and duration.
Authentication Behavior
Password auth uses password only, agent and key discovery are opt-in.
SSHRunner(
host="example.com",
username="user",
password="secret",
allow_agent=False,
look_for_keys=False,
)
When to Use ezssh
Use ezssh if you need:
- Programmatic SSH execution embedded in a Python application
- Deterministic batch execution with structured results
- Explicit authentication behavior
- Lightweight automation without orchestration frameworks
Do not use ezssh if you need:
- Configuration management
- Long-lived agents
- Inventory management
- Declarative state convergence
How ezssh Compares
| Tool | ezssh | Paramiko | Fabric | Ansible |
|---|---|---|---|---|
| Embedded in apps | ✅ | ⚠️ | ⚠️ | ❌ |
| Batch semantics | ✅ | ❌ | ⚠️ | ✅ |
| Explicit auth | ✅ | ❌ | ❌ | ⚠️ |
| Minimal deps | ✅ | ✅ | ❌ | ❌ |
| YAML required | ❌ | ❌ | ❌ | ✅ |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ezssh-0.1.2.tar.gz
(13.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ezssh-0.1.2-py3-none-any.whl
(13.0 kB
view details)
File details
Details for the file ezssh-0.1.2.tar.gz.
File metadata
- Download URL: ezssh-0.1.2.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08b1cb57e6da6d98029303efc5ec34ae254efca1d1d5f8af380272ec1eab1ae8
|
|
| MD5 |
d110466840f89ee975c963c3f160a26e
|
|
| BLAKE2b-256 |
d2bdf171eb85fbc77f465bd926706b993bd6bd8cfef7c583c3e65057d2178a26
|
File details
Details for the file ezssh-0.1.2-py3-none-any.whl.
File metadata
- Download URL: ezssh-0.1.2-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9e57597cf3d437c1cbecd1593c0aa78067d3663e9e6978d75e3c8456707d693
|
|
| MD5 |
06a542b66f0b843f77a1fc757ddb853a
|
|
| BLAKE2b-256 |
2337bfc6adfd2b3fdc3afbab1ab4ef2029dc02da5b4257317a77994e98832576
|