summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2014-09-20 10:08:49 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2014-09-20 10:08:49 -0700
commit74d83f2c74738971ea103e7524dd57316b15046c (patch)
tree25610caae357662c25d8055296d18baea97c5f08
parentd563ba28291fa1f966353c5ef7e4c32680aa93e8 (diff)
parent84995f99a9528b84bd1666060c832ca673641a53 (diff)
Merge branch 'master' into switch-to-cryptography
-rw-r--r--paramiko/config.py10
-rw-r--r--sites/www/changelog.rst2
-rw-r--r--tests/test_util.py5
-rw-r--r--tox.ini2
4 files changed, 18 insertions, 1 deletions
diff --git a/paramiko/config.py b/paramiko/config.py
index 20ca4aa7..4972c27b 100644
--- a/paramiko/config.py
+++ b/paramiko/config.py
@@ -126,6 +126,16 @@ class SSHConfig (object):
ret = self._expand_variables(ret, hostname)
return ret
+ def get_hostnames(self):
+ """
+ Return the set of literal hostnames defined in the SSH config (both
+ explicit hostnames and wildcard entries).
+ """
+ hosts = set()
+ for entry in self._config:
+ hosts.update(entry['host'])
+ return hosts
+
def _allowed(self, hosts, hostname):
match = False
for host in hosts:
diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst
index d0bd481c..49067855 100644
--- a/sites/www/changelog.rst
+++ b/sites/www/changelog.rst
@@ -2,6 +2,8 @@
Changelog
=========
+* :feature:`167` Add `.SSHConfig.get_hostnames` for easier introspection of a
+ loaded SSH config file or object. Courtesy of Søren Løvborg.
* :release:`1.15.0 <2014-09-18>`
* :support:`393` Replace internal use of PyCrypto's ``SHA.new`` with the
stdlib's ``hashlib.sha1``. Thanks to Alex Gaynor.
diff --git a/tests/test_util.py b/tests/test_util.py
index 35e15765..f961fbbc 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -349,6 +349,11 @@ IdentityFile something_%l_using_fqdn
config.parse(config_file)
self.assertEqual(config.lookup("abcqwerty")["hostname"], "127.0.0.1")
+ def test_14_get_hostnames(self):
+ f = StringIO(test_config_file)
+ config = paramiko.util.parse_ssh_config(f)
+ self.assertEqual(config.get_hostnames(), set(['*', '*.example.com', 'spoo.example.com']))
+
def test_quoted_host_names(self):
test_config_file = """\
Host "param pam" param "pam"
diff --git a/tox.ini b/tox.ini
index 96d9b76b..3d7c86da 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,5 +2,5 @@
envlist = py26,py27,py32,py33,py34,pypy
[testenv]
-commands = pip install --use-mirrors -q -r tox-requirements.txt
+commands = pip install -q -r tox-requirements.txt
python test.py