X-Git-Url: https://www.dehnerts.com/gitweb/?p=user%2Falex%2Fsoftware%2Fmy-snippets.git;a=blobdiff_plain;f=krbroot;h=e1d7f9d59382822e89504df1e0205cf97ec26744;hp=387ab569591c760fa86335389bc75bbcad5d3a13;hb=HEAD;hpb=bf8134f7426c3b4aeaf3f2d9d93b217221822366 diff --git a/krbroot b/krbroot index 387ab56..e1d7f9d 100755 --- a/krbroot +++ b/krbroot @@ -1,30 +1,54 @@ #!/bin/sh -export KRB5CCNAME=/tmp/krb5cc_$(id -u).root + +set -euf + +usage="Usage: $0 [-i instance] [-p principal] [-a addrend] subcommand [args]" + +ATHENA_USER=${ATHENA_USER:-$USER} +principal="$ATHENA_USER/root@ATHENA.MIT.EDU" +addrend="root" +while getopts "i:p:a:h" options; do + case $options in + i ) addrend="$OPTARG"; principal="$ATHENA_USER/$OPTARG@ATHENA.MIT.EDU";; + p ) principal="$OPTARG";; + a ) addrend="$OPTARG";; + h ) echo "$usage"; exit 0;; + \? ) echo "$usage"; exit 1;; + * ) echo "$usage"; exit 1;; + esac +done +shift `expr $OPTIND - 1 || :` + +export KRB5CCNAME="/tmp/krb5cc_$(id -u).$addrend" export KRBTKFILE=/dev/null -case $1 in +init () { + kinit -F -5 -l15m "$principal" "$@" +} + +case ${1:-} in init) shift; - exec kinit -F -5 -l15m $ATHENA_USER/root@ATHENA.MIT.EDU "$@" + exec kinit -F -5 -l15m "$principal" "$@" ;; destroy) exec kdestroy -5 ;; shell) - klist -s || krbroot init || exit 1; - HOST="`hostname` (krbroot)" pagsh -c $SHELL + klist -s || init || exit 1; + HOST="`hostname` (krb:$addrend)" pagsh -c $SHELL ;; screen) - klist -s || krbroot init || exit 1; - HOST="`hostname` (krbroot)" pagsh -c 'exec "$@"' exec "$@" + klist -s || init || exit 1; + HOST="`hostname` (krb:$addrend)" pagsh -c 'exec "$@"' exec "$@" ;; ssh) - klist -s || krbroot init || exit 1; + klist -s || init || exit 1; shift exec ssh -k -l root "$@" ;; rlogin) - klist -s || krbroot init || exit 1; + klist -s || init || exit 1; exec rlogin -x -l root $2 ;; *)