1#!/bin/bash 2# Usage of this utility 3function usage() { 4 echo "usage: power-util mb [on|off|status|cycle|reset]"; 5 echo " power-util sled-cycle" 6} 7 8power_off() { 9 echo "Shutting down Server" 10 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 11} 12 13power_on() { 14 echo "Powering on Server" 15 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 16} 17 18power_status() { 19 st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6) 20 if [ "$st" == "On\"" ]; then 21 echo "on" 22 else 23 echo "off" 24 fi 25} 26 27power_reset() { 28 echo "Reset on server" 29 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 30} 31 32sled_cycle() { 33 i2cset -y 7 0x45 0xd9 c 34} 35 36if [ "$1" == "sled-cycle" ]; then 37 echo "SLED_CYCLE starting at $(date)" 38 sled_cycle 39 exit 0; 40fi 41 42if [ $# -lt 2 ]; then 43 echo "Total number of parameter=$#" 44 echo "Insufficient parameter" 45 usage; 46 exit 0; 47fi 48 49if [ "$1" != "mb" ]; then 50 echo "Invalid parameter1=$1" 51 usage; 52 exit 0; 53fi 54 55if [ "$2" = "on" ]; then 56 if [ "$(power_status)" == "off" ]; then 57 power_on 58 fi 59elif [ "$2" = "off" ]; then 60 if [ "$(power_status)" == "on" ]; then 61 power_off 62 fi 63elif [ "$2" == "cycle" ]; then 64 if [ "$(power_status)" == "on" ]; then 65 power_off 66 else 67 echo "WARNING: Powering on server" 68 fi 69 power_on 70elif [ "$2" == "reset" ]; then 71 if [ "$(power_status)" == "on" ]; then 72 power_reset 73 else 74 echo "ERROR: Server not powered on" 75 fi 76elif [ "$2" == "status" ]; then 77 power_status 78else 79 echo "Invalid parameter2=$2" 80 usage; 81fi 82 83exit 0; 84