Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
salt.4663
0032-Support-remote-port-forwarding-with-salt-s...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0032-Support-remote-port-forwarding-with-salt-ssh.patch of Package salt.4663
From b1d9919740fe1aafb62e9f58585ac2bbf8d49b19 Mon Sep 17 00:00:00 2001 From: Johannes Renner <jrenner@suse.com> Date: Wed, 29 Jun 2016 17:25:51 +0200 Subject: [PATCH 32/38] Support remote port forwarding with salt-ssh (cherry picked from commit e421e4d) --- salt/client/ssh/__init__.py | 7 ++++++- salt/client/ssh/shell.py | 13 +++++++++++-- salt/utils/parsers.py | 14 ++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py index a5e8199..9b942ec 100644 --- a/salt/client/ssh/__init__.py +++ b/salt/client/ssh/__init__.py @@ -243,6 +243,9 @@ class SSH(object): 'ssh_identities_only', salt.config.DEFAULT_MASTER_OPTS['ssh_identities_only'] ), + 'remote_port_forwards': self.opts.get( + 'ssh_remote_port_forwards' + ), } if self.opts.get('rand_thin_dir'): self.defaults['thin_dir'] = os.path.join( @@ -621,6 +624,7 @@ class Single(object): minion_opts=None, identities_only=False, sudo_user=None, + remote_port_forwards=None, **kwargs): # Get mine setting and mine_functions if defined in kwargs (from roster) self.mine = mine @@ -669,7 +673,8 @@ class Single(object): 'tty': tty, 'mods': self.mods, 'identities_only': identities_only, - 'sudo_user': sudo_user} + 'sudo_user': sudo_user, + 'remote_port_forwards': remote_port_forwards} 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 f08a877..bc44d79 100644 --- a/salt/client/ssh/shell.py +++ b/salt/client/ssh/shell.py @@ -59,7 +59,8 @@ class Shell(object): tty=False, mods=None, identities_only=False, - sudo_user=None): + sudo_user=None, + remote_port_forwards=None): self.opts = opts self.host = host self.user = user @@ -71,6 +72,7 @@ class Shell(object): self.tty = tty self.mods = mods self.identities_only = identities_only + self.remote_port_forwards = remote_port_forwards def get_error(self, errstr): ''' @@ -214,11 +216,18 @@ class Shell(object): opts = self._passwd_opts() if self.priv: opts = self._key_opts() - return "{0} {1} {2} {3} {4}".format( + + ports = '' + if self.remote_port_forwards: + 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( ssh, '' if ssh == 'scp' else self.host, '-t -t' if tty else '', opts, + '' if ssh == 'scp' else ports, cmd) def _old_run_cmd(self, cmd): diff --git a/salt/utils/parsers.py b/salt/utils/parsers.py index 5a741fb..5997a01 100644 --- a/salt/utils/parsers.py +++ b/salt/utils/parsers.py @@ -2508,6 +2508,20 @@ 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.' + ) + ports_group.add_option( + '--remote-port-forwards', + dest='ssh_remote_port_forwards', + help='Setup remote port forwarding using the same syntax as with ' + 'the -R parameter of ssh. A comma separated list of port ' + 'forwarding definitions will be translated into multiple ' + '-R parameters.' + ) + self.add_option_group(ports_group) + auth_group = optparse.OptionGroup( self, 'Authentication Options', 'Parameters affecting authentication' -- 2.10.2
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