Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
salt.4663
0042-Salt-ssh-ssh-option-param.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0042-Salt-ssh-ssh-option-param.patch of Package salt.4663
From f91062dfea7535a01f304d88f6f9abc143b0c0ac Mon Sep 17 00:00:00 2001 From: Matei Albu <malbu@suse.de> Date: Mon, 19 Dec 2016 16:54:52 +0100 Subject: [PATCH] Add --ssh-option to salt-ssh --ssh-option can be used to pass -o options to the ssh client. (cherry picked from commit 16f21e5) Check if ssh_options present --- salt/client/ssh/__init__.py | 7 ++++++- salt/client/ssh/shell.py | 19 +++++++++++++++---- salt/utils/parsers.py | 18 +++++++++++++----- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py index 9b942ec..b2067a0 100644 --- a/salt/client/ssh/__init__.py +++ b/salt/client/ssh/__init__.py @@ -246,6 +246,9 @@ class SSH(object): 'remote_port_forwards': self.opts.get( 'ssh_remote_port_forwards' ), + 'ssh_options': self.opts.get( + 'ssh_options' + ) } if self.opts.get('rand_thin_dir'): self.defaults['thin_dir'] = os.path.join( @@ -625,6 +628,7 @@ class Single(object): identities_only=False, sudo_user=None, remote_port_forwards=None, + ssh_options=None, **kwargs): # Get mine setting and mine_functions if defined in kwargs (from roster) self.mine = mine @@ -674,7 +678,8 @@ class Single(object): 'mods': self.mods, 'identities_only': identities_only, 'sudo_user': sudo_user, - 'remote_port_forwards': remote_port_forwards} + 'remote_port_forwards': remote_port_forwards, + 'ssh_options': ssh_options} self.minion_opts = opts.get('ssh_minion_opts', {}) if minion_opts is not None: self.minion_opts.update(minion_opts) diff --git a/salt/client/ssh/shell.py b/salt/client/ssh/shell.py index bc44d79..deb6519 100644 --- a/salt/client/ssh/shell.py +++ b/salt/client/ssh/shell.py @@ -60,7 +60,8 @@ class Shell(object): mods=None, identities_only=False, sudo_user=None, - remote_port_forwards=None): + remote_port_forwards=None, + ssh_options=None): self.opts = opts self.host = host self.user = user @@ -73,6 +74,7 @@ class Shell(object): self.mods = mods self.identities_only = identities_only self.remote_port_forwards = remote_port_forwards + self.ssh_options = ssh_options def get_error(self, errstr): ''' @@ -158,6 +160,12 @@ class Shell(object): ret.append('-o {0} '.format(option)) return ''.join(ret) + def _ssh_opts(self): + if self.ssh_options: + return ' '.join(['-o {0}'.format(opt) + for opt in self.ssh_options]) + return '' + def _copy_id_str_old(self): ''' Return the string to execute ssh-copy-id @@ -165,11 +173,12 @@ class Shell(object): if self.passwd: # Using single quotes prevents shell expansion and # passwords containing '$' - return "{0} {1} '{2} -p {3} {4}@{5}'".format( + return "{0} {1} '{2} -p {3} {4} {5}@{6}'".format( 'ssh-copy-id', '-i {0}.pub'.format(self.priv), self._passwd_opts(), self.port, + self._ssh_opts(), self.user, self.host) return None @@ -182,11 +191,12 @@ class Shell(object): if self.passwd: # Using single quotes prevents shell expansion and # passwords containing '$' - return "{0} {1} {2} -p {3} {4}@{5}".format( + return "{0} {1} {2} -p {3} {4} {5}@{6}".format( 'ssh-copy-id', '-i {0}.pub'.format(self.priv), self._passwd_opts(), self.port, + self._ssh_opts(), self.user, self.host) return None @@ -222,12 +232,13 @@ class Shell(object): port_forwards = self.remote_port_forwards.split(',') ports = ' '.join(map(lambda x: '-R {0}'.format(x), port_forwards)) - return "{0} {1} {2} {3} {4} {5}".format( + return "{0} {1} {2} {3} {4} {5} {6}".format( ssh, '' if ssh == 'scp' else self.host, '-t -t' if tty else '', opts, '' if ssh == 'scp' else ports, + self._ssh_opts() if self.ssh_options else '', cmd) def _old_run_cmd(self, cmd): diff --git a/salt/utils/parsers.py b/salt/utils/parsers.py index 5997a01..94f218e 100644 --- a/salt/utils/parsers.py +++ b/salt/utils/parsers.py @@ -2508,11 +2508,11 @@ class SaltSSHOptionParser(six.with_metaclass(OptionParserMeta, help=('Select a random temp dir to deploy on the remote system. ' 'The dir will be cleaned after the execution.')) - ports_group = optparse.OptionGroup( - self, 'Port Forwarding Options', - 'Parameters for setting up SSH port forwarding.' + ssh_group = optparse.OptionGroup( + self, 'SSH Options', + 'Parameters for the SSH client.' ) - ports_group.add_option( + ssh_group.add_option( '--remote-port-forwards', dest='ssh_remote_port_forwards', help='Setup remote port forwarding using the same syntax as with ' @@ -2520,7 +2520,15 @@ class SaltSSHOptionParser(six.with_metaclass(OptionParserMeta, 'forwarding definitions will be translated into multiple ' '-R parameters.' ) - self.add_option_group(ports_group) + ssh_group.add_option( + '--ssh-option', + dest='ssh_options', + action='append', + help='Equivalent to the -o ssh command option. Passes options to ' + 'the SSH client in the format used in the client configuration file. ' + 'Can be used multiple times.' + ) + self.add_option_group(ssh_group) auth_group = optparse.OptionGroup( self, 'Authentication Options', -- 2.6.6
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor