summaryrefslogblamecommitdiffstats
path: root/ipmi-fan
blob: f488179c13b6960bbe04f7a1fdb397f0a2887332 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                         












































                                                     
#!/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

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 $@
remember that computers suck.