Connect to APC PDU with Redfish
This repo contains a set of Python tools for interacting with an APC PDU via the Redfish API. These scripts support API discovery, telemetry monitoring, and outlet control stress testing.
๐ง Scripts
redfish_discovery.py
Recursively crawls the Redfish API starting from the root URI and maps out all reachable endpoints. Useful for reverse engineering the API structure or validating firmware features.
- Outputs discovered paths to the terminal and saves a Markdown report for documentation.
- Automatically follows nested links and handles connection errors gracefully.
Example:
python redfish_discovery.py
Edit the script to fill in your PDU IP, credentials, and desired SSL behavior.
pdu_telemetry.py
Fetches live telemetry from the PDU, including total power usage and status details for individual outlets.
- Reports power, voltage, current, energy usage, and health info.
- Outputs formatted tables for clarity.
- Designed to be run periodically or integrated into monitoring tools.
Example:
python pdu_telemetry.py
Edit the top of the script to configure your PDU IP, port (usually 8443), credentials, and SSL settings.
Example output:
C:\Users\grant\AppData\Local\Programs\Python\Python310\python.exe "C:\Users\grant\Documents\code\dell\Connect to APC PDU with Redfish\pdu_telemetry.py"
### PDU Telemetry Report - 2025-03-28T16:39:41.764492 ###
### PDU Summary Metrics ###
โโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโ
โ Power (W) โ Apparent (VA) โ Reactive (VAR) โ Power Factor โ Energy (kWh) โ
โโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโก
โ 0 โ 0 โ 0 โ 1 โ 937.939 โ
โโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโ
### Outlet 1 Status ###
โโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโคโโโโโโโโโโคโโโโโโโโ
โ ID โ Name โ Health โ State โ Power โ Enabled โ Rated Amps โ Nominal V โ V (Actual) โ Amps โ Watts โ kWh โ
โโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโชโโโโโโโโก
โ PDU1OUTLET1 โ Outlet PDU1OUTLET1, Branch Circuit A โ OK โ Enabled โ Off โ True โ 10 โ AC208V โ 0 โ 0 โ 0 โ 0 โ
โโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโงโโโโโโโโโโงโโโโโโโโ
### Outlet 2 Status ###
โโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโคโโโโโโโโโโคโโโโโโโโ
โ ID โ Name โ Health โ State โ Power โ Enabled โ Rated Amps โ Nominal V โ V (Actual) โ Amps โ Watts โ kWh โ
โโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโชโโโโโโโโก
โ OUTLET 2 โ Outlet OUTLET 2, Branch Circuit A โ OK โ Enabled โ On โ True โ 16 โ AC208V โ 0 โ 0 โ 0 โ 0 โ
โโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโงโโโโโโโโโโงโโโโโโโโ
### Outlet 3 Status ###
โโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโคโโโโโโโโโโคโโโโโโโโ
โ ID โ Name โ Health โ State โ Power โ Enabled โ Rated Amps โ Nominal V โ V (Actual) โ Amps โ Watts โ kWh โ
โโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโชโโโโโโโโก
โ OUTLET 3 โ Outlet OUTLET 3, Branch Circuit A โ OK โ Enabled โ On โ True โ 10 โ AC208V โ 0 โ 0 โ 0 โ 0 โ
โโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโงโโโโโโโโโโงโโโโโโโโ
### Outlet 4 Status ###
โโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโคโโโโโโโโโคโโโโโโโโโโคโโโโโโโโ
โ ID โ Name โ Health โ State โ Power โ Enabled โ Rated Amps โ Nominal V โ V (Actual) โ Amps โ Watts โ kWh โ
โโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโชโโโโโโโโก
โ OUTLET 4 โ Outlet OUTLET 4, Branch Circuit A โ OK โ Enabled โ On โ True โ 16 โ AC208V โ 0 โ 0 โ 0 โ 0 โ
โโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโงโโโโโโโโโงโโโโโโโโโโงโโโโโโโโ
Process finished with exit code 0
stress_test_outlet.py
Sends rapid toggle requests to a specified outlet to simulate control stress or validate firmware stability under load.
- Supports CLI options for outlet number, duration, interval, SSL, and verbosity.
- Logs each request and response to a file for auditing/debugging.
- Tracks success/failure metrics and reports errors at the end.
Examples:
# Basic usage
python stress_test_outlet.py --pdu-ip 192.168.1.100 --username admin --password secret
# Stress outlet 2 for 2 minutes, toggling every 5 seconds
python stress_test_outlet.py --pdu-ip 192.168.1.100 --username admin --password secret --outlet 2 --duration 120 --interval 5
# Enable verbose logging and SSL verification
python stress_test_outlet.py --pdu-ip 192.168.1.100 --username admin --password secret --verify -v
โ๏ธ Notes
- All scripts communicate with the Redfish API over HTTPS (default port:
8443
). - These tools have been tested on APC PDUs but may work with other Redfish-compatible hardware.
- SSL verification is disabled by default โ enable it for production use.