multiSSH3 6.37__tar.gz → 6.38__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.37/multiSSH3.egg-info → multissh3-6.38}/PKG-INFO +2 -2
- {multissh3-6.37 → multissh3-6.38}/README.md +1 -1
- {multissh3-6.37 → multissh3-6.38}/mssh_complete.py +653 -157
- {multissh3-6.37 → multissh3-6.38/multiSSH3.egg-info}/PKG-INFO +2 -2
- {multissh3-6.37 → multissh3-6.38}/multiSSH3.py +38 -13
- {multissh3-6.37 → multissh3-6.38}/tests/bench_complete.py +4 -1
- {multissh3-6.37 → multissh3-6.38}/tests/complete_shell_harness.py +65 -8
- {multissh3-6.37 → multissh3-6.38}/tests/conftest.py +1 -1
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_blesh.py +4 -3
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_cli.py +225 -1
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_diagnose.py +79 -5
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_engine.py +30 -3
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_index.py +49 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_keys.py +73 -7
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_picker.py +108 -21
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_shells.py +846 -8
- {multissh3-6.37 → multissh3-6.38}/LICENSE +0 -0
- {multissh3-6.37 → multissh3-6.38}/MANIFEST.in +0 -0
- {multissh3-6.37 → multissh3-6.38}/multiSSH3.egg-info/SOURCES.txt +0 -0
- {multissh3-6.37 → multissh3-6.38}/multiSSH3.egg-info/dependency_links.txt +0 -0
- {multissh3-6.37 → multissh3-6.38}/multiSSH3.egg-info/entry_points.txt +0 -0
- {multissh3-6.37 → multissh3-6.38}/multiSSH3.egg-info/top_level.txt +0 -0
- {multissh3-6.37 → multissh3-6.38}/pytest.ini +0 -0
- {multissh3-6.37 → multissh3-6.38}/setup.cfg +0 -0
- {multissh3-6.37 → multissh3-6.38}/setup.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/data/run_command_golden.json +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.bash5.1 +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.bash5.3 +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.centos7 +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.current +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.legacy +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/Dockerfile.modern +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/shells/run_matrix.sh +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_cli_branches.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_cli_option_words.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_cli_processing.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_closed_output.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_color_helpers.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_command_terminal.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_compact_hostnames.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_context.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_editor.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_eval.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_hosts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_hoststate.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_lex.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_mssh_helpers.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_password_spellings.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_probe.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_start.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_store.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_suggest.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_terminal.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_untrusted.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_complete_zsh_options.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_config_cli.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_config_validate.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_config_values.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_control_master_config.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_copy_id.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_curses_branches.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_curses_event_loop.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_curses_tui.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_curses_wide_chars.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_expand_hostnames.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_file_trust.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_harness_smoke.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_helpers_extra.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_history_replay.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_host.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_host_validity.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_hosts_file.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_identities_only.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_ipmi_lockout_wait.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_ipmi_logins.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_key_path_home.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_login_drop_retry.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_main_lifecycle.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_narrow_terminal.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_no_hosts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_option_no_effect.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_options_after_command.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_output_merge.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_output_robustness.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_packaging.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_password_handling.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_passwords_out_of_ps.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_command.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_command_branches.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_command_characterization.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_command_exit.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_on_hosts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_run_on_hosts_modes.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_runtime_branch_matrix.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_runtime_dir.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_shared_lines.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_smoke_optional.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_ssh_error_text.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_ssh_timeouts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_sshpass_exit.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_start_run_on_hosts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_stopped_commands.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_stream_reader.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_streamed_output.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_tui_ssh_notices.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_unavailable_hosts.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_underscore_settings.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_waiting.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/test_wide_wrap.py +0 -0
- {multissh3-6.37 → multissh3-6.38}/tests/vt_grid.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multiSSH3
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.38
|
|
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
|
|
@@ -976,7 +976,7 @@ Option names count in full only: `--user` is not `--username` and `-c` is not `-
|
|
|
976
976
|
|
|
977
977
|
Putting the command after `--` is no substitute for quotes: every word after the hosts is a command of its own, so `mssh web1 -- bash -c 'echo hi'` runs `bash`, `-c` and `echo hi` one after another (when each word is a single word, as in `mssh web1 -- ls -la`, mssh asks whether to join them).
|
|
978
978
|
|
|
979
|
-
Below is a sample help message output from multiSSH3 6.
|
|
979
|
+
Below is a sample help message output from multiSSH3 6.38 @ 2026-10-22 (no config file, 120 columns; the lines after the options list the programs found on that machine)
|
|
980
980
|
|
|
981
981
|
```bash
|
|
982
982
|
$ mssh -h
|
|
@@ -950,7 +950,7 @@ Option names count in full only: `--user` is not `--username` and `-c` is not `-
|
|
|
950
950
|
|
|
951
951
|
Putting the command after `--` is no substitute for quotes: every word after the hosts is a command of its own, so `mssh web1 -- bash -c 'echo hi'` runs `bash`, `-c` and `echo hi` one after another (when each word is a single word, as in `mssh web1 -- ls -la`, mssh asks whether to join them).
|
|
952
952
|
|
|
953
|
-
Below is a sample help message output from multiSSH3 6.
|
|
953
|
+
Below is a sample help message output from multiSSH3 6.38 @ 2026-10-22 (no config file, 120 columns; the lines after the options list the programs found on that machine)
|
|
954
954
|
|
|
955
955
|
```bash
|
|
956
956
|
$ mssh -h
|