patch from gary poster: allow multiple hostnames to be specified per block in the ssh config file format. bug #332382

This commit is contained in:
Robey Pointer 2009-07-19 16:08:13 -07:00
parent 15f4bdb105
commit e06dbde805
1 changed files with 23 additions and 18 deletions

View File

@ -47,7 +47,7 @@ class SSHConfig (object):
@param file_obj: a file-like object to read the config file from
@type file_obj: file
"""
config = self._config[0]
configs = [self._config[0]]
for line in file_obj:
line = line.rstrip('\n').lstrip()
if (line == '') or (line[0] == '#'):
@ -66,14 +66,19 @@ class SSHConfig (object):
value = line[i:].lstrip()
if key == 'host':
del configs[:]
# the value may be multiple hosts, space-delimited
for host in value.split():
# do we have a pre-existing host config to append to?
matches = [c for c in self._config if c['host'] == value]
matches = [c for c in self._config if c['host'] == host]
if len(matches) > 0:
config = matches[0]
configs.append(matches[0])
else:
config = { 'host': value }
config = { 'host': host }
self._config.append(config)
configs.append(config)
else:
for config in configs:
config[key] = value
def lookup(self, hostname):