mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-03-12 04:36:22 -07:00
200 lines
5.5 KiB
Bash
200 lines
5.5 KiB
Bash
# bash completion for ipmitool -*- shell-script -*-
|
|
|
|
_ipmitool_singleline_help()
|
|
{
|
|
COMPREPLY=($(compgen -W "$($1 $2 2>&1 |
|
|
command sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p')" -- "$cur"))
|
|
}
|
|
|
|
_ipmitool()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
case $prev in
|
|
-*[hVpUekyPmbtBTl])
|
|
return
|
|
;;
|
|
-*d)
|
|
COMPREPLY=($(compgen -W "$(
|
|
command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* \
|
|
2>/dev/null | command sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p'
|
|
)" \
|
|
-- "$cur"))
|
|
return
|
|
;;
|
|
-*I)
|
|
COMPREPLY=($(compgen -W "$($1 -h 2>&1 |
|
|
command sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' \
|
|
-ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p')" \
|
|
-- "$cur"))
|
|
return
|
|
;;
|
|
-*H)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
-*[fSO])
|
|
_filedir
|
|
return
|
|
;;
|
|
-*C)
|
|
COMPREPLY=($(compgen -W '{0..14}' -- "$cur"))
|
|
return
|
|
;;
|
|
-*L)
|
|
COMPREPLY=($(compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' \
|
|
-- "$cur"))
|
|
return
|
|
;;
|
|
-*A)
|
|
COMPREPLY=($(compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur"))
|
|
return
|
|
;;
|
|
-*o)
|
|
COMPREPLY=($(compgen -W "$($1 -o list 2>&1 |
|
|
awk '/^[ \t]+/ { print $1 }') list" -- "$cur"))
|
|
return
|
|
;;
|
|
esac
|
|
|
|
if [[ $cur == -* ]]; then
|
|
COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur"))
|
|
return
|
|
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
|
|
[[ -v cmd ]] && subcmd=${words[i]} && break
|
|
for c in "${cmds[@]}"; do
|
|
[[ ${words[i]} == "$c" ]] && cmd=$c && break
|
|
done
|
|
done
|
|
|
|
if [[ ! -v cmd ]]; then
|
|
COMPREPLY=($(compgen -W '${cmds[@]}' -- "$cur"))
|
|
return
|
|
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: filetype=sh
|