]> andersk Git - moira.git/blame_incremental - gen/hesiod.sh
Once more.
[moira.git] / gen / hesiod.sh
... / ...
CommitLineData
1#!/bin/sh
2# This script performs updates of hesiod files on hesiod servers.
3# $Header$
4
5if [ -d /var/athena ] && [ -w /var/athena ]; then
6 exec >/var/athena/moira_update.log 2>&1
7else
8 exec >/tmp/moira_update.log 2>&1
9fi
10
11set -x
12
13PATH=/etc:/bin:/usr/bin:/usr/etc:/usr/athena/etc
14export PATH
15
16# The following exit codes are defined and MUST BE CONSISTENT with the
17# error codes the library uses:
18MR_HESFILE=47836472
19MR_MISSINGFILE=47836473
20MR_NAMED=47836475
21MR_TARERR=47836476
22
23umask 022
24
25# File that will contain the necessary information to be updated
26TARFILE=/var/tmp/hesiod.out
27# Directory into which we will empty the tarfile
28SRC_DIR=/etc/athena/_nameserver
29# Directory into which we will put the final product
30DEST_DIR=/etc/athena/nameserver
31
32NAMED=/etc/athena/named
33NAMED_PID=/var/athena/named.pid
34
35# Create the destination directory if it doesn't exist
36if test ! -d $DEST_DIR
37then
38 rm -f $DEST_DIR
39 mkdir $DEST_DIR
40 chmod 755 $DEST_DIR
41fi
42
43# If $SRC_DIR does not already exist, make sure that it gets created
44# on the same parition as $DEST_DIR.
45if test ! -d $SRC_DIR
46then
47 chdir $DEST_DIR
48 mkdir ../_nameserver
49 chdir ../_nameserver
50 if test $SRC_DIR != `pwd`
51 then
52 ln -s `pwd` $SRC_DIR
53 fi
54fi
55
56# make sure SRC_DIR is empty
57/bin/rm -rf $SRC_DIR/*
58
59# Alert if tarfile doesn't exist
60if test ! -r $TARFILE
61then
62 exit $MR_MISSINGFILE
63fi
64
65cd $SRC_DIR
66tar xvf $TARFILE
67# Don't put up with errors extracting the information
68if test $? -ne 0
69then
70 exit $MR_TARERR
71fi
72for file in *
73do
74 # Make sure the file is not zero-length
75 if test ! -z $file
76 then
77 mv -f $file $DEST_DIR
78 if test $? -ne 0
79 then
80 exit $MR_HESFILE
81 fi
82 else
83 rm -f $file
84 exit $MR_MISSINGFILE
85 fi
86done
87
88# Kill off the current named and remove the named.pid file. It is
89# important that this file be removed since the script uses its
90# existance as evidence that named as has been successfully restarted.
91
92# First, get statistics
93kill -ILL `cat $NAMED_PID`
94sleep 1
95kill -KILL `cat $NAMED_PID`
96rm -f $NAMED_PID
97
98# Restart named.
99$NAMED
100echo named started
101
102sleep 1
103# This timeout is implemented by having the shell check TIMEOUT times
104# for the existance of $NAMED_PID and to sleep INTERVAL seconds
105# between each check.
106
107TIMEOUT=60 # number of INTERVALS until timeout
108INTERVAL=60 # number of seconds between checks
109i=0
110while test $i -lt $TIMEOUT
111do
112 if test -f $NAMED_PID
113 then
114 break
115 fi
116 sleep $INTERVAL
117 i=`expr $i + 1`
118done
119echo out of timeout loop
120# Did it time out?
121if test $i -eq $TIMEOUT
122then
123 exit $MR_NAMED
124fi
125echo no timeout
126# Clean up!
127rm -f $TARFILE
128echo removed tarfile
129rm -f $0
130echo removed self
131
132exit 0
This page took 0.079614 seconds and 5 git commands to generate.