multiSSH3 5.84__py3-none-any.whl → 5.85__py3-none-any.whl
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.
Potentially problematic release.
This version of multiSSH3 might be problematic. Click here for more details.
- multiSSH3.py +17 -12
- {multissh3-5.84.dist-info → multissh3-5.85.dist-info}/METADATA +1 -1
- multissh3-5.85.dist-info/RECORD +6 -0
- multissh3-5.84.dist-info/RECORD +0 -6
- {multissh3-5.84.dist-info → multissh3-5.85.dist-info}/WHEEL +0 -0
- {multissh3-5.84.dist-info → multissh3-5.85.dist-info}/entry_points.txt +0 -0
- {multissh3-5.84.dist-info → multissh3-5.85.dist-info}/top_level.txt +0 -0
multiSSH3.py
CHANGED
|
@@ -81,10 +81,10 @@ except :
|
|
|
81
81
|
print('Warning: functools.lru_cache is not available, multiSSH3 will run slower without cache.',file=sys.stderr)
|
|
82
82
|
def cache_decorator(func):
|
|
83
83
|
return func
|
|
84
|
-
version = '5.
|
|
84
|
+
version = '5.85'
|
|
85
85
|
VERSION = version
|
|
86
86
|
__version__ = version
|
|
87
|
-
COMMIT_DATE = '2025-
|
|
87
|
+
COMMIT_DATE = '2025-08-13'
|
|
88
88
|
|
|
89
89
|
CONFIG_FILE_CHAIN = ['./multiSSH3.config.json',
|
|
90
90
|
'~/multiSSH3.config.json',
|
|
@@ -624,6 +624,19 @@ def join_threads(threads=__running_threads,timeout=None):
|
|
|
624
624
|
thread.join(timeout=timeout)
|
|
625
625
|
if threads is __running_threads:
|
|
626
626
|
__running_threads = {t for t in threads if t.is_alive()}
|
|
627
|
+
|
|
628
|
+
def format_commands(commands):
|
|
629
|
+
if not commands:
|
|
630
|
+
commands = []
|
|
631
|
+
else:
|
|
632
|
+
commands = [commands] if isinstance(commands,str) else commands
|
|
633
|
+
# reformat commands into a list of strings, join the iterables if they are not strings
|
|
634
|
+
try:
|
|
635
|
+
commands = [' '.join(command) if not isinstance(command,str) else command for command in commands]
|
|
636
|
+
except:
|
|
637
|
+
eprint(f"Warning: commands should ideally be a list of strings. Now mssh had failed to convert {commands!r} to a list of strings. Continuing anyway but expect failures.")
|
|
638
|
+
return commands
|
|
639
|
+
|
|
627
640
|
#%% ------------ Compacting Hostnames ----------------
|
|
628
641
|
def __tokenize_hostname(hostname):
|
|
629
642
|
"""
|
|
@@ -2612,7 +2625,7 @@ def getStrCommand(hosts = DEFAULT_HOSTS,commands = None,oneonone = DEFAULT_ONE_O
|
|
|
2612
2625
|
history_file = history_file, env_file = env_file,
|
|
2613
2626
|
repeat = repeat,interval = interval,
|
|
2614
2627
|
shortend = shortend)
|
|
2615
|
-
commands = [command.replace('"', '\\"').replace('\n', '\\n').replace('\t', '\\t') for command in commands]
|
|
2628
|
+
commands = [command.replace('"', '\\"').replace('\n', '\\n').replace('\t', '\\t') for command in format_commands(commands)]
|
|
2616
2629
|
commandStr = '"' + '" "'.join(commands) + '"' if commands else ''
|
|
2617
2630
|
filePath = os.path.abspath(__file__)
|
|
2618
2631
|
programName = filePath if filePath else 'mssh'
|
|
@@ -2761,15 +2774,7 @@ def run_command_on_hosts(hosts = DEFAULT_HOSTS,commands = None,oneonone = DEFAUL
|
|
|
2761
2774
|
if max_connections > __max_connections_nofile_limit_supported * 2:
|
|
2762
2775
|
# we need to throttle thread start to avoid hitting the nofile limit
|
|
2763
2776
|
__thread_start_delay = 0.001
|
|
2764
|
-
|
|
2765
|
-
commands = []
|
|
2766
|
-
else:
|
|
2767
|
-
commands = [commands] if isinstance(commands,str) else commands
|
|
2768
|
-
# reformat commands into a list of strings, join the iterables if they are not strings
|
|
2769
|
-
try:
|
|
2770
|
-
commands = [' '.join(command) if not isinstance(command,str) else command for command in commands]
|
|
2771
|
-
except:
|
|
2772
|
-
eprint(f"Warning: commands should ideally be a list of strings. Now mssh had failed to convert {commands!r} to a list of strings. Continuing anyway but expect failures.")
|
|
2777
|
+
commands = format_commands(commands)
|
|
2773
2778
|
#verify_ssh_config()
|
|
2774
2779
|
# load global unavailable hosts only if the function is called (so using --repeat will not load the unavailable hosts again)
|
|
2775
2780
|
if called:
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
multiSSH3.py,sha256=R7-ucXDmtJwhuaxT7uvJ3RXhdfKtQZZVW5BnsEjYyHA,154282
|
|
2
|
+
multissh3-5.85.dist-info/METADATA,sha256=xoQc9yqGuFvaS8Gdk8d16FzVmOQYTfM2ZyuBHaOJmx8,18093
|
|
3
|
+
multissh3-5.85.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
4
|
+
multissh3-5.85.dist-info/entry_points.txt,sha256=xi2rWWNfmHx6gS8Mmx0rZL2KZz6XWBYP3DWBpWAnnZ0,143
|
|
5
|
+
multissh3-5.85.dist-info/top_level.txt,sha256=tUwttxlnpLkZorSsroIprNo41lYSxjd2ASuL8-EJIJw,10
|
|
6
|
+
multissh3-5.85.dist-info/RECORD,,
|
multissh3-5.84.dist-info/RECORD
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
multiSSH3.py,sha256=-CzKDCUgMrgzmvtiLGgbQG0n_Gzk6IEqvUieLzJ29y0,154177
|
|
2
|
-
multissh3-5.84.dist-info/METADATA,sha256=9ZD6QwIhVXZXymckMv_aocvIzy2NHjyA_EnDaUhZn1s,18093
|
|
3
|
-
multissh3-5.84.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
4
|
-
multissh3-5.84.dist-info/entry_points.txt,sha256=xi2rWWNfmHx6gS8Mmx0rZL2KZz6XWBYP3DWBpWAnnZ0,143
|
|
5
|
-
multissh3-5.84.dist-info/top_level.txt,sha256=tUwttxlnpLkZorSsroIprNo41lYSxjd2ASuL8-EJIJw,10
|
|
6
|
-
multissh3-5.84.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|