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.0.tar.gz
(12.7 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.0-py3-none-any.whl
(12.7 kB
view details)
File details
Details for the file ezssh-0.1.0.tar.gz.
File metadata
- Download URL: ezssh-0.1.0.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eaae295ad8257d31c92204207c9be1937339163b72b39685e87b524c16e6625
|
|
| MD5 |
82e884b23c4d7ec9a2d4a8a50372a95d
|
|
| BLAKE2b-256 |
844fc8e7540f038ebdb7ad5284881e9e4890fa140e89b110f892f283e984629f
|
File details
Details for the file ezssh-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ezssh-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 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 |
7bb62565baecf06806a3493676a322adb508b9f34fa5e383aeaba87ae26f736f
|
|
| MD5 |
b7195dd4945e8adcfae19081bb8e19ff
|
|
| BLAKE2b-256 |
2f0640b0325dcbca92dc4e3fe96e0fb1090d2e54b132bfa99a6e0c07f6d36e7b
|