classify-users: determine type of Athena accounts
[user/alex/software/my-snippets.git] / krbroot
diff --git a/krbroot b/krbroot
index 387ab569591c760fa86335389bc75bbcad5d3a13..e1d7f9d59382822e89504df1e0205cf97ec26744 100755 (executable)
--- 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
         ;;
     *)