diff options
Diffstat (limited to '')
-rw-r--r-- | completions/ipmitool | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/completions/ipmitool b/completions/ipmitool new file mode 100644 index 0000000..920287d --- /dev/null +++ b/completions/ipmitool @@ -0,0 +1,199 @@ +# 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 |