Example #1
0
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...")
Example #2
0
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/etc/pybootd.ini',
                         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()
    with open(pybootd_path(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'))
    logger.info('-'.join((PRODUCT_NAME, VERSION)))
    try:
        if not options.tftp:
            bt = BootpDaemon(logger, cfgparser)
            bt.start()
        else:
            bt = None
        if not options.pxe:
            ft = TftpDaemon(logger, cfgparser, bt)
            ft.start()
        while True:
            import time
            time.sleep(5)
    except AssertionError, e:
        print >> sys.stderr, "Error: %s" % str(e)
        sys.exit(1)
Example #3
0
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/etc/pybootd.ini',
                         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()
    with open(pybootd_path(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'))
    logger.info('-'.join((PRODUCT_NAME, VERSION)))
    try:
        if not options.tftp:
            bt = BootpDaemon(logger, cfgparser)
            bt.start()
        else:
            bt = None
        if not options.pxe:
            ft = TftpDaemon(logger, cfgparser, bt)
            ft.start()
        while True:
            import time
            time.sleep(5)
    except AssertionError, e:
        print >> sys.stderr, "Error: %s" % str(e)
        sys.exit(1)
Example #4
0
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...")