#!/bin/bash # Usage of this utility function usage() { echo "usage: power-util mb [on|off|status|cycle|reset]"; echo " power-util sled-cycle" } power_off() { echo "Shutting down Server" busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off } power_on() { echo "Powering on Server" busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.On } power_status() { st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6) if [ "$st" == "On\"" ]; then echo "on" else echo "off" fi } power_reset() { echo "Reset on server" busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Reset } sled_cycle() { i2cset -y 7 0x45 0xd9 c } if [ "$1" == "sled-cycle" ]; then echo "SLED_CYCLE starting at $(date)" sled_cycle exit 0; fi if [ $# -lt 2 ]; then echo "Total number of parameter=$#" echo "Insufficient parameter" usage; exit 0; fi if [ "$1" != "mb" ]; then echo "Invalid parameter1=$1" usage; exit 0; fi if [ "$2" = "on" ]; then if [ "$(power_status)" == "off" ]; then power_on fi elif [ "$2" = "off" ]; then if [ "$(power_status)" == "on" ]; then power_off fi elif [ "$2" == "cycle" ]; then if [ "$(power_status)" == "on" ]; then power_off else echo "WARNING: Powering on server" fi power_on elif [ "$2" == "reset" ]; then if [ "$(power_status)" == "on" ]; then power_reset else echo "ERROR: Server not powered on" fi elif [ "$2" == "status" ]; then power_status else echo "Invalid parameter2=$2" usage; fi exit 0;