Пример #1
0
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 't:hvVI:H:U:P:o:b:p:r:')
    except getopt.GetoptError as err:
        print(str(err))
        usage()
        sys.exit(2)
    verbose = False
    interface_name = 'aardvark'
    target_address = 0x20
    target_routing = None
    rmcp_host = None
    rmcp_port = 623
    rmcp_user = ''
    rmcp_password = ''
    interface_options = list()
    for o, a in opts:
        if o == '-v':
            verbose = True
        elif o == '-h':
            usage()
            sys.exit()
        elif o == '-V':
            version()
            sys.exit()
        elif o == '-t':
            target_address = int(a, 0)
        elif o == '-b':
            target_routing = [(0x20, int(a), 0)]
        elif o == '-r':
            target_routing = a
        elif o == '-H':
            rmcp_host = a
        elif o == '-p':
            rmcp_port = int(a, 0)
        elif o == '-U':
            rmcp_user = a
        elif o == '-P':
            rmcp_password = a
        elif o == '-I':
            interface_name = a
        elif o == '-o':
            interface_options = a
            #interface_options = a.split(',')
        else:
            assert False, 'unhandled option'

    # fake sys.argv
    sys.argv = [sys.argv[0]] + args

    if len(args) == 0:
        usage()
        sys.exit(1)

    handler = logging.StreamHandler()
    if verbose:
        handler.setLevel(logging.DEBUG)
    else:
        handler.setLevel(logging.INFO)
    pyipmi.logger.add_log_handler(handler)
    pyipmi.logger.set_log_level(logging.DEBUG)

    for i in range(len(args)):
        cmd = _get_command_function(' '.join(args[0:i + 1]))
        if cmd is not None:
            args = args[i + 1:]
            break
    else:
        usage()
        sys.exit(1)

    interface_options = parse_interface_options(interface_name,
                                                interface_options)

    try:
        interface = pyipmi.interfaces.create_interface(interface_name,
                                                       **interface_options)
    except RuntimeError as e:
        print(e)
        sys.exit(1)

    ipmi = pyipmi.create_connection(interface)
    ipmi.target = pyipmi.Target(target_address)

    if target_routing is not None:
        ipmi.target.set_routing(target_routing)

    if rmcp_host is not None:
        ipmi.session.set_session_type_rmcp(rmcp_host, rmcp_port)
        ipmi.session.set_auth_type_user(rmcp_user, rmcp_password)
        ipmi.session.establish()

    try:
        cmd(ipmi, args)
    except pyipmi.errors.CompletionCodeError as e:
        print('Command returned with completion code 0x%02x' % e.cc)
        if verbose:
            traceback.print_exc()
        sys.exit(1)
    except pyipmi.errors.IpmiTimeoutError as e:
        print('Command timed out')
        if verbose:
            traceback.print_exc()
        sys.exit(1)
    except KeyboardInterrupt as e:
        if verbose:
            traceback.print_exc()
        sys.exit(1)

    finally:
        if rmcp_host is not None:
            ipmi.session.close()
Пример #2
0
import pyipmi
import pyipmi.interfaces

# Supported interface_types for ipmitool are: 'lan' , 'lanplus', and 'serial-terminal'
interface = pyipmi.interfaces.create_interface('ipmitool', interface_type='lan')

connection = pyipmi.create_connection(interface)

connection.target = pyipmi.Target(0x82)
connection.target.set_routing([(0x81,0x20,0),(0x20,0x82,7)])

connection.session.set_session_type_rmcp('172.16.31.11', port=623)
connection.session.set_auth_type_user('admin', 'admin')
connection.session.establish()

connection.get_device_id()
Пример #3
0
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 't:hvVI:H:U:P:o:b:')
    except getopt.GetoptError as err:
        print(str(err))
        usage()
        sys.exit(2)
    verbose = False
    interface_name = 'aardvark'
    target_address = 0x20
    target_routing = [(0x20, 0)]
    rmcp_host = None
    rmcp_user = ''
    rmcp_password = ''
    interface_options = list()
    for o, a in opts:
        if o == '-v':
            verbose = True
        elif o == '-h':
            usage()
            sys.exit()
        elif o == '-V':
            version()
            sys.exit()
        elif o == '-t':
            target_address = int(a, 0)
        elif o == '-b':
            target_routing = [(0x20, int(a))]
        elif o == '-H':
            rmcp_host = a
        elif o == '-U':
            rmcp_user = a
        elif o == '-P':
            rmcp_password = a
        elif o == '-I':
            interface_name = a
        elif o == '-o':
            interface_options = a.split(',')
        else:
            assert False, 'unhandled option'

    # fake sys.argv
    sys.argv = [sys.argv[0]] + args

    if len(args) == 0:
        usage()
        sys.exit(1)

    handler = logging.StreamHandler()
    if verbose:
        handler.setLevel(logging.DEBUG)
    else:
        handler.setLevel(logging.INFO)
    pyipmi.logger.add_log_handler(handler)
    pyipmi.logger.set_log_level(logging.DEBUG)

    for i in range(len(args)):
        cmd = _get_command_function(' '.join(args[0:i + 1]))
        if cmd is not None:
            args = args[i + 1:]
            break
    else:
        usage()
        sys.exit(1)

    aardvark_serial = None
    aardvark_pullups = None
    aardvark_target_power = None

    for option in interface_options:
        (name, value) = option.split('=', 1)
        if (interface_name, name) == ('aardvark', 'serial'):
            aardvark_serial = value
        elif (interface_name, name, value) == ('aardvark', 'pullups', 'on'):
            aardvark_pullups = True
        elif (interface_name, name, value) == ('aardvark', 'pullups', 'off'):
            aardvark_pullups = False
        elif (interface_name, name, value) == ('aardvark', 'power', 'on'):
            aardvark_target_power = True
        elif (interface_name, name, value) == ('aardvark', 'power', 'off'):
            aardvark_target_power = False
        else:
            print('Warning: unknown option %s' % name)

    try:
        if interface_name == 'aardvark':
            interface = pyipmi.interfaces.create_interface(
                interface_name, serial_number=aardvark_serial)
        else:
            interface = pyipmi.interfaces.create_interface(interface_name)
    except RuntimeError as e:
        print(e)
        sys.exit(1)

    if aardvark_pullups:
        interface.enable_pullups(aardvark_pullups)
    if aardvark_target_power:
        interface.enable_target_power(aardvark_target_power)

    ipmi = pyipmi.create_connection(interface)
    ipmi.target = pyipmi.Target(target_address)
    ipmi.target.set_routing(target_routing)

    if rmcp_host is not None:
        ipmi.session.set_session_type_rmcp(rmcp_host)
        ipmi.session.set_auth_type_user(rmcp_user, rmcp_password)
        ipmi.session.establish()

    try:
        cmd(ipmi, args)
    except pyipmi.errors.CompletionCodeError as e:
        print('Command returned with completion code 0x%02x' % e.cc)
        if verbose:
            traceback.print_exc()
        sys.exit(1)
    except pyipmi.errors.IpmiTimeoutError as e:
        print('Command timed out')
        if verbose:
            traceback.print_exc()
        sys.exit(1)
    except KeyboardInterrupt as e:
        if verbose:
            traceback.print_exc()
        sys.exit(1)

    if rmcp_host is not None:
        ipmi.session.close()
Пример #4
0
        if interface_name == 'aardvark':
            interface = pyipmi.interfaces.create_interface(
                interface_name, serial_number=aardvark_serial)
        else:
            interface = pyipmi.interfaces.create_interface(interface_name)
    except RuntimeError, e:
        print e
        sys.exit(1)

    if aardvark_pullups:
        interface.enable_pullups(aardvark_pullups)
    if aardvark_target_power:
        interface.enable_target_power(target_power)

    ipmi = pyipmi.create_connection(interface)
    ipmi.target = pyipmi.Target(target_address)
    ipmi.target.set_routing_information(target_routing)

    if rmcp_host is not None:
        ipmi.session.set_session_type_rmcp(rmcp_host)
        ipmi.session.set_auth_type_user(rmcp_user, rmcp_password)
        ipmi.session.establish()

    try:
        cmd(ipmi, args)
    except pyipmi.errors.CompletionCodeError, e:
        print 'Command returned with completion code 0x%02x' % e.cc
        if verbose:
            traceback.print_exc()
        sys.exit(1)
    except pyipmi.errors.TimeoutError, e: