]> andersk Git - moira.git/blame_incremental - gen/nfs.sh
sync'ing files for RCS->CVS migration
[moira.git] / gen / nfs.sh
... / ...
CommitLineData
1#!/bin/csh -f
2# This script performs nfs updates on servers.
3#
4# $Header$
5
6# The following exit codes are defined and MUST BE CONSISTENT with the
7# MR error codes the library uses:
8set MR_NOCRED = 47836470
9set MR_MKCRED = 47836474
10set MR_TARERR = 47836476
11
12set path=(/etc /bin /usr/bin /usr/etc /usr/athena/etc)
13set nonomatch
14
15# The file containg the information for the update
16set TARFILE=/tmp/nfs.out
17# The directory into which we will empty the tarfile
18set SRC_DIR=/tmp/nfs.dir
19
20# Alert if the tarfile does not exist
21if (! -r $TARFILE) then
22 exit $MR_TARERR
23endif
24
25# Create a fresh source directory
26rm -rf $SRC_DIR
27mkdir $SRC_DIR
28chmod 755 $SRC_DIR
29
30# Note that since MR 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
34set uchost=`hostname | tr '[a-z]' '[A-Z]'`.MIT.EDU
35
36cd $SRC_DIR
37
38# Just extract everything since some of what we need exists as
39# hardlinks and tar doesn't deal well with extracting them in isolation.
40tar xf $TARFILE
41if ($status) exit $MR_TARERR
42
43foreach type (dirs quotas)
44 echo "Installing ${type}:"
45 foreach i ( ${uchost}*.${type} )
46 if (-e $i) then
47 # Convert the from the filename HOST.@dev@device.type to /dev/device
48 set dev=`echo $i | sed "s,.${type},," | sed "s,${uchost}.,," | sed "s,@,/,g"`
49 echo ${uchost}:$dev
50 ./install_${type} $dev < $i
51 if ($status) exit $status
52 if ($type == quotas) ./zero_quotas $dev < $i
53 if ($status) exit $status
54 # save the files used here for later debugging
55 mv $i /tmp
56 endif
57 end
58end
59
60# build new credentials files.
61rm -f /usr/etc/credentials.new
62cp ${uchost}.cred /usr/etc/credentials.new
63if ($status) exit $MR_NOCRED
64
65# After this point, if /tmp gets cleared out by reactivate (which
66# happens on a combined server/workstation) we don't care.
67
68mkcred /usr/etc/credentials.new
69if ($status) exit $MR_MKCRED
70
71# Try to install the files
72foreach e ( "" .dir .pag)
73 mv -f /usr/etc/credentials.new$e /usr/etc/credentials$e
74end
75
76# If any of them didn't get installed, fail
77foreach e ( "" .dir .pag)
78 if (! -e /usr/etc/credentials$e) exit $MR_NOCRED
79end
80
81
82
83# cleanup
84if ( -f $TARFILE ) rm -f $TARFILE
85if ( -d $SRC_DIR ) then
86 cd $SRC_DIR/..
87 rm -rf $SRC_DIR
88endif
89if ( -f $0 ) rm -r $0
90
91exit 0
This page took 0.04817 seconds and 5 git commands to generate.