forked from ungleich-public/cdist
Inspect and add by default ssh multiplexing options.
This commit is contained in:
parent
2dfc30e3c4
commit
215e58eb38
1 changed files with 32 additions and 0 deletions
|
@ -2,6 +2,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# 2010-2013 Nico Schottelius (nico-cdist at schottelius.org)
|
||||
# 2016 Darko Poljak (darko.poljak at gmail.com)
|
||||
#
|
||||
# This file is part of cdist.
|
||||
#
|
||||
|
@ -20,6 +21,32 @@
|
|||
#
|
||||
#
|
||||
|
||||
def inspect_ssh_mux_opts():
|
||||
"""Inspect whether or not ssh supports multiplexing options"""
|
||||
wanted_mux_opts = {
|
||||
"ControlPath":"~/.ssh/master-%l-%r@%h:%p",
|
||||
"ControlMaster":"auto",
|
||||
"ControlPersist":"125",
|
||||
}
|
||||
# if checked key option is present then this assumes
|
||||
# all options in value are present
|
||||
check = {
|
||||
"ControlMaster": ("ControlMaster", "ControlPath"),
|
||||
"ControlPersist": ("ControlPersist",),
|
||||
}
|
||||
mux_opts = {}
|
||||
for x in check:
|
||||
try:
|
||||
subprocess.check_output("ssh -o {}".format(x),
|
||||
stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError as e:
|
||||
foo = e.output.decode().lower()
|
||||
if not "bad configuration option" in foo:
|
||||
for o in check[x]:
|
||||
mux_opts[o] = wanted_mux_opts[o]
|
||||
foo = ["-o {}={}".format(x, mux_opts[x]) for x in mux_opts]
|
||||
return " ".join(foo)
|
||||
|
||||
def commandline():
|
||||
"""Parse command line"""
|
||||
import argparse
|
||||
|
@ -53,6 +80,11 @@ def commandline():
|
|||
parser['banner'].set_defaults(func=cdist.banner.banner)
|
||||
|
||||
# Config
|
||||
# inspect multiplexing options for default remote copy/exec scp/ssh
|
||||
MUX_OPTS = inspect_ssh_mux_opts()
|
||||
cdist.REMOTE_EXEC += MUX_OPTS
|
||||
cdist.REMOTE_COPY += MUX_OPTS
|
||||
|
||||
parser['config'] = parser['sub'].add_parser('config',
|
||||
parents=[parser['loglevel']])
|
||||
parser['config'].add_argument('host', nargs='+',
|
||||
|
|
Loading…
Reference in a new issue