#!/usr/bin/python2 #polls the hobbit server for ghost clients. If it finds ghosts it will make a new bb-hosts file #with the new clients. #Will not add duplicate clients #return code of 0 means a new file was written, anything else is an error or no inserts occured import urllib2 import string import sys import os def readkeyfile(): global keylist global data_config try: f = "%s/.ssh/authorized_keys" %data_config.MYTHHOME infile = open(f, 'r') except(IOError), e: keylist='' else: keylist = infile.readlines() infile.close() def grabkey(server): global numberlines global mbekey global data_config url="http://" + server + ":1337/serverkey.cgi" try: f = urllib2.urlopen(url) except urllib2.HTTPError, e: if e.code != 200: print 'error find key' sys.exit(1) else: mbekey = f.readlines() f.close() numberlines = len(mbekey) #print mbekey def makenewkeyfile(): global keylist global mbekey global numberlines global numinserts global data_config numinserts=0 outlist = [] for item in keylist: if item not in outlist: outlist.append(item) for item in mbekey: # line = item.rstrip() #nline = "%s #" % (line) #nline = nline + '\n' if item not in outlist: outlist.append(item) #print "adding: " + item numinserts = numinserts + 1 if numinserts > 0: f = "%s/.ssh/authorized_keys" %data_config.MYTHHOME try: outfile = open(f,"w") except(IOError), e: os.system('mkdir -p %s/.ssh' %data_config.MYTHHOME) outfile = open(f,"w") for i in outlist: outfile.write(i + '\n' ) outfile.close os.system('chown -R mythtv %s/.ssh' %data_config.MYTHHOME ) os.system('chmod 700 %s' %f) global infile global keylist global numberlines global numinserts global mbekey global data_config sys.path.append('/usr/MythVantage/bin/') config_file = "mv_config" data_config = __import__(config_file, globals(), locals(), []) numinserts = 0 readkeyfile() #print numberlines #print mbekey #data_config.MYTHHOME try: infile = open('/etc/systemconfig', 'r') except(IOError), e: sys.exit(1) else: keylist = infile.readlines() infile.close() for item in keylist: if item.startswith("dbhost"): itemlist=item.split("=") server=itemlist[1].strip() server=server.rstrip() server=server.strip('"') server=server.rstrip('"') grabkey(server) if numberlines > 0: makenewkeyfile() else: print "nothing to add" if numinserts < 1: sys.exit(1) else: sys.exit(0)