krbroot: Support non-default instances
authorAlex Dehnert <adehnert@mit.edu>
Fri, 17 May 2013 06:17:06 +0000 (02:17 -0400)
committerAlex Dehnert <adehnert@mit.edu>
Fri, 17 May 2013 06:17:06 +0000 (02:17 -0400)
Also, non-default principals more generally and non-default KRB5CCNAME values.

krbroot

diff --git a/krbroot b/krbroot
index 387ab569591c760fa86335389bc75bbcad5d3a13..5f0515dc01a36f6a7a8f189e90e78cfdfd3972a5 100755 (executable)
--- a/krbroot
+++ b/krbroot
@@ -1,30 +1,51 @@
 #!/bin/sh
-export KRB5CCNAME=/tmp/krb5cc_$(id -u).root
+
+usage="Usage: $0 [-i instance] [-p principal] [-a addrend] subcommand [args]"
+
+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 $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
         ;;
     *)