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()
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()
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()
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: