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 $@  |