From fb24d79695f83e14edc0ccd7ed2c0ca30ee8cde8 Mon Sep 17 00:00:00 2001 From: Olle Lundberg Date: Fri, 30 Mar 2012 14:08:14 +0200 Subject: [PATCH] Add basic support for parameter substitution in SSHConfig. --- ssh/config.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ssh/config.py b/ssh/config.py index 4198861..a08dba5 100644 --- a/ssh/config.py +++ b/ssh/config.py @@ -106,5 +106,27 @@ class SSHConfig (object): ret = {} for m in matches: ret.update(m) + ret = self._expand_variables(ret, hostname) del ret['host'] return ret + + def _expand_variables(self, config, hostname ): + """ + Return a dict of config options with expanded substitutions + for a given hostname. + + For the moment only expansion of the %h substitution in the + hostname config is supported. + + @param config: the config for the hostname + @type hostname: dict + @param hostname: the hostname that the config belongs to + @type hostname: str + """ + #TODO: Add support for expansion of all substitution parameters + #TODO: see man ssh_config(5) + if 'hostname' in config: + config['hostname'] = config['hostname'].replace('%h',hostname) + else: + config['hostname'] = hostname + return config