Skip to main content

A library for BCM functionality.

Project description

Starlyng BCM Connection

A Python library for executing Baseboard Management Controller (BMC) commands on servers using IPMI.

Features

  • Execute BMC commands on remote servers using IPMI via execute_bcm_command
  • Parallel execution of commands across multiple servers using threading
  • Comprehensive error logging and handling
  • Support for common IPMI operations:
    • Power management (status, on, off, cycle, reset)
    • System Event Log (SEL) operations
    • Chassis control
  • Flexible server configuration through BCMServer class
  • Secure connection handling with IPMI over LAN (LANPLUS)
  • Command output capture and structured response handling
  • Utility functions for hostname and IP address management:
    • Generate consistent host IDs and hostnames
    • Handle both local and public IP configurations
    • VLAN-aware IP address management

Prerequisites

Before you begin, ensure you have:

  • Python 3.9 or higher installed
  • ipmitool installed on your system:
    • Ubuntu: sudo apt-get install ipmitool
    • macOS: brew install ipmitool
  • If outside local network, configure port forwarding on your router:
    • Forward BCM port 623 to each server's unique port (62300-62399)
    • Example: Forward port 62300 to 192.168.50.1:623, port 62301 to 192.168.50.2:623
    • Port range must be between 62300-62399

Installation

pip install starlyng-bcm-connection

Usage

Basic Example

from bcm_connection import BCMServer, execute_bcm_command

# Create a BCM server instance
server = BCMServer(
    bcm_ip="192.168.1.1",
    bcm_user="admin"
    bcm_pass="password"
    bcm_port=623
)

# Execute a command
# Pass server in a list since execute_bcm_command expects List[BCMServer]
result = execute_bcm_command([server], "power status")
print(result)

Hostname and IP Management

from bcm_connection import get_hostname, get_host_id, get_ip_for_bcm

# Generate a hostname for a local server
hostname = get_hostname("server", "192.168.1.20", 623, public_ip=False)
# Result: "server10" (20 - 10 = 10)

# Generate a hostname for a public server
hostname = get_hostname("server", "203.0.113.1", 62345, public_ip=True)
# Result: "server45" (last two digits of port)

# Get BCM IP address with VLAN
bcm_ip = get_ip_for_bcm("192.168.1.20", vlan_id=50, public_ip=False)
# Result: "192.168.50.20" (VLAN ID injected)

Available BMC Commands

Common IPMI commands you can execute:

  • power status - Get power status
  • power on - Power on the server
  • power off - Power off the server
  • power cycle - Power cycle the server
  • power reset - Reset the server

Contributing

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -am 'Add some YourFeature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a pull request

Contact

If you have any questions, please contact:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlyng_bcm_connection-0.1.2.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starlyng_bcm_connection-0.1.2-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file starlyng_bcm_connection-0.1.2.tar.gz.

File metadata

  • Download URL: starlyng_bcm_connection-0.1.2.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.20

File hashes

Hashes for starlyng_bcm_connection-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2c80a8bcc0c8c79e8420ad609522da9cc3cdad95284bf5951bd710fcd84b8bc0
MD5 82d775f1be408481ea4e9aee3d03af5c
BLAKE2b-256 6fcce817e5f0db454c108fd5144ceb84eee1b38473edca9762572339c8607b09

See more details on using hashes here.

File details

Details for the file starlyng_bcm_connection-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for starlyng_bcm_connection-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d7216cf7102497061467d123d44456ff9abd51a61d9e5f90cfd58b7619530345
MD5 bf25586c3756df41d90859a2288d1311
BLAKE2b-256 6c2ca2c7fa4b518aca3d52ba3396147ee4a4544b46afc0ca6786df46ce8cdcb1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page