ssh-handler 1.1.0__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ssh_handler-1.1.0/ssh_handler.egg-info → ssh_handler-1.2.0}/PKG-INFO +23 -23
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/README.md +18 -10
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/pyproject.toml +10 -8
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/__init__.py +1 -1
- {ssh_handler-1.1.0 → ssh_handler-1.2.0/ssh_handler.egg-info}/PKG-INFO +23 -23
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler.egg-info/requires.txt +4 -16
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/LICENSE +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/setup.cfg +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/__main__.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/cli.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/config.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/core.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/credentials.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/exceptions.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/ftp.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/openssh/OpenSSH-ARM64.zip +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/openssh/OpenSSH-Win32.zip +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/openssh/OpenSSH-Win64.zip +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/pool.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/pyqt_worker.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/results.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/serial_handler.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/setup_openssh_server.ps1 +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler/winrm_bootstrap.py +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler.egg-info/SOURCES.txt +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler.egg-info/dependency_links.txt +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler.egg-info/entry_points.txt +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/ssh_handler.egg-info/top_level.txt +0 -0
- {ssh_handler-1.1.0 → ssh_handler-1.2.0}/tests/test_offline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-handler
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Extensive SSH/SFTP/SCP/FTP handler built on Paramiko, for test automation, CLIs and PyQt5 tools.
|
|
5
5
|
Author: ssh-handler contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,22 +14,14 @@ Requires-Python: >=3.8
|
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: paramiko>=3.0
|
|
17
|
-
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
|
|
20
|
-
Requires-Dist:
|
|
17
|
+
Requires-Dist: scp>=0.14
|
|
18
|
+
Requires-Dist: pyserial>=3.5
|
|
19
|
+
Requires-Dist: keyring>=23.0
|
|
20
|
+
Requires-Dist: pywinrm>=0.4.3
|
|
21
21
|
Provides-Extra: gui
|
|
22
22
|
Requires-Dist: PyQt5>=5.15; extra == "gui"
|
|
23
|
-
Provides-Extra: winrm
|
|
24
|
-
Requires-Dist: pywinrm>=0.4.3; extra == "winrm"
|
|
25
|
-
Provides-Extra: serial
|
|
26
|
-
Requires-Dist: pyserial>=3.5; extra == "serial"
|
|
27
23
|
Provides-Extra: all
|
|
28
|
-
Requires-Dist: keyring>=23.0; extra == "all"
|
|
29
|
-
Requires-Dist: scp>=0.14; extra == "all"
|
|
30
24
|
Requires-Dist: PyQt5>=5.15; extra == "all"
|
|
31
|
-
Requires-Dist: pywinrm>=0.4.3; extra == "all"
|
|
32
|
-
Requires-Dist: pyserial>=3.5; extra == "all"
|
|
33
25
|
Dynamic: license-file
|
|
34
26
|
|
|
35
27
|
# ssh-handler
|
|
@@ -89,15 +81,17 @@ behind one object that:
|
|
|
89
81
|
## Install
|
|
90
82
|
|
|
91
83
|
```bash
|
|
92
|
-
pip install ssh-handler
|
|
93
|
-
|
|
94
|
-
pip install "ssh-handler[
|
|
95
|
-
pip install "ssh-handler[gui]" # + PyQt5 (the GUI worker)
|
|
96
|
-
pip install "ssh-handler[all]" # everything
|
|
84
|
+
pip install ssh-handler # everything: SSH, SFTP, SCP, FTP, serial,
|
|
85
|
+
# credential vault, WinRM bootstrap
|
|
86
|
+
pip install "ssh-handler[gui]" # also installs PyQt5 for the GUI worker
|
|
97
87
|
```
|
|
98
88
|
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
**Batteries included.** A plain `pip install ssh-handler` pulls in `paramiko`,
|
|
90
|
+
`scp`, `pyserial`, `keyring`, and `pywinrm`, so SSH, SFTP/SCP/FTP transfers,
|
|
91
|
+
serial/COM ports, confidential credential storage, and the WinRM bootstrap all
|
|
92
|
+
work out of the box. Only **PyQt5** is optional (`[gui]`), because it's a large
|
|
93
|
+
GUI toolkit you only need when building a GUI — forcing it would bloat headless
|
|
94
|
+
and CI installs.
|
|
101
95
|
|
|
102
96
|
## Quick start
|
|
103
97
|
|
|
@@ -137,7 +131,7 @@ with SSHHandler(SSHConfig(host="10.0.0.5", username="root", password="pw")) as s
|
|
|
137
131
|
with **live regex matching**, a per-line/per-match callback, and **tee to a
|
|
138
132
|
local file**, all built in.
|
|
139
133
|
|
|
140
|
-
**Serial / COM ports** (`SerialHandler`,
|
|
134
|
+
**Serial / COM ports** (`SerialHandler`, included by default)
|
|
141
135
|
- `list_serial_ports()`, `open`/`close`, `write` / `write_line`.
|
|
142
136
|
- `iter_lines()` and `stream(...)` — same live streaming + match + save-to-file
|
|
143
137
|
model as SSH, for device consoles.
|
|
@@ -298,8 +292,14 @@ To stop a stream from another thread (e.g. a GUI Stop button), pass a
|
|
|
298
292
|
|
|
299
293
|
## Serial / COM ports
|
|
300
294
|
|
|
301
|
-
Same streaming + match + save model for device serial consoles (
|
|
302
|
-
|
|
295
|
+
Same streaming + match + save model for device serial consoles (included by
|
|
296
|
+
default — no extra install).
|
|
297
|
+
|
|
298
|
+
> **Important — where the COM port physically is.** `pyserial` opens a *local*
|
|
299
|
+
> port, so this runs on the machine the device is **plugged into**. If the device
|
|
300
|
+
> is on your laptop, run it on your laptop. If it's on the remote/RDP machine,
|
|
301
|
+
> either run the script there, or — on Linux targets — stream the device file
|
|
302
|
+
> over SSH instead: `ssh.stream("cat /dev/ttyUSB0", match=..., save_to=...)`.
|
|
303
303
|
|
|
304
304
|
```python
|
|
305
305
|
from ssh_handler import SerialHandler, list_serial_ports
|
|
@@ -55,15 +55,17 @@ behind one object that:
|
|
|
55
55
|
## Install
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
pip install ssh-handler
|
|
59
|
-
|
|
60
|
-
pip install "ssh-handler[
|
|
61
|
-
pip install "ssh-handler[gui]" # + PyQt5 (the GUI worker)
|
|
62
|
-
pip install "ssh-handler[all]" # everything
|
|
58
|
+
pip install ssh-handler # everything: SSH, SFTP, SCP, FTP, serial,
|
|
59
|
+
# credential vault, WinRM bootstrap
|
|
60
|
+
pip install "ssh-handler[gui]" # also installs PyQt5 for the GUI worker
|
|
63
61
|
```
|
|
64
62
|
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
**Batteries included.** A plain `pip install ssh-handler` pulls in `paramiko`,
|
|
64
|
+
`scp`, `pyserial`, `keyring`, and `pywinrm`, so SSH, SFTP/SCP/FTP transfers,
|
|
65
|
+
serial/COM ports, confidential credential storage, and the WinRM bootstrap all
|
|
66
|
+
work out of the box. Only **PyQt5** is optional (`[gui]`), because it's a large
|
|
67
|
+
GUI toolkit you only need when building a GUI — forcing it would bloat headless
|
|
68
|
+
and CI installs.
|
|
67
69
|
|
|
68
70
|
## Quick start
|
|
69
71
|
|
|
@@ -103,7 +105,7 @@ with SSHHandler(SSHConfig(host="10.0.0.5", username="root", password="pw")) as s
|
|
|
103
105
|
with **live regex matching**, a per-line/per-match callback, and **tee to a
|
|
104
106
|
local file**, all built in.
|
|
105
107
|
|
|
106
|
-
**Serial / COM ports** (`SerialHandler`,
|
|
108
|
+
**Serial / COM ports** (`SerialHandler`, included by default)
|
|
107
109
|
- `list_serial_ports()`, `open`/`close`, `write` / `write_line`.
|
|
108
110
|
- `iter_lines()` and `stream(...)` — same live streaming + match + save-to-file
|
|
109
111
|
model as SSH, for device consoles.
|
|
@@ -264,8 +266,14 @@ To stop a stream from another thread (e.g. a GUI Stop button), pass a
|
|
|
264
266
|
|
|
265
267
|
## Serial / COM ports
|
|
266
268
|
|
|
267
|
-
Same streaming + match + save model for device serial consoles (
|
|
268
|
-
|
|
269
|
+
Same streaming + match + save model for device serial consoles (included by
|
|
270
|
+
default — no extra install).
|
|
271
|
+
|
|
272
|
+
> **Important — where the COM port physically is.** `pyserial` opens a *local*
|
|
273
|
+
> port, so this runs on the machine the device is **plugged into**. If the device
|
|
274
|
+
> is on your laptop, run it on your laptop. If it's on the remote/RDP machine,
|
|
275
|
+
> either run the script there, or — on Linux targets — stream the device file
|
|
276
|
+
> over SSH instead: `ssh.stream("cat /dev/ttyUSB0", match=..., save_to=...)`.
|
|
269
277
|
|
|
270
278
|
```python
|
|
271
279
|
from ssh_handler import SerialHandler, list_serial_ports
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ssh-handler"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.2.0"
|
|
8
8
|
description = "Extensive SSH/SFTP/SCP/FTP handler built on Paramiko, for test automation, CLIs and PyQt5 tools."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -20,16 +20,18 @@ classifiers = [
|
|
|
20
20
|
"Intended Audience :: Developers",
|
|
21
21
|
]
|
|
22
22
|
dependencies = [
|
|
23
|
-
"paramiko>=3.0",
|
|
23
|
+
"paramiko>=3.0", # SSH / SFTP
|
|
24
|
+
"scp>=0.14", # SCP-protocol transfers
|
|
25
|
+
"pyserial>=3.5", # serial / COM-port handler
|
|
26
|
+
"keyring>=23.0", # confidential password storage (OS vault)
|
|
27
|
+
"pywinrm>=0.4.3", # WinRM bootstrap (enable sshd on Windows w/o SSH)
|
|
24
28
|
]
|
|
25
29
|
|
|
26
30
|
[project.optional-dependencies]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
gui = ["PyQt5>=5.15"]
|
|
30
|
-
|
|
31
|
-
serial = ["pyserial>=3.5"] # serial / COM-port handler
|
|
32
|
-
all = ["keyring>=23.0", "scp>=0.14", "PyQt5>=5.15", "pywinrm>=0.4.3", "pyserial>=3.5"]
|
|
31
|
+
# Only PyQt5 stays optional: it's a large GUI toolkit you only need when
|
|
32
|
+
# building a GUI, and forcing it would bloat headless/CI installs.
|
|
33
|
+
gui = ["PyQt5>=5.15"]
|
|
34
|
+
all = ["PyQt5>=5.15"]
|
|
33
35
|
|
|
34
36
|
[project.scripts]
|
|
35
37
|
ssh-handler = "ssh_handler.cli:main"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-handler
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Extensive SSH/SFTP/SCP/FTP handler built on Paramiko, for test automation, CLIs and PyQt5 tools.
|
|
5
5
|
Author: ssh-handler contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,22 +14,14 @@ Requires-Python: >=3.8
|
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: paramiko>=3.0
|
|
17
|
-
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
|
|
20
|
-
Requires-Dist:
|
|
17
|
+
Requires-Dist: scp>=0.14
|
|
18
|
+
Requires-Dist: pyserial>=3.5
|
|
19
|
+
Requires-Dist: keyring>=23.0
|
|
20
|
+
Requires-Dist: pywinrm>=0.4.3
|
|
21
21
|
Provides-Extra: gui
|
|
22
22
|
Requires-Dist: PyQt5>=5.15; extra == "gui"
|
|
23
|
-
Provides-Extra: winrm
|
|
24
|
-
Requires-Dist: pywinrm>=0.4.3; extra == "winrm"
|
|
25
|
-
Provides-Extra: serial
|
|
26
|
-
Requires-Dist: pyserial>=3.5; extra == "serial"
|
|
27
23
|
Provides-Extra: all
|
|
28
|
-
Requires-Dist: keyring>=23.0; extra == "all"
|
|
29
|
-
Requires-Dist: scp>=0.14; extra == "all"
|
|
30
24
|
Requires-Dist: PyQt5>=5.15; extra == "all"
|
|
31
|
-
Requires-Dist: pywinrm>=0.4.3; extra == "all"
|
|
32
|
-
Requires-Dist: pyserial>=3.5; extra == "all"
|
|
33
25
|
Dynamic: license-file
|
|
34
26
|
|
|
35
27
|
# ssh-handler
|
|
@@ -89,15 +81,17 @@ behind one object that:
|
|
|
89
81
|
## Install
|
|
90
82
|
|
|
91
83
|
```bash
|
|
92
|
-
pip install ssh-handler
|
|
93
|
-
|
|
94
|
-
pip install "ssh-handler[
|
|
95
|
-
pip install "ssh-handler[gui]" # + PyQt5 (the GUI worker)
|
|
96
|
-
pip install "ssh-handler[all]" # everything
|
|
84
|
+
pip install ssh-handler # everything: SSH, SFTP, SCP, FTP, serial,
|
|
85
|
+
# credential vault, WinRM bootstrap
|
|
86
|
+
pip install "ssh-handler[gui]" # also installs PyQt5 for the GUI worker
|
|
97
87
|
```
|
|
98
88
|
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
**Batteries included.** A plain `pip install ssh-handler` pulls in `paramiko`,
|
|
90
|
+
`scp`, `pyserial`, `keyring`, and `pywinrm`, so SSH, SFTP/SCP/FTP transfers,
|
|
91
|
+
serial/COM ports, confidential credential storage, and the WinRM bootstrap all
|
|
92
|
+
work out of the box. Only **PyQt5** is optional (`[gui]`), because it's a large
|
|
93
|
+
GUI toolkit you only need when building a GUI — forcing it would bloat headless
|
|
94
|
+
and CI installs.
|
|
101
95
|
|
|
102
96
|
## Quick start
|
|
103
97
|
|
|
@@ -137,7 +131,7 @@ with SSHHandler(SSHConfig(host="10.0.0.5", username="root", password="pw")) as s
|
|
|
137
131
|
with **live regex matching**, a per-line/per-match callback, and **tee to a
|
|
138
132
|
local file**, all built in.
|
|
139
133
|
|
|
140
|
-
**Serial / COM ports** (`SerialHandler`,
|
|
134
|
+
**Serial / COM ports** (`SerialHandler`, included by default)
|
|
141
135
|
- `list_serial_ports()`, `open`/`close`, `write` / `write_line`.
|
|
142
136
|
- `iter_lines()` and `stream(...)` — same live streaming + match + save-to-file
|
|
143
137
|
model as SSH, for device consoles.
|
|
@@ -298,8 +292,14 @@ To stop a stream from another thread (e.g. a GUI Stop button), pass a
|
|
|
298
292
|
|
|
299
293
|
## Serial / COM ports
|
|
300
294
|
|
|
301
|
-
Same streaming + match + save model for device serial consoles (
|
|
302
|
-
|
|
295
|
+
Same streaming + match + save model for device serial consoles (included by
|
|
296
|
+
default — no extra install).
|
|
297
|
+
|
|
298
|
+
> **Important — where the COM port physically is.** `pyserial` opens a *local*
|
|
299
|
+
> port, so this runs on the machine the device is **plugged into**. If the device
|
|
300
|
+
> is on your laptop, run it on your laptop. If it's on the remote/RDP machine,
|
|
301
|
+
> either run the script there, or — on Linux targets — stream the device file
|
|
302
|
+
> over SSH instead: `ssh.stream("cat /dev/ttyUSB0", match=..., save_to=...)`.
|
|
303
303
|
|
|
304
304
|
```python
|
|
305
305
|
from ssh_handler import SerialHandler, list_serial_ports
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
paramiko>=3.0
|
|
2
|
+
scp>=0.14
|
|
3
|
+
pyserial>=3.5
|
|
4
|
+
keyring>=23.0
|
|
5
|
+
pywinrm>=0.4.3
|
|
2
6
|
|
|
3
7
|
[all]
|
|
4
|
-
keyring>=23.0
|
|
5
|
-
scp>=0.14
|
|
6
8
|
PyQt5>=5.15
|
|
7
|
-
pywinrm>=0.4.3
|
|
8
|
-
pyserial>=3.5
|
|
9
9
|
|
|
10
10
|
[gui]
|
|
11
11
|
PyQt5>=5.15
|
|
12
|
-
|
|
13
|
-
[scp]
|
|
14
|
-
scp>=0.14
|
|
15
|
-
|
|
16
|
-
[secure]
|
|
17
|
-
keyring>=23.0
|
|
18
|
-
|
|
19
|
-
[serial]
|
|
20
|
-
pyserial>=3.5
|
|
21
|
-
|
|
22
|
-
[winrm]
|
|
23
|
-
pywinrm>=0.4.3
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|