Whamcloud - gitweb
07e9f8ef19bb6e4e3102b1b5aa7aacfc3411f13c
[fs/lustre-release.git] / lustre / tests / krb5_env.sh
1 #!/bin/sh
2
3 #
4 # KDC could be on remote hosts, but we suppose lgssd/lsvcgssd only
5 # runs locally.
6 #
7
8 export KDCHOST=${KDCHOST:-"localhost"}
9 export KDCDIR=${KDCDIR:-"/usr/kerberos/sbin"}
10 export KRB5DIR=${KRB5DIR:-"/usr/kerberos"}
11 export LGSSD=${LGSSD:-"/sbin/lgssd"}
12 export SVCGSSD=${SVCGSSD:-"/sbin/lsvcgssd"}
13 export PDSH=${PDSH:-"ssh"}
14
15 using_krb5_sec() {
16     if [ "x$1" != "xkrb5i" -a "x$1" != "xkrb5p" ]; then
17         echo "n"
18     else
19         echo "y"
20     fi
21 }
22
23 start_krb5_kdc() {
24     if [ `using_krb5_sec $SECURITY` == 'n' ] ; then
25         return 0
26     fi
27
28     num=`$PDSH $KDCHOST "PATH=\$PATH:$KDCDIR; ps ax | grep krb5kdc | grep -v "grep" | wc -l"`
29     if [ $num -eq 1 ]; then
30         return 0
31     fi
32
33     $PDSH $KDCHOST "PATH=\$PATH:$KDCDIR; krb5kdc"
34     num=`$PDSH $KDCHOST "PATH=\$PATH:$KDCDIR; ps ax | grep krb5kdc | grep -v "grep" | wc -l"`
35     if [ $num -ne 1 ]; then
36         echo "fail to start krb5 KDC, check env KDCHOST and KDCDIR"
37         return 1
38     fi
39     return 0
40 }
41
42 prepare_krb5_cache() {
43     if [ `using_krb5_sec $SECURITY` == 'n' ] ; then
44         return 0
45     fi
46
47     $KRB5DIR/bin/klist -5 -s
48     invalid=$?
49     if [ $invalid -eq 0 ]; then
50         return 0
51     fi
52
53     echo "***** refresh Kerberos V5 TGT for uid $UID *****"
54     $KRB5DIR/bin/kinit
55     ret=$?
56     return $ret
57 }
58
59 start_lsvcgssd() {
60     if [ `using_krb5_sec $SECURITY` == 'n' ] ; then
61         return 0
62     fi
63
64     killall -q -9 lsvcgssd || true
65
66     `$SVCGSSD`
67     num=`ps -o cmd -C "lsvcgssd" | grep lsvcgssd | wc -l`
68     if [ $num -ne 1 ]; then
69         echo "failed to start lsvcgssd"
70         return 1
71     fi
72     return 0
73 }
74
75 stop_lsvcgssd() {
76     killall -q -9 lsvcgssd || true
77     return 0
78 }
79
80 start_lgssd() {
81     if [ `using_krb5_sec $SECURITY` == 'n' ] ; then
82         return 0
83     fi
84
85     prepare_krb5_cache || exit 1
86
87     killall -q -9 lgssd || true
88
89     `$LGSSD`
90     num=`ps -o cmd -C "lgssd" | grep lgssd | wc -l`
91     if [ $num -ne 1 ]; then
92         echo "failed to start lgssd $num"
93         return 1
94     fi
95     return 0
96 }
97
98 stop_lgssd() {
99     killall -q -9 lgssd || true
100     return 0
101 }