]> andersk Git - moira.git/blob - gen/nfs.sh
9c4c11706aeebddce363c8b98a2e5bc4909ad8d7
[moira.git] / gen / nfs.sh
1 #!/bin/csh -f
2 # This script performs nfs updates on servers.
3 #
4 # $Source$
5 echo '$Header$'
6
7 # The following exit codes are defined and MUST BE CONSISTENT with the
8 # SMS error codes the library uses:
9 set SMS_NOCRED = 47836470
10 set SMS_MKCRED = 47836474
11 set SMS_TARERR = 47836476
12
13 set path=(/etc /bin /usr/bin /usr/etc)
14
15 # The file containg the information for the update
16 set TARFILE=/tmp/nfs.out
17 # The directory into which we will empty the tarfile
18 set SRC_DIR=/tmp/nfs.dir
19
20 # Alert if the tarfile does not exist
21 if (! -r $TARFILE) then
22    exit $SMS_TARERR
23 endif
24
25 # Create a fresh source directory
26 rm -rf $SRC_DIR
27 mkdir $SRC_DIR
28 chmod 755 $SRC_DIR
29
30 # Note that since SMS is going to be exported, assuming .MIT.EDU is 
31 # incorrect.  For now however, it is probably not worth the effort
32 # to canonicalize the hostname, especially with the upcoming update
33 # protocol redesign
34 set uchost=`/bin/hostname | tr a-z A-Z`.MIT.EDU
35
36 cd $SRC_DIR
37
38 # Only files starting with $uchost, install_, and list- are needed.
39 # The files starting with list- are needed because the credentials
40 # files are hard links to them.  Tar will fail if they are not extracted.
41 foreach file (`/bin/tar tf $TARFILE | awk '{print $1}'`)
42    if (($file =~ ./${uchost}*) || \
43        ($file =~ ./install_*) || \
44        ($file =~ ./list-*)) then
45       tar xf $TARFILE $file
46       if ($status) exit $SMS_TARERR
47    endif
48 end
49
50 foreach type (dirs quotas)
51    echo "Installing ${type}:"
52    foreach i ( ${uchost}*.${type} )
53       # Convert the from the filename HOST.@dev@device.type to /dev/device
54       set dev=`echo $i |  sed "s,.${type},," | sed "s,${uchost}.,," | sed "s,@,/,g"`
55       echo ${uchost}:$dev
56       ./install_${type} $dev < $i
57       if ($status) exit $status
58    end
59 end
60
61 # build new credentials files.
62 rm -f /usr/etc/credentials.new
63 cp ${uchost}.cred /usr/etc/credentials.new
64 if ($status) exit $SMS_NOCRED
65
66 /usr/etc/mkcred /usr/etc/credentials.new
67 if ($status) exit $SMS_MKCRED
68
69 # Try to install the files
70 foreach e ( "" .dir .pag)
71    mv -f /usr/etc/credentials.new$e /usr/etc/credentials$e
72 end
73
74 # If any of them didn't get installed, fail
75 foreach e ( "" .dir .pag)
76    if (! -e /usr/etc/credentials$e) exit $SMS_NOCRED
77 end
78
79
80
81 # cleanup
82 rm -f $TARFILE
83 cd $SRC_DIR/..
84 rm -rf $SRC_DIR
85 rm $0
86
87 exit 0
This page took 0.076005 seconds and 3 git commands to generate.