IPMIToolkit Improvements: provisioning order, password length, sensor-based health
Provisioning created hdview/hdroot after disabling users 1-8, so a failed create left the BMC with every account disabled. Create both accounts, prove they authenticate with 'user test', and only then disable 1-8.
'user set password' defaults to a 16-byte write, so passwords longer than 16 characters were truncated or refused with no error. Pass the 16/20 length byte explicitly and reject anything over 20 up front. Add callin=on and link=on to channel setaccess; some firmware refuses a lanplus login without them, which presents as a wrong password on an account that works locally.
Load ipmi_si/ipmi_devintf/ipmi_msghandler directly. The old find loop globbed 'ipmi.ko' and did nothing on EL8+, where modules ship as .ko.xz. Install ipmitool rather than OpenIPMI-tools, which has not carried /usr/bin/ipmitool since EL6, and pick dnf/yum/apt.
Take health from 'ipmitool sdr' instead of the SEL. The SEL is a historical log, so a fan replaced two years ago read as a fault today. Sensors reporting 'ns' are unpopulated rather than failed - counting them flagged every single-PSU chassis. The SEL is now an event count plus the last ten entries.
Cache the BMC firmware lookup instead of running a 10s curl on every menu redraw, and extend it past the X11 filename convention to X10, X9 and X8, with the shared catalog on codesilo as the offline source for bench VLANs. Retry slash-named boards without the slash, whose URL 404s, and normalise a zero-padded major. Say so explicitly when no source can answer instead of printing nothing, which read as up to date.
Factory reset treated an empty LAN read as success and printed SUCCESS after printing ERROR. Poll for the BMC to answer, then report the before/after comparison once. Drop the undocumented 0x30 0x41 fallback and point at IPMICFG.
Correct 'sel clear' syntax and move SEL clearing to its own menu entry so the health dashboard is genuinely read-only.
Add a version header, --config/--health/--no-color/--version/--help, exit codes 0/1/2, a root check, address and netmask validation, and colour blanking when stdout is not a terminal.