def main(): debug = False try: from argparse import ArgumentParser argparser = ArgumentParser(description=sys.modules[__name__].__doc__) argparser.add_argument('-c', '--config', dest='config', default='pybootd/etc/pybootd.ini', help='configuration file') argparser.add_argument('-p', '--pxe', dest='pxe', action='store_true', help='enable BOOTP/DHCP/PXE server only') argparser.add_argument('-t', '--tftp', dest='tftp', action='store_true', help='enable TFTP server only') argparser.add_argument('-d', '--debug', action='store_true', help='enable debug mode') args = argparser.parse_args() debug = args.debug if not os.path.isfile(args.config): argparser.error('Invalid configuration file') if args.pxe and args.tftp: argparser.error('Cannot exclude PXE & TFTP servers altogether') cfgparser = EasyConfigParser() with open(pybootd_path(args.config), 'rt') as config: cfgparser.readfp(config) logger = logger_factory(logtype=cfgparser.get('logger', 'type', 'stderr'), logfile=cfgparser.get('logger', 'file'), level=cfgparser.get('logger', 'level', 'info')) logger.info('-'.join((PRODUCT_NAME, VERSION))) daemon = None if not args.tftp: daemon = BootpDaemon(logger, cfgparser) daemon.start() if not args.pxe: daemon = TftpDaemon(logger, cfgparser, daemon) daemon.start() if daemon: while True: daemon.join(0.5) if not daemon.is_alive(): break except Exception as e: print_('\nError: %s' % e, file=sys.stderr) if debug: import traceback print_(traceback.format_exc(), file=sys.stderr) sys.exit(1) except KeyboardInterrupt: print_("Aborting...")
def main(): usage = 'Usage: %prog [options]\n' \ ' PXE boot up server, a tiny BOOTP/DHCP/TFTP server' optparser = OptionParser(usage=usage) optparser.add_option('-c', '--config', dest='config', default='pybootd.yaml', help='configuration file') optparser.add_option('-p', '--pxe', dest='pxe', action='store_true', help='enable BOOTP/DHCP/PXE server only') optparser.add_option('-t', '--tftp', dest='tftp', action='store_true', help='enable TFTP server only') (options, args) = optparser.parse_args(sys.argv[1:]) if not options.config: raise AssertionError('Missing configuration file') if options.pxe and options.tftp: raise AssertionError('Cannot exclude both servers') #cfgparser = EasyConfigParser() config = PyBootdConfig(options.config) #with open(pybootd_path(options.config), 'rt') as config: # cfgparser.readfp(config) logger = logger_factory(logtype=config.get_logger_type(), logfile=config.get_logger_file(), level=config.get_logger_level()) logger.info('-'.join((PRODUCT_NAME, VERSION))) try: if not options.tftp or not config.enable_tftp: bt = BootpDaemon(logger, config) bt.start() else: bt = None if not options.pxe or not config.enable_bootp: ft = TftpDaemon(logger, config, bt) ft.start() while True: import time time.sleep(5) except AssertionError, e: print >> sys.stderr, "Error: %s" % str(e) sys.exit(1)
self.serve_forever() if __name__ == "__main__": usage = 'Usage: %prog [options]\n' \ ' HTTPd tiny server to exercise the pybootd daemon' optparser = OptionParser(usage=usage) optparser.add_option('-c', '--config', dest='config', help='configuration file') (options, args) = optparser.parse_args(sys.argv[1:]) if not options.config: raise AssertionError('Missing configuration file') cfgparser = EasyConfigParser() with open(options.config, 'rt') as config: cfgparser.readfp(config) logger = logger_factory(logtype=cfgparser.get('logger', 'type', 'stderr'), logfile=cfgparser.get('logger', 'file'), level=cfgparser.get('logger', 'level', 'info')) try: bt = HttpdDaemon(logger, cfgparser) bt.start() while True: import time time.sleep(5) except KeyboardInterrupt: print "Aborting..."
if __name__ == "__main__": usage = 'Usage: %prog [options]\n' \ ' HTTPd tiny server to exercise the pybootd daemon' optparser = OptionParser(usage=usage) optparser.add_option('-c', '--config', dest='config', help='configuration file') (options, args) = optparser.parse_args(sys.argv[1:]) if not options.config: raise AssertionError('Missing configuration file') cfgparser = EasyConfigParser() with open(options.config, 'rt') as config: cfgparser.readfp(config) logger = logger_factory(logtype=cfgparser.get('logger', 'type', 'stderr'), logfile=cfgparser.get('logger', 'file'), level=cfgparser.get('logger', 'level', 'info')) try: bt = HttpdDaemon(logger, cfgparser) bt.start() while True: import time time.sleep(5) except KeyboardInterrupt: print "Aborting..."