classify-users: determine type of Athena accounts
[user/alex/software/my-snippets.git] / krbroot
1 #!/bin/sh
2
3 set -euf
4
5 usage="Usage: $0 [-i instance] [-p principal] [-a addrend] subcommand [args]"
6
7 ATHENA_USER=${ATHENA_USER:-$USER}
8 principal="$ATHENA_USER/root@ATHENA.MIT.EDU"
9 addrend="root"
10 while getopts "i:p:a:h" options; do
11     case $options in
12         i ) addrend="$OPTARG"; principal="$ATHENA_USER/$OPTARG@ATHENA.MIT.EDU";;
13         p ) principal="$OPTARG";;
14         a ) addrend="$OPTARG";;
15         h ) echo "$usage"; exit 0;;
16         \? ) echo "$usage"; exit 1;;
17         * ) echo "$usage"; exit 1;;
18     esac
19 done
20 shift `expr $OPTIND - 1 || :`
21
22 export KRB5CCNAME="/tmp/krb5cc_$(id -u).$addrend"
23 export KRBTKFILE=/dev/null
24
25 init () {
26     kinit -F -5 -l15m "$principal" "$@"
27 }
28
29 case ${1:-} in
30     init)
31         shift;
32         exec kinit -F -5 -l15m "$principal" "$@"
33         ;;
34     destroy)
35         exec kdestroy -5
36         ;;
37     shell)
38         klist -s || init || exit 1;
39         HOST="`hostname` (krb:$addrend)" pagsh -c $SHELL
40         ;;
41     screen)
42         klist -s || init || exit 1;
43         HOST="`hostname` (krb:$addrend)" pagsh -c 'exec "$@"' exec "$@"
44         ;;
45     ssh)
46         klist -s || init || exit 1;
47         shift
48         exec ssh -k -l root "$@"
49         ;;
50     rlogin)
51         klist -s || init || exit 1;
52         exec rlogin -x -l root $2
53         ;;
54     *)
55         if [ $# = 0 ]; then
56             echo "Usage: $0 init" >&2
57             echo "       $0 destroy" >&2
58             echo "       $0 shell" >&2
59             echo "       $0 ssh [args]" >&2
60             echo "       $0 rlogin [args]" >&2
61             echo "       $0 [cmd]" >&2
62         else
63             exec "$@"
64         fi
65         ;;
66 esac