X-Git-Url: https://snippets.scripts.mit.edu/gitweb.cgi/Scripts/git/.git/blobdiff_plain/8bc1ed6486aa6c49c5e50b85cacd58badb08e359..refs/heads/master:/kerberos/kdo diff --git a/kerberos/kdo b/kerberos/kdo index e06910f..b171c4b 100644 --- a/kerberos/kdo +++ b/kerberos/kdo @@ -40,15 +40,15 @@ # CONFIGURATION kdo_args=(-l15m -r60m -F) -# CC interface for OS X -if [ "Darwin" = "$(uname)" ]; then +# CC interface for OS X or modern MIT krb5 +if type kswitch &>/dev/null; then kcaches () { - klist -A | perl -ne '$cache = $1 if /^Kerberos 5 ticket cache: '\''(.*)'\''/; print "$1 $cache\n" if /^Default principal: (.*)$/' + klist -A | perl -ne '$cache = $1 if /^(?:Kerberos 5 ticket|Ticket|Credentials) cache: '\''?(.*)'\''?/; print "$1 $cache\n" if /^(?:Default p|P)rincipal: (.*)$/' } knewcache () { princ="$1"; shift - local oldcache="$(klist | grep 'Kerberos 5 ticket cache' | cut -f 2 -d "'")" + local oldcache="$(klist | perl -ne 'print $1 if /^(?:Kerberos 5 ticket|Ticket|Credentials) cache: '\''?(.*)'\''?/')" # " # <-- emacs thinks there's an unbalanced " on the previous line. kinit "$@" "$princ" || return 1 cache="$(kfindcache "$princ")" @@ -64,7 +64,7 @@ fi # If kcaches and knewcache have been defined for this platform, then # setup kdo. Otherwise, add a helpful error. -if hash kcaches &>/dev/null && hash knewcache &>/dev/null; then +if type kcaches &>/dev/null && type knewcache &>/dev/null; then kfindcache () { kcaches | fgrep "$1" | cut -d' ' -f2- } @@ -76,7 +76,7 @@ if hash kcaches &>/dev/null && hash knewcache &>/dev/null; then # destroy that cache so we don't try to use it again and clear # $cache so that we'll revert to acquiring a new set of # tickets - if [ -n "$cache" ] && ! klist -s "$cache"; then + if [ -n "$cache" ] && ! (KRB5CCNAME="$cache" klist -s); then KRB5CCNAME="$cache" kdestroy cache="" fi @@ -99,20 +99,21 @@ if hash kcaches &>/dev/null && hash knewcache &>/dev/null; then COMPREPLY=($(compgen -c -- "${cur}")) esac } - complete -o bashdefault -F _kdo kdo + if type complete &>/dev/null; then + complete -o bashdefault -F _kdo kdo + fi - krootssh () { - kdo ${ATHENA_USER:-$USER}/root@ATHENA.MIT.EDU ssh -o GSSAPIDelegateCredentials=no "$@" - } else kdo () { echo "kdo has not been ported to this platform yet." >&2 return 1 } - - krootssh () { - echo "kdo has not been ported to this plastform yet." >&2 - return 1 - } fi +krootssh () { + kdo ${ATHENA_USER:-$USER}/root@ATHENA.MIT.EDU ssh -o GSSAPIDelegateCredentials=no "$@" +} + +krootscp () { + kdo ${ATHENA_USER:-$USER}/root@ATHENA.MIT.EDU scp -o GSSAPIDelegateCredentials=no "$@" +}