]> andersk Git - moira.git/blob - gen/nfs.sh
fix makefile bug
[moira.git] / gen / nfs.sh
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 # error codes the library uses:
8 set MR_NOCRED = 47836470
9 set MR_MKCRED = 47836474
10 set MR_TARERR = 47836476
11
12 set path=(/etc /bin /usr/bin /usr/etc /usr/athena/etc)
13 set nonomatch
14
15 # The file containg the information for the update
16 set TARFILE=/var/tmp/nfs.out
17 # The directory into which we will empty the tarfile
18 set SRC_DIR=/var/tmp/nfs.dir
19
20 # Alert if the tarfile does not exist
21 if (! -r $TARFILE) then
22    exit $MR_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 set uchost=`hostname | tr '[a-z]' '[A-Z]'`
31 if ($uchost !~ *.*) then
32     set uchost=$uchost.MIT.EDU
33 endif
34
35 cd $SRC_DIR
36
37 # Just extract everything since some of what we need exists as
38 # hardlinks and tar doesn't deal well with extracting them in isolation.
39 tar xf $TARFILE
40 if ($status) exit $MR_TARERR
41
42 foreach type (dirs quotas)
43    echo "Installing ${type}:"
44    foreach i ( ${uchost}*.${type} )
45      if (-e $i) then
46         # Convert the from the filename HOST.@dev@device.type to /dev/device
47         set dev=`echo $i |  sed "s,.${type},," | sed "s,${uchost}.,," | sed "s,@,/,g"`
48         echo ${uchost}:$dev
49         ./install_${type} $dev < $i
50         if ($status) exit $status
51         if ($type == quotas) ./zero_quotas $dev < $i
52         if ($status) exit $status
53         # save the files used here for later debugging
54         mv $i /var/tmp
55      endif
56    end
57 end
58
59 # build new credentials files.
60 rm -f /usr/etc/credentials.new
61 cp ${uchost}.cred /usr/etc/credentials.new
62 if ($status) exit $MR_NOCRED
63 if (-e /usr/etc/credentials.local) then
64     cat /usr/etc/credentials.local >> /usr/etc/credentials.new
65 endif
66
67 # After this point, if /tmp gets cleared out by reactivate (which
68 # happens on a combined server/workstation) we don't care.
69
70 if ("`uname -sr`" =~ SunOS*5*) then
71     mkdir /usr/etc/credtmp
72     mount -F tmpfs swap /usr/etc/credtmp
73     ln -s /usr/etc/credentials.new /usr/etc/credtmp/credentials.new
74     mkcred /usr/etc/credtmp/credentials.new
75     if ($status) then
76         umount /usr/etc/credtmp
77         rmdir /usr/etc/credtmp
78         exit $MR_MKCRED
79     endif
80     mv /usr/etc/credtmp/credentials.new.{dir,pag} /usr/etc/
81     umount /usr/etc/credtmp
82     rmdir /usr/etc/credtmp
83 else
84     mkcred /usr/etc/credentials.new
85     if ($status) exit $MR_MKCRED
86 endif
87
88 # Try to install the files
89 foreach e ( "" .dir .pag)
90    mv -f /usr/etc/credentials.new$e /usr/etc/credentials$e
91 end
92
93 # If any of them didn't get installed, fail
94 foreach e ( "" .dir .pag)
95    if (! -e /usr/etc/credentials$e) exit $MR_NOCRED
96 end
97
98
99
100 # cleanup
101 if ( -f $TARFILE ) rm -f $TARFILE
102 if ( -d $SRC_DIR ) then
103   cd $SRC_DIR/..
104   rm -rf $SRC_DIR
105 endif
106 if ( -f $0 ) rm -r $0
107
108 exit 0
This page took 0.048447 seconds and 5 git commands to generate.