]> andersk Git - moira.git/blobdiff - gen/mailhub.sh
Don't tell nagios about deleted printers
[moira.git] / gen / mailhub.sh
index 242cdcadec33540f33dbd1a68d3a040e15a68cb4..db980351419fdf1e4041b4439dd59b339a989b1e 100644 (file)
@@ -1,23 +1,75 @@
 #!/bin/sh
+#
+# $Header$
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/etc:/usr/etc:/usr/athena/bin:/usr/local/bin
+export PATH
+
+if [ -d /var/athena ] && [ -w /var/athena ]; then
+    exec >/var/athena/moira_update.log 2>&1
+else
+    exec >/tmp/moira_update.log 2>&1
+fi
+
+# The following exit codes are defined and MUST BE CONSISTENT with
+# error codes the library uses:
 MR_MKCRED=47836474
-cat /usr/lib/local-aliases >> /usr/lib/aliases.new
-/bin/cp /dev/null /u1/usr/lib/aliases.new.dir
-/bin/cp /dev/null /u1/usr/lib/aliases.new.pag
-/usr/lib/sendmail -bi -oA/u1/usr/lib/aliases.new
+MR_MISSINGFILE=47836473
+MR_NOCRED=47836470
+
+root=/usr/local/sendmail
+
+if [ -r $root/etc/aliases.new ]; then
+    chmod 644 $root/etc/aliases.new
+else
+    exit $MR_MISSINGFILE
+fi
+
+if [ ! -r $root/etc/aliases ]; then
+    logger -p mail.error -t mailhub.sh "No current aliases file, aborting."
+    exit $MR_NOCRED
+fi
+
+# Play it safe and be sure we have reasonable data
+olines=`wc -l $root/etc/aliases |  awk '{print $1}'`
+nlines=`wc -l $root/etc/aliases.new | awk '{print $1}'`
+diff=`expr $nlines - $olines`
+thresh=`expr $olines / 10`
+
+# Catch the zero case
+if [ $nlines -eq 0 ]; then
+    logger -p mail.error -t mailhub.sh "Recieved empty aliases file, aborting."
+    exit $MR_MISSINGFILE
+fi
+
+# If its a greater than 10% shift bomb out to be safe
+if [ $diff -gt $thresh ]; then
+    logger -p mail.error -t mailhub.sh "Alias changes threshold exceeded, aborting."
+    exit $MR_NOCRED
+fi
+
+cp /dev/null $root/etc/aliases.new.db
+
+$root/sbin/sendmail -bi -oA$root/etc/aliases.new
 if [ $? != 0 ]; then
-       exit $MR_MKCRED
-       fi
-
-kill `/bin/ps ax | /bin/grep "accepting connections" | /bin/grep -v grep | /bin/awk '{print $1}'`
-/bin/mv /u1/usr/lib/aliases /u1/usr/lib/aliases.old
-/bin/mv /u1/usr/lib/aliases.dir /u1/usr/lib/aliases.old.dir
-/bin/mv /u1/usr/lib/aliases.pag /u1/usr/lib/aliases.old.pag
-/bin/mv /u1/usr/lib/aliases.new /u1/usr/lib/aliases
-/bin/mv /u1/usr/lib/aliases.new.dir /u1/usr/lib/aliases.dir
-/bin/mv /u1/usr/lib/aliases.new.pag /u1/usr/lib/aliases.pag
-/usr/lib/sendmail -bd -q30m
-
-/bin/rm -f $0
-exit 0
+    exit $MR_MKCRED
+fi
 
-# $Header$
+sh /etc/init.d/sendmail stop
+
+mv $root/etc/aliases $root/etc/aliases.old
+mv $root/etc/aliases.db $root/etc/aliases.old.db
+mv $root/etc/aliases.new $root/etc/aliases
+mv $root/etc/aliases.new.db $root/etc/aliases.db
+
+sh /etc/init.d/sendmail start
+
+# Make sure the sendmail daemons are indeed running
+ps -ef | grep sendmail | grep -v grep > /dev/null 2>&1
+if [ $? -ne 0 ]; then
+    logger -p mail.error -t mailhub.sh "Sendmail failed to restart."
+    exit $MR_MKCRED
+fi
+
+rm -f $0
+exit 0
This page took 0.032778 seconds and 4 git commands to generate.