diff options
Diffstat (limited to 'ipmi-fan')
-rwxr-xr-x | ipmi-fan | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/ipmi-fan b/ipmi-fan new file mode 100755 index 0000000..8fb5dbc --- /dev/null +++ b/ipmi-fan @@ -0,0 +1,64 @@ +#!/bin/sh +# +# | _ +# | o o | | +# | _ _ _ _ | | __, _ _ +# | | |/ \_/ |/ |/ | |-----|/ / | / |/ | +# | |_/|__/ | | |_/|_/ |__/\_/|_/ | |_/ +# | /| |\ +# | \| |/ +# +# ipmi-fan +# +# controls fan speed for servers and computers using ipmi +# only supports dell idrac 6 for now (r710 battletested) +# +# ~ rgoncalves.se + +. ./ipmi.sh +. ./log.sh + +usage() { + cat <<-EOF + usage: ${0} -s speed + EOF +} + +log() { + echo "[${0} ] $@" +} + +main() { + # parse + while getopts "s:" arg; do + case "${arg}" in + s) + speed="${OPTARG}" + ;; + *) + usage + exit 1 + ;; + esac + done + + # Check fan speed validity + if [ -z ${speed} ]; then + log "-s must be a valid fan speend" + usage + exit 1 + fi + + # load environment variables for IPMI + ipmi_env + + # disable automatic fan control + ipmi_cmd raw 0x30 0x30 0x01 0x00 + log "automatic fan control disabled" + + # change fan speed + ipmi_cmd raw 0x30 0x30 0x02 0xff "0x${speed}" + log "set fan control to ${speed}" +} + +main $@ |