multiSSH3 6.27__tar.gz → 6.29__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.
- {multissh3-6.27 → multissh3-6.29}/PKG-INFO +55 -1
- {multissh3-6.27 → multissh3-6.29}/README.md +54 -0
- multissh3-6.29/mssh_complete.py +4721 -0
- {multissh3-6.27 → multissh3-6.29}/multiSSH3.egg-info/PKG-INFO +55 -1
- {multissh3-6.27 → multissh3-6.29}/multiSSH3.egg-info/SOURCES.txt +17 -0
- {multissh3-6.27 → multissh3-6.29}/multiSSH3.egg-info/entry_points.txt +1 -0
- multissh3-6.29/multiSSH3.egg-info/top_level.txt +2 -0
- {multissh3-6.27 → multissh3-6.29}/multiSSH3.py +146 -38
- {multissh3-6.27 → multissh3-6.29}/setup.py +2 -1
- multissh3-6.29/tests/test_complete_blesh.py +89 -0
- multissh3-6.29/tests/test_complete_context.py +157 -0
- multissh3-6.29/tests/test_complete_editor.py +274 -0
- multissh3-6.29/tests/test_complete_engine.py +259 -0
- multissh3-6.29/tests/test_complete_eval.py +66 -0
- multissh3-6.29/tests/test_complete_hosts.py +23 -0
- multissh3-6.29/tests/test_complete_index.py +199 -0
- multissh3-6.29/tests/test_complete_keys.py +485 -0
- multissh3-6.29/tests/test_complete_lex.py +43 -0
- multissh3-6.29/tests/test_complete_mssh_helpers.py +122 -0
- multissh3-6.29/tests/test_complete_picker.py +222 -0
- multissh3-6.29/tests/test_complete_shells.py +295 -0
- multissh3-6.29/tests/test_complete_store.py +89 -0
- multissh3-6.29/tests/test_complete_suggest.py +129 -0
- multissh3-6.29/tests/test_complete_terminal.py +129 -0
- multissh3-6.29/tests/test_complete_untrusted.py +63 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_helpers_extra.py +11 -0
- multissh3-6.27/multiSSH3.egg-info/top_level.txt +0 -1
- {multissh3-6.27 → multissh3-6.29}/multiSSH3.egg-info/dependency_links.txt +0 -0
- {multissh3-6.27 → multissh3-6.29}/setup.cfg +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_cli_branches.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_cli_processing.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_color_helpers.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_compact_hostnames.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_config_cli.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_config_validate.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_curses_branches.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_curses_event_loop.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_curses_tui.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_expand_hostnames.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_file_trust.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_harness_smoke.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_host.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_ipmi_lockout_wait.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_main_lifecycle.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_output_merge.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_run_command.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_run_command_branches.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_run_command_characterization.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_run_on_hosts.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_run_on_hosts_modes.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_runtime_branch_matrix.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_smoke_optional.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_stream_reader.py +0 -0
- {multissh3-6.27 → multissh3-6.29}/tests/test_unavailable_hosts.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multiSSH3
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.29
|
|
4
4
|
Summary: Run commands on multiple hosts via SSH
|
|
5
5
|
Home-page: https://github.com/yufei-pan/multiSSH3
|
|
6
6
|
Author: Yufei Pan
|
|
@@ -375,6 +375,60 @@ mssh will replace some magic strings in the command string with host specific va
|
|
|
375
375
|
|
|
376
376
|
> Note: Resolved name is the IP / Hostname with user appended and ip prefix applied. This is what got used to connect to the host.
|
|
377
377
|
|
|
378
|
+
## Autocomplete
|
|
379
|
+
|
|
380
|
+
mssh completes hosts, options, option values and remote commands when you press TAB, in bash, zsh and fish.
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
mssh --completion install # set it up for the shell you run this from
|
|
384
|
+
mssh --completion uninstall # remove it again
|
|
385
|
+
mssh --completion bash # or print the script (bash, zsh or fish)
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
- **Hosts:** host strings you typed before, env file aliases, `/etc/hosts`, ssh config `Host` entries, `known_hosts` and the ARP table. Large clusters are offered as ranges (`node[0001-2000]`) until what you typed narrows them down. Hosts mssh recently found unreachable come last.
|
|
389
|
+
- **Options and values:** option names, and values you used before (`-u`, `-t`, ...). Paths complete as files. Passwords are never completed.
|
|
390
|
+
- **Commands:** commands from your mssh history, the rest of a command from this machine's own completion (`mssh grp systemctl rest<TAB>`), and the magic strings (`#HOST#`, ...).
|
|
391
|
+
|
|
392
|
+
Ranking uses the rest of the line on both sides of the cursor: after `mssh gpu[01-16] "` the commands you run on those hosts come first, and in the hosts of `mssh ▮ "systemctl restart slurmd"` the hosts you restarted slurmd on come first.
|
|
393
|
+
|
|
394
|
+
Completion never removes what you typed, prints nothing, and falls back to the shell's normal completion when anything is slow or missing.
|
|
395
|
+
|
|
396
|
+
It learns from an index of your history and hosts, kept in mssh's private cache directory (`$XDG_RUNTIME_DIR/multiSSH3` or `/tmp/multiSSH3-<uid>`) and rebuilt in the background when its sources change. `mssh-complete rebuild` rebuilds it now; `mssh-complete eval` replays your history and shows how much typing completion saves.
|
|
397
|
+
|
|
398
|
+
### Grey suggestions
|
|
399
|
+
|
|
400
|
+
While you type an mssh line, the most likely rest of it shows in grey after the cursor: the rest of the line when one past invocation clearly fits, only the rest of the current word when only that is clear, or the start every known value shares when none is (what TAB would insert), nothing when mssh is not sure. → (or End, Ctrl-F) takes all of it, Alt-→ / Ctrl-→ / Alt-F one word. Enter runs only what you typed.
|
|
401
|
+
|
|
402
|
+
- **zsh:** built in; with [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) loaded, mssh becomes its first strategy on mssh lines.
|
|
403
|
+
- **bash with [ble.sh](https://github.com/akinomyoga/ble.sh):** built in, as ble.sh's first suggestion source.
|
|
404
|
+
- **plain bash (4.4 or later):** turn on the mssh line editor, which takes over after you type an mssh name and a space, and hands the line back to readline on any key it does not handle (↑, Ctrl-K, ...) or when you delete into `mssh `:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
mssh --completion install bash editor
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
Installing again keeps it on; `mssh --completion uninstall bash`, then `mssh --completion install bash`, turns it off.
|
|
411
|
+
|
|
412
|
+
- **fish:** fish's own suggestions already use mssh's completion.
|
|
413
|
+
|
|
414
|
+
### Ctrl-R
|
|
415
|
+
|
|
416
|
+
Ctrl-R on an mssh line opens a menu below the prompt with the candidates for the word under the cursor (hosts, commands for those hosts, option values), how often and how long ago you used them; Tab switches to whole past invocations. Type to filter, ↑/↓ to move, Enter to insert, Esc to leave the line as it was. On any other line Ctrl-R does what it did before (readline's search, fzf, atuin, ...).
|
|
417
|
+
|
|
418
|
+
| Environment variable | Effect |
|
|
419
|
+
| --- | --- |
|
|
420
|
+
| `MSSH_COMPLETE_TIMEOUT` | Seconds the shell waits for an answer (default 0.3) |
|
|
421
|
+
| `MSSH_COMPLETE_GHOST_TIMEOUT` | ble.sh only: milliseconds a grey suggestion may take (default 300) |
|
|
422
|
+
| `MSSH_COMPLETE_SHELL_HISTORY` | Lines of shell history sent along (default 1000) |
|
|
423
|
+
| `MSSH_COMPLETE_EDITOR` | `1` turns on the plain-bash mssh line editor (`install bash editor` sets it) |
|
|
424
|
+
| `MSSH_COMPLETE_DEBUG` | `1` logs errors to `complete.log` in the cache directory |
|
|
425
|
+
|
|
426
|
+
> Tested with bash 4.2 to 5.2, zsh 5.5 to 5.9 (with `compinit` loaded; zsh-autosuggestions 0.7.1), fish 3.3 to 4.0 and the 2026-09-08 ble.sh nightly. Since 6.28 mssh records hosts in its history as typed; older history lines hold them expanded.
|
|
427
|
+
|
|
428
|
+
> After upgrading mssh, run `mssh --completion install` again to get the new shell glue. Glue from an older mssh keeps working, without the newer features.
|
|
429
|
+
|
|
430
|
+
> The plain-bash editor binds the space key, so every space typed in bash runs a tiny shell function; Ctrl-R becomes a key macro (the binding it replaced is called for other lines). Uninstall restores both in new shells.
|
|
431
|
+
|
|
378
432
|
## Options
|
|
379
433
|
|
|
380
434
|
Here details the options for multiSSH3 6.02 @ 2025-11-10
|
|
@@ -350,6 +350,60 @@ mssh will replace some magic strings in the command string with host specific va
|
|
|
350
350
|
|
|
351
351
|
> Note: Resolved name is the IP / Hostname with user appended and ip prefix applied. This is what got used to connect to the host.
|
|
352
352
|
|
|
353
|
+
## Autocomplete
|
|
354
|
+
|
|
355
|
+
mssh completes hosts, options, option values and remote commands when you press TAB, in bash, zsh and fish.
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
mssh --completion install # set it up for the shell you run this from
|
|
359
|
+
mssh --completion uninstall # remove it again
|
|
360
|
+
mssh --completion bash # or print the script (bash, zsh or fish)
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
- **Hosts:** host strings you typed before, env file aliases, `/etc/hosts`, ssh config `Host` entries, `known_hosts` and the ARP table. Large clusters are offered as ranges (`node[0001-2000]`) until what you typed narrows them down. Hosts mssh recently found unreachable come last.
|
|
364
|
+
- **Options and values:** option names, and values you used before (`-u`, `-t`, ...). Paths complete as files. Passwords are never completed.
|
|
365
|
+
- **Commands:** commands from your mssh history, the rest of a command from this machine's own completion (`mssh grp systemctl rest<TAB>`), and the magic strings (`#HOST#`, ...).
|
|
366
|
+
|
|
367
|
+
Ranking uses the rest of the line on both sides of the cursor: after `mssh gpu[01-16] "` the commands you run on those hosts come first, and in the hosts of `mssh ▮ "systemctl restart slurmd"` the hosts you restarted slurmd on come first.
|
|
368
|
+
|
|
369
|
+
Completion never removes what you typed, prints nothing, and falls back to the shell's normal completion when anything is slow or missing.
|
|
370
|
+
|
|
371
|
+
It learns from an index of your history and hosts, kept in mssh's private cache directory (`$XDG_RUNTIME_DIR/multiSSH3` or `/tmp/multiSSH3-<uid>`) and rebuilt in the background when its sources change. `mssh-complete rebuild` rebuilds it now; `mssh-complete eval` replays your history and shows how much typing completion saves.
|
|
372
|
+
|
|
373
|
+
### Grey suggestions
|
|
374
|
+
|
|
375
|
+
While you type an mssh line, the most likely rest of it shows in grey after the cursor: the rest of the line when one past invocation clearly fits, only the rest of the current word when only that is clear, or the start every known value shares when none is (what TAB would insert), nothing when mssh is not sure. → (or End, Ctrl-F) takes all of it, Alt-→ / Ctrl-→ / Alt-F one word. Enter runs only what you typed.
|
|
376
|
+
|
|
377
|
+
- **zsh:** built in; with [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) loaded, mssh becomes its first strategy on mssh lines.
|
|
378
|
+
- **bash with [ble.sh](https://github.com/akinomyoga/ble.sh):** built in, as ble.sh's first suggestion source.
|
|
379
|
+
- **plain bash (4.4 or later):** turn on the mssh line editor, which takes over after you type an mssh name and a space, and hands the line back to readline on any key it does not handle (↑, Ctrl-K, ...) or when you delete into `mssh `:
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
mssh --completion install bash editor
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Installing again keeps it on; `mssh --completion uninstall bash`, then `mssh --completion install bash`, turns it off.
|
|
386
|
+
|
|
387
|
+
- **fish:** fish's own suggestions already use mssh's completion.
|
|
388
|
+
|
|
389
|
+
### Ctrl-R
|
|
390
|
+
|
|
391
|
+
Ctrl-R on an mssh line opens a menu below the prompt with the candidates for the word under the cursor (hosts, commands for those hosts, option values), how often and how long ago you used them; Tab switches to whole past invocations. Type to filter, ↑/↓ to move, Enter to insert, Esc to leave the line as it was. On any other line Ctrl-R does what it did before (readline's search, fzf, atuin, ...).
|
|
392
|
+
|
|
393
|
+
| Environment variable | Effect |
|
|
394
|
+
| --- | --- |
|
|
395
|
+
| `MSSH_COMPLETE_TIMEOUT` | Seconds the shell waits for an answer (default 0.3) |
|
|
396
|
+
| `MSSH_COMPLETE_GHOST_TIMEOUT` | ble.sh only: milliseconds a grey suggestion may take (default 300) |
|
|
397
|
+
| `MSSH_COMPLETE_SHELL_HISTORY` | Lines of shell history sent along (default 1000) |
|
|
398
|
+
| `MSSH_COMPLETE_EDITOR` | `1` turns on the plain-bash mssh line editor (`install bash editor` sets it) |
|
|
399
|
+
| `MSSH_COMPLETE_DEBUG` | `1` logs errors to `complete.log` in the cache directory |
|
|
400
|
+
|
|
401
|
+
> Tested with bash 4.2 to 5.2, zsh 5.5 to 5.9 (with `compinit` loaded; zsh-autosuggestions 0.7.1), fish 3.3 to 4.0 and the 2026-09-08 ble.sh nightly. Since 6.28 mssh records hosts in its history as typed; older history lines hold them expanded.
|
|
402
|
+
|
|
403
|
+
> After upgrading mssh, run `mssh --completion install` again to get the new shell glue. Glue from an older mssh keeps working, without the newer features.
|
|
404
|
+
|
|
405
|
+
> The plain-bash editor binds the space key, so every space typed in bash runs a tiny shell function; Ctrl-R becomes a key macro (the binding it replaced is called for other lines). Uninstall restores both in new shells.
|
|
406
|
+
|
|
353
407
|
## Options
|
|
354
408
|
|
|
355
409
|
Here details the options for multiSSH3 6.02 @ 2025-11-10
|