From c0f575ef2fa5332a92293f198841333bdad75647 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 2 Mar 2005 20:15:52 +0000 Subject: switch to all dynamic ssh_known_hosts generation (don't use repo/ssh_known_hosts as a base) (Logical change 1.208) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@886 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Generators/SSHbase.py | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/lib/Server/Generators/SSHbase.py b/src/lib/Server/Generators/SSHbase.py index 7c0a015f4..7b6a49494 100644 --- a/src/lib/Server/Generators/SSHbase.py +++ b/src/lib/Server/Generators/SSHbase.py @@ -3,7 +3,6 @@ __revision__ = '$Revision$' from binascii import b2a_base64 from os import rename, system -from socket import gethostbyname, gaierror from Bcfg2.Server.Generator import Generator, DirectoryBacked @@ -49,13 +48,11 @@ class SSHbase(Generator): def build_skn(self, entry, metadata): '''This function builds builds a host specific known_hosts file''' client = metadata.hostname - filedata = self.repository.entries['ssh_known_hosts'].data - try: - for hostkey in [keytmpl % client for keytmpl in self.pubkeys]: - filedata += "localhost,localhost.localdomain,127.0.0.1 %s" % ( - self.repository.entries[hostkey].data) - except gaierror: - self.LogError("DNS lookup failed for client %s" % client) + filedata = "".join([info.data for (filename, info) in self.repository.entries.iteritems() + if ".pub" in filename]) + for hostkey in [keytmpl % client for keytmpl in self.pubkeys]: + filedata += "localhost,localhost.localdomain,127.0.0.1 %s" % ( + self.repository.entries[hostkey].data) entry.attrib.update({'owner':'root', 'group':'root', 'perms':'0644'}) entry.text = filedata @@ -65,7 +62,7 @@ class SSHbase(Generator): filename = "%s.H_%s" % (entry.get('name').split('/')[-1], client) if filename not in self.repository.entries.keys(): self.GenerateHostKeys(client) - self.GenerateKnownHosts() + #self.GenerateKnownHosts() keydata = self.repository.entries[filename].data perms = '0600' if entry.get('name')[-4:] == '.pub': @@ -76,19 +73,6 @@ class SSHbase(Generator): entry.attrib['encoding'] = 'base64' entry.text = b2a_base64(keydata) - def GenerateKnownHosts(self): - '''Build the static portion of known_hosts (for all hosts)''' - output = '' - for filename, entry in self.repository.entries.iteritems(): - if ".pub.H_" in filename: - hname = filename.split('_')[-1] - try: - ipaddr = gethostbyname(hname) - output += "%s,%s.mcs.anl.gov,%s %s" % (hname, hname, ipaddr, entry.data) - except gaierror: - continue - self.repository.entries['ssh_known_hosts'].data = output - def GenerateHostKeys(self, client): '''Generate new host keys for client''' keylist = [keytmpl % client for keytmpl in self.hostkeys] -- cgit v1.2.3-1-g7c22