From 0e419aa4bf95a9251b88f7878d368c4d9b123cc7 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Thu, 16 Aug 2007 18:00:16 -0400 Subject: Add a prototype client tool to configure a client of the IPA server Right now it does only discovery (or fallback) --- ipa-client/ipa-install/ipa-client-install | 109 ++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 ipa-client/ipa-install/ipa-client-install (limited to 'ipa-client/ipa-install/ipa-client-install') diff --git a/ipa-client/ipa-install/ipa-client-install b/ipa-client/ipa-install/ipa-client-install new file mode 100644 index 000000000..d50a736b5 --- /dev/null +++ b/ipa-client/ipa-install/ipa-client-install @@ -0,0 +1,109 @@ +#! /usr/bin/python -E +# Authors: Simo Sorce +# Karl MacMillan +# +# Copyright (C) 2007 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +VERSION = "%prog .1" + +import sys +sys.path.append("/usr/share/ipa") + +import socket +import logging +from optparse import OptionParser +import ipaclient.ipadiscovery +from ipaserver.util import run + +def parse_options(): + parser = OptionParser(version=VERSION) + parser.add_option("--domain", dest="domain", help="domain name") + parser.add_option("--server", dest="server", help="IPA server") + parser.add_option("--realm", dest="realm_name", help="realm name") + parser.add_option("-d", "--debug", dest="debug", action="store_true", + dest="debug", default=False, help="print debugging information") + parser.add_option("-u", "--unattended", dest="unattended", + help="unattended installation never prompts the user") + + options, args = parser.parse_args() + + return options + +def logging_setup(options): + # Always log everything (i.e., DEBUG) to the log + # file. + logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s %(levelname)s %(message)s', + filename='ipaclient-install.log', + filemode='w') + + console = logging.StreamHandler() + # If the debug option is set, also log debug messages to the console + if options.debug: + console.setLevel(logging.DEBUG) + else: + # Otherwise, log critical and error messages + console.setLevel(logging.ERROR) + formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') + console.setFormatter(formatter) + logging.getLogger('').addHandler(console) + +def main(): + options = parse_options() + logging_setup(options) + + # Create the discovery instance + ds = ipaclient.ipadiscovery.IPADiscovery() + + ret = ds.search() + if ret == -10: + print "Can't get the fully qualified name of this host" + print "Please check that the client is properly configured" + return ret + if ret == -1: + logging.debug("Domain not found") + if options.domain: + dom = options.domain + elif options.unattended: + return ret + else: + print "Failed to determine your DNS domain (DNS misconfigured?)" + dom = raw_input("Please provide your domain name (ex: example.com):") + ret = ds.search(domain=dom) + if ret == -2: + logging.debug("IPA Server not found") + if options.server: + srv = options.server + elif options.unattended: + return ret + else: + print "Failed to find the IPA Server (DNS misconfigured?)" + srv = raw_input("Please provide your server name (ex: ipa.example.com):") + ret = ds.search(domain=dom, server=srv) + if ret != 0: + print "Failed to verify that "+srv+" is an IPA Server, aborting!" + return ret + + print "Discovery was successful!" + print "Realm: "+ds.getRealmName() + print "DNS Domain: "+ds.getDomainName() + print "IPA Server: "+ds.getServerName() + + return 0 + +main() -- cgit