diff options
author | PMR <pmr@pmr-lander> | 2020-02-21 21:20:41 +0000 |
---|---|---|
committer | PMR <pmr@pmr-lander> | 2020-02-21 21:20:41 +0000 |
commit | 63b2f42f1340792de61d815be8c7fe7ab99cac47 (patch) | |
tree | 8f77e685addf999b65e38fa38294c413f5d0972e /bin | |
parent | 763cb930af9f2ab9c68e0aab63500cee5cc787f3 (diff) | |
parent | fa02f252d18b700247eede9ea78baf2f8792ed13 (diff) |
Merge #379584 from ~alanec/plainbox-provider-checkbox:update-ipmi-tests
Converted bin/ipmi_test use FreeIPMI. Added checks for IPMI version + ipmi-locate. Enhanced output readability.
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/ipmi_test | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/bin/ipmi_test b/bin/ipmi_test index 12ca42c..74a320b 100755 --- a/bin/ipmi_test +++ b/bin/ipmi_test @@ -1,6 +1,8 @@ #!/bin/bash # Now make sure the modules are loaded + +echo '---------------------------------' && echo 'Verifying kernel modules:' && echo for module in ipmi_si ipmi_devintf ipmi_powernv ipmi_ssif ipmi_msghandler; do if lsmod |grep -q $module; then echo "$module already loaded" @@ -23,37 +25,60 @@ for module in ipmi_si ipmi_devintf ipmi_powernv ipmi_ssif ipmi_msghandler; do fi done -# Now get our info from ipmitool to make sure communication works -# First lest check chassis status -echo -echo "Checking for chassis status" -ipmitool chassis status && echo "Successfully got chassis status" && chassis=0 || chassis=1 -echo "Checking to see if we can get power status" -ipmitool power status && echo "Successfully got power status" && power=0 || power=1 +# Now get our info from FreeIPMI to make sure communication works +# First lets check chassis status + +echo '---------------------------------' && echo "Fetching chassis status:" && echo +(ipmi-chassis --get-status) && echo && echo "Successfully fetched chassis status..." && chassis=0 \ + || chassis=1 + + +echo '---------------------------------' && echo "Fetching power status:" && echo +(ipmi-chassis --get-status | grep 'System Power') && echo \ + && echo "Successfully fetched power status.." && power=0 || power=1 -echo "Checking to see if we can get user data" + +echo '---------------------------------' && echo "Fetching IPMI channel user data:" && echo # LP:1794926 Find the active channel. blindly calling user list sometimes # fails. channel=99 for x in 0 1 2 3 4 5 6 7 8 9 10 11 14 15; do - if ipmitool channel getaccess $x 2>1 >/dev/null; then + if !(ipmi-config --checkout --lan-channel-number $x 2>&1 >/dev/null | grep -q '^Unable to get Number of Users$'); then channel=$x - echo "Channel in use appears to be $channel" + echo "IPMI channel: $channel" && echo break fi done -if [ $channel -lt 99 ]; then - ipmitool user list $channel && echo "Successfully got user data" && user=0 || user=1 -else - user=1 -fi -echo "Checking to see if we can get info on the BMC" -ipmitool bmc info && echo "Successfully got BMC information" && bmc=0 || bmc=1 +# Extrapolate user list from general IPMI function +(ipmi-config --checkout --category=core | grep -A 19 "User[0-9]*.$" | sed '/#/d' | grep -v "Section$" | sed 's/Section //') \ + && echo && echo "Successfully fetched IPMI channel & user data..." && user=0 || user=1 + + +echo '---------------------------------' && echo "Fetching BMC information and checking IPMI version:" && echo +bmc-info && echo && echo "Successfully called BMC-info..." && echo && bmc=0 || bmc=1 + +version=$(bmc-info | awk '/IPMI Version/ {print $4}') +echo "IPMI Version: $version" && echo +# parse major from ipmi version +version=$(echo $version| cut -d'.' -f1) +# can refactor to evaluate in final check function +if [ $version -lt 2 ]; then + ipmiV=1 && echo "IPMI version below 2.0..." + else + ipmiV=0 && echo "IPMI version OK..." + fi + + +echo '---------------------------------' && echo "Calling IPMI-locate" && echo +(ipmi-locate) && echo "Successfully called ipmi-locate..." && ipmiL=0 || ipmiL=1 + # if everything passes, exit 0 -[ $chassis -eq 0 ] && [ $power -eq 0 ] && [ $user -eq 0 ] && [ $bmc -eq 0 ] && exit 0 || echo "FAILURE: chassis: $chassis power: $power user: $user bmc: $bmc" +[ $chassis -eq 0 ] && [ $power -eq 0 ] && [ $user -eq 0 ] && [ $bmc -eq 0 ] && [ $ipmiV -eq 0 ] && [ $ipmiL -eq 0 ] \ + && echo "## IPMI checks succeeded. ##" && echo && exit 0 \ + || echo "## FAILURE: chassis: $chassis power: $power user: $user bmc: $bmc ipmi_version: $ipmiV ipmi_locate: $ipmiL ##" # otherwise exit 1 exit 1 |