#!/bin/sh 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 init () { kinit -F -5 -l15m "$principal" "$@" } case ${1:-} in init) shift; exec kinit -F -5 -l15m "$principal" "$@" ;; destroy) exec kdestroy -5 ;; shell) klist -s || init || exit 1; HOST="`hostname` (krb:$addrend)" pagsh -c $SHELL ;; screen) klist -s || init || exit 1; HOST="`hostname` (krb:$addrend)" pagsh -c 'exec "$@"' exec "$@" ;; ssh) klist -s || init || exit 1; shift exec ssh -k -l root "$@" ;; rlogin) klist -s || init || exit 1; exec rlogin -x -l root $2 ;; *) if [ $# = 0 ]; then echo "Usage: $0 init" >&2 echo " $0 destroy" >&2 echo " $0 shell" >&2 echo " $0 ssh [args]" >&2 echo " $0 rlogin [args]" >&2 echo " $0 [cmd]" >&2 else exec "$@" fi ;; esac