bash-completion/completions/ipmitool

201 lines
5.7 KiB
Bash

# bash completion for ipmitool -*- shell-script -*-
_ipmitool_singleline_help()
{
COMPREPLY=( $( compgen -W "$( $1 $2 2>&1 | \
sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p' )" -- "$cur" ) )
}
_ipmitool()
{
local cur prev words cword
_init_completion || return
case $prev in
-h|-V|-p|-U|-e|-k|-y|-P|-m|-b|-t|-B|-T|-l)
return 0
;;
-d)
COMPREPLY=( $( compgen -W "$( \
command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* \
2>/dev/null | sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p' )" \
-- "$cur" ) )
return 0
;;
-I)
COMPREPLY=( $( compgen -W "$( $1 -h 2>&1 | \
sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' \
-ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p' )" \
-- "$cur" ) )
return 0
;;
-H)
_known_hosts_real "$cur"
return 0
;;
-f|-S|-O)
_filedir
return 0
;;
-C)
COMPREPLY=( $( compgen -W '{0..14}' -- "$cur" ) )
return 0
;;
-L)
COMPREPLY=( $( compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' \
-- "$cur" ) )
return 0
;;
-A)
COMPREPLY=( $( compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur" ) )
return 0
;;
-o)
COMPREPLY=( $( compgen -W "$( $1 -o list 2>&1 | \
awk '/^[ \t]+/ { print $1 }' ) list" -- "$cur" ) )
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '$( _parse_help "$1" -h)' -- "$cur" ) )
return 0
fi
# Find out command and subcommand
local cmds=( raw i2c spd lan chassis power event mc sdr sensor fru gendev
sel pef sol tsol isol user channel session sunoem kontronoem picmg fwum
firewall shell exec set hpm ekanalyzer)
local i c cmd subcmd
for (( i=1; i < ${#words[@]}-1; i++ )); do
[[ -n $cmd ]] && subcmd=${words[i]} && break
for c in ${cmds[@]}; do
[[ ${words[i]} == $c ]] && cmd=$c && break
done
done
if [[ -z $cmd ]]; then
COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) )
return 0
fi
# Command/subcommand completions
case $cmd in
shell)
;;
exec)
_filedir
;;
chassis|power|kontronoem|fwum)
_ipmitool_singleline_help $1 $cmd
;;
lan)
case $subcmd in
print|set)
;;
alert)
[[ $prev == alert ]] && \
COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) )
;;
stats)
[[ $prev == stats ]] && \
COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W 'print set alert stats' \
-- "$cur" ) )
;;
esac
;;
sdr)
case $subcmd in
get|info|type|list|entity)
;;
elist)
COMPREPLY=( $( compgen -W 'all full compact event mclog fru
generic' -- "$cur" ) )
;;
dump)
_filedir
;;
fill)
case $prev in
fill)
COMPREPLY=( $( compgen -W 'sensors file' \
-- "$cur" ) )
;;
file)
_filedir
;;
esac
;;
*)
COMPREPLY=( $( compgen -W 'get info type list elist entity
dump fill' -- "$cur" ) )
;;
esac
;;
sensor)
case $subcmd in
list|get|thresh)
;;
*)
COMPREPLY=( $( compgen -W 'list get thresh' -- "$cur" ) )
;;
esac
;;
sel)
case $subcmd in
info|clear|list|elist|delete)
;;
add|save|writeraw|readraw)
_filedir
;;
time)
[[ $prev == time ]] && \
COMPREPLY=( $( compgen -W 'get set' -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W 'info clear list elist delete add
get save writeraw readraw time' -- "$cur" ) )
;;
esac
;;
user)
case $subcmd in
summary|list|disable|enable|priv|test)
;;
set)
[[ $prev == set ]] && \
COMPREPLY=( $( compgen -W 'name password' -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W 'summary list set disable enable
priv test' -- "$cur" ) )
;;
esac
;;
set)
[[ $prev == set ]] && \
COMPREPLY=( $( compgen -W 'hostname username password privlvl
authtype localaddr targetaddr port csv verbose' \
-- "$cur" ) )
;;
esac
} &&
complete -F _ipmitool ipmitool
# ex: ts=4 sw=4 et filetype=sh