/usr/sbin/bcfg2-admin is in bcfg2-server 1.3.3-1ubuntu3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #! /usr/bin/python
""" bcfg2-admin is a script that helps to administer a Bcfg2
deployment. """
import re
import sys
import logging
import Bcfg2.Logger
import Bcfg2.Options
import Bcfg2.Server.Admin
from Bcfg2.Compat import StringIO
def mode_import(modename):
"""Load Bcfg2.Server.Admin.<mode>."""
modname = modename.capitalize()
mod = getattr(__import__("Bcfg2.Server.Admin.%s" %
(modname)).Server.Admin, modname)
return getattr(mod, modname)
def get_modes():
"""Get all available modes, except for the base mode."""
return [x.lower() for x in Bcfg2.Server.Admin.__all__ if x != 'mode']
def create_description():
"""Create the description string from the list of modes."""
modes = get_modes()
description = StringIO()
description.write("Available modes are:\n\n")
for mode in modes:
try:
doc = re.sub(r'\s{2,}', ' ', mode_import(mode).__doc__.strip())
except (ImportError, SystemExit):
continue
description.write((" %-15s %s\n" % (mode, doc)))
return description.getvalue()
def main():
optinfo = dict()
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
setup = Bcfg2.Options.OptionParser(optinfo)
# override default help message to include description of all modes
setup.hm = "Usage:\n\n%s\n%s" % (setup.buildHelpMessage(),
create_description())
setup.parse(sys.argv[1:])
if setup['debug']:
level = logging.DEBUG
elif setup['verbose']:
level = logging.INFO
else:
level = logging.WARNING
Bcfg2.Logger.setup_logging('bcfg2-admin', to_syslog=setup['syslog'],
level=level)
log = logging.getLogger('bcfg2-admin')
# Provide help if requested or no args were specified
if (not setup['args'] or len(setup['args']) < 1 or
setup['args'][0] == 'help' or setup['help']):
if len(setup['args']) > 1:
# Get help for a specific mode by passing it the help argument
setup['args'] = [setup['args'][1], setup['args'][0]]
else:
# Print short help for all modes
print(setup.hm)
raise SystemExit(0)
if setup['args'][0] in get_modes():
modname = setup['args'][0].capitalize()
if len(setup['args']) > 1 and setup['args'][1] == 'help':
mode_cls = mode_import(modname)
mode_cls.usage(rv=0)
try:
mode_cls = mode_import(modname)
except ImportError:
err = sys.exc_info()[1]
log.error("Failed to load admin mode %s: %s" % (modname, err))
raise SystemExit(1)
mode = mode_cls(setup)
try:
return mode(setup['args'][1:])
finally:
mode.shutdown()
else:
log.error("Error: Unknown mode '%s'\n" % setup['args'][0])
print(create_description())
raise SystemExit(1)
if __name__ == '__main__':
try:
sys.exit(main())
except KeyboardInterrupt:
raise SystemExit(1)
|