]> sipb.mit.edu Git - snippets/.git/blobdiff - kerberos/kdo
In kdo, reverse the order of the output of kcaches, calculate it more
[snippets/.git] / kerberos / kdo
index b6a755c962f95959740a8a807ca23e6339ccd670..e06910f3e1352a36e5bb41b01d677c0a23e61d45 100644 (file)
@@ -1,3 +1,4 @@
+# -*- mode: sh -*-
 # kdo is a shell function for interacting with multiple Kerberos
 # credential caches.
 #
@@ -23,7 +24,7 @@
 # interface to multiple credential caches by defining two functions:
 #
 #  - kcaches::
-#      Print one line per current credential cache of the form "<KRB5CCNAME> <PRINCIPAL>" 
+#      Print one line per current credential cache of the form "<PRINCIPAL> <KRB5CCNAME>"
 #  - knewcache::
 #      Without changing the current credentials cache, get credentials
 #      for the principal in $1, passing the remaining arguments to
@@ -42,12 +43,13 @@ kdo_args=(-l15m -r60m -F)
 # CC interface for OS X
 if [ "Darwin" = "$(uname)" ]; then
     kcaches () {
-        klist -A | awk '/^Kerberos 5 ticket cache:/ {cache = $5; princline=NR+1} NR==princline {print substr(cache, 2, length(cache)-2), $3}'
+        klist -A | perl -ne '$cache = $1 if /^Kerberos 5 ticket cache: '\''(.*)'\''/; print "$1 $cache\n" if /^Default principal: (.*)$/'
     }
 
     knewcache () {
         princ="$1"; shift
         local oldcache="$(klist | grep 'Kerberos 5 ticket cache' | cut -f 2 -d "'")"
+        # " # <-- emacs thinks there's an unbalanced " on the previous line.
         kinit "$@" "$princ" || return 1
         cache="$(kfindcache "$princ")"
         # On OS X, kinit will switch your default credential cache to
@@ -64,7 +66,7 @@ fi
 # setup kdo. Otherwise, add a helpful error.
 if hash kcaches &>/dev/null && hash knewcache &>/dev/null; then
     kfindcache () {
-        kcaches | fgrep "$1" | awk '{print $1}'
+        kcaches | fgrep "$1" | cut -d' ' -f2-
     }
 
     kdo () {
@@ -88,7 +90,7 @@ if hash kcaches &>/dev/null && hash knewcache &>/dev/null; then
         local cur
         COMPREPLY=()
         cur="${COMP_WORDS[COMP_CWORD]}"
-        opts="$(kcaches | awk '{ print $2 }')"
+        opts="$(kcaches | awk '{ print $1 }')"
         case $COMP_CWORD in
             1)
                 COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))