diff options
Diffstat (limited to 'completions/ktutil')
-rw-r--r-- | completions/ktutil | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/completions/ktutil b/completions/ktutil new file mode 100644 index 00000000..bda4ae14 --- /dev/null +++ b/completions/ktutil @@ -0,0 +1,126 @@ +# ktutil completion + +_heimdal_principals() +{ + COMPREPLY=( $( compgen -W "$( kadmin -l dump 2>/dev/null | \ + awk '{print $1}' )" -- "$cur" ) ) +} + +_heimdal_realms() +{ + COMPREPLY=( $( compgen -W "( kadmin -l dump 2>/dev/null | \ + awk '{print $1}' | awk -F@ '{print $2}' )" -- "$cur" ) ) +} + +_heimdal_encodings() +{ + COMPREPLY=( $( compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5 \ + des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 \ + aes256-cts-hmac-sha1-96' -- "$cur" ) ) +} + +_ktutil() +{ + local cur prev words cword split + _init_completion -s || return + + local command options + + case $prev in + -p|--principal) + _heimdal_principals + return 0 + ;; + -e|--enctype) + _heimdal_encodings + return 0 + ;; + -a|--admin-server) + _known_hosts_real "$cur" + return 0 + ;; + -r|--realm) + _heimdal_realms + return 0 + ;; + -s|-k|--srvtab|--keytab) + _filedir + return 0 + ;; + esac + + $split && return 0 + + commands='add change copy get list remove rename purge srvconvert \ + srv2keytab srvcreate key2srvtab' + + for (( i=1; i < cword; i++ )); do + case ${words[i]} in + -k|--keytab) + i=$(($i+1)) + ;; + -*) + ;; + *) + command=${words[i]} + break + ;; + esac + done + + if [[ "$cur" == -* ]]; then + case $command in + add) + options='-p --principal -V -e --enctype -w --password -r \ + --random -s --no-salt -h --hex' + ;; + change) + options='-r --realm -a --admin-server -s --server-port' + ;; + get) + options='-p --principal -e --enctype -r --realm -a \ + --admin-server -s server --server-port' + ;; + list) + options='--keys --timestamp' + ;; + remove) + options='-p --principal -V --kvno -e --enctype' + ;; + purge) + options='--age' + ;; + srv2keytab|key2srvtab) + options='-s --srvtab' + ;; + *) + options='-k --keytab -v --verbose --version -v --help' + ;; + esac + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + else + case $command in + copy) + _filedir + ;; + get) + _heimdal_principals + ;; + rename) + _heimdal_principals + ;; + *) + COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) ) + ;; + esac + fi +} && +complete -F _ktutil ktutil + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |