diff options
author | Joey Hagedorn <hagedorn@mcs.anl.gov> | 2007-07-19 18:54:02 +0000 |
---|---|---|
committer | Joey Hagedorn <hagedorn@mcs.anl.gov> | 2007-07-19 18:54:02 +0000 |
commit | 59635c22773a8a7b26c7c27891e999a3f71bbd1a (patch) | |
tree | 212575b5c0d8afe4461277a3d233e6f11a02a0ce /src/sbin/bcfg2-remote | |
parent | a242c972022895986e5b067b12b4b41b17ffa9e2 (diff) | |
download | bcfg2-59635c22773a8a7b26c7c27891e999a3f71bbd1a.tar.gz bcfg2-59635c22773a8a7b26c7c27891e999a3f71bbd1a.tar.bz2 bcfg2-59635c22773a8a7b26c7c27891e999a3f71bbd1a.zip |
merging back in xmlrpc branch for agent-mode support
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@3505 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/sbin/bcfg2-remote')
-rwxr-xr-x | src/sbin/bcfg2-remote | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/sbin/bcfg2-remote b/src/sbin/bcfg2-remote new file mode 100755 index 000000000..4b45965c6 --- /dev/null +++ b/src/sbin/bcfg2-remote @@ -0,0 +1,55 @@ +#!/usr/bin/env python +__revision__ = '$Revision$' + +from Bcfg2.tlslite.api import parsePEMKey, X509, X509CertChain +from xmlrpclib import ServerProxy +from Bcfg2.tlslite.integration.XMLRPCTransport import XMLRPCTransport +import Bcfg2.Options, Bcfg2.Logging, logging, socket + +if __name__ == '__main__': + opts = { + 'agent-port': (('-p', '<agent tcp port>', 'agent TCP port'), + False, ('communication', 'agent-port'), + '6789', False), + 'host': (('-H', '<agent host>', 'agent host'), + False, False, False, False), + 'setup': (('-C', '<configfile>', "config file path"), + False, False, '/etc/bcfg2.conf', False), + 'key': (('-k', '<ssl key>', 'ssl key path'), + False, ('communication', 'key'), False, False), + 'debug': (('-d', '<debug level>', 'debug level (0-40)'), + False, False, 0, False), + } + optparser = Bcfg2.Options.OptionParser('bcfg2', opts) + setup = optparser.parse() + Bcfg2.Logging.setup_logging('bcfg2-remote', + to_syslog=False, + level=int(setup['debug'])) + logger = logging.getLogger('bcfg2-remote') + if not setup['host']: + logger.error("-H option is required") + logger.error(optparser.helpmsg) + raise SystemExit(1) + s = open(setup['key']).read() + x509 = X509() + x509.parse(s) + certChain = X509CertChain([x509]) + #s = open("/etc/bcfg2.key").read() + privateKey = parsePEMKey(s, private=True) + + transport = XMLRPCTransport(certChain=certChain, + privateKey=privateKey) + host = setup['host'] + port = setup['agent-port'] + server = ServerProxy("https://%s:%s" % (host, port), transport) + + try: + result = server.run() + except socket.error, serr: + if serr.args[0] == 111: + logger.error("Failed to connect to client %s" % host) + elif serr.args[0] == 32: + logger.error("Connection to client %s dropped; authentication failure?" % host) + else: + logger.error("Got unexpected socket error %d" % serr.args[0]) + raise SystemExit(1) |