summaryrefslogtreecommitdiffstats
path: root/completions/ipmitool
diff options
context:
space:
mode:
Diffstat (limited to 'completions/ipmitool')
-rw-r--r--completions/ipmitool199
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