{"library":"python-ipmi","title":"Python IPMI Library","description":"The `python-ipmi` library provides a pure Python API for interacting with devices via the Intelligent Platform Management Interface (IPMI) protocol. It supports IPMI version 2.0 and offers multiple communication interfaces, including native RMCP (IPMI over LAN), legacy RMCP (requiring the external `ipmitool`), IPMB (requiring a Total Phase Aardvark or Linux `ipmb-dev` driver), and a mock interface for testing. The current version is 0.5.8, released in December 2025, and it actively supports Python > 3.6, with Python 2.x deprecated.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install python-ipmi"],"cli":null},"imports":["import pyipmi","import pyipmi.interfaces"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport pyipmi\nimport pyipmi.interfaces\n\n# Environment variables for IPMI connection details\nIPMI_HOST = os.environ.get('IPMI_HOST', '192.168.1.100')\nIPMI_USER = os.environ.get('IPMI_USER', 'admin')\nIPMI_PASSWORD = os.environ.get('IPMI_PASSWORD', 'password')\n\ninterface = None\nconnection = None\ntry:\n    # Using the native RMCP interface (IPMI over LAN)\n    interface = pyipmi.interfaces.create_interface('rmcp')\n    \n    connection = pyipmi.create_connection(interface)\n    connection.target = pyipmi.Target(IPMI_HOST)\n    connection.session.set_session_type_rmcp(username=IPMI_USER, password=IPMI_PASSWORD)\n    \n    print(f\"Attempting to establish session to {IPMI_HOST}...\")\n    connection.session.establish()\n    print(\"Session established successfully.\")\n\n    # Get Device ID command\n    device_id_response = connection.get_device_id()\n    print(f\"Device ID: {device_id_response.device_id_string}\")\n    print(f\"Manufacturer ID: {hex(device_id_response.manufacturer_id)}\")\n    print(f\"Product ID: {hex(device_id_response.product_id)}\")\n    print(f\"Firmware Revision: {device_id_response.firmware_revision.major}.{device_id_response.firmware_revision.minor}\")\n\nexcept pyipmi.errors.IpmiError as e:\n    print(f\"IPMI Error: {e}\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")\nfinally:\n    if connection:\n        try:\n            connection.session.close()\n            print(\"Session closed.\")\n        except Exception as e:\n            print(f\"Error closing session: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to establish an IPMI session using the native RMCP interface and retrieve the device ID. It relies on environment variables for sensitive connection details.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.5.8","pypi_latest":"0.5.8","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.05,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2.4,"disk_size":"18.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.03,"mem_mb":2.4,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.6,"disk_size":"20.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.06,"mem_mb":2.6,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":2.4,"disk_size":"12.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.05,"mem_mb":2.4,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":2.5,"disk_size":"12.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.05,"mem_mb":2.3,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2.2,"disk_size":"18.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-ipmi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.04,"mem_mb":2.2,"disk_size":"19M"}]}}