[project @ peter@palfrader.org-20080706095032-bstq0eycfjc6tbfi]
authorPeter Palfrader <peter@palfrader.org>
Sun, 6 Jul 2008 09:50:32 +0000 (11:50 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sun, 6 Jul 2008 09:50:32 +0000 (11:50 +0200)
No longer do @daily runs of dsa-update-apt-status - the hourly runs do the stuff if the last run was over a day ago

dsa-nagios-nrpe-config/debian/changelog
dsa-nagios-nrpe-config/debian/cron.d
dsa-nagios-nrpe-config/dsa-update-apt-status

index 57cdd37..dbcc608 100644 (file)
@@ -6,9 +6,10 @@ dsa-nagios-nrpe-config (XX) unstable; urgency=low
     changed in the meantime, that is if /var/lib/dpkg/status or
     /var/cache/apt/pkgcache.bin are newer than the status file.
     Also run if the status file does not exist, or if the last apt-get update
-    call failed.
+    call failed, or if the last run was more than a day ago.
+  * No longer do @daily runs of dsa-update-apt-status
 
- -- Peter Palfrader <weasel@debian.org>  Sun, 06 Jul 2008 11:41:41 +0200
+ -- Peter Palfrader <weasel@debian.org>  Sun, 06 Jul 2008 11:49:37 +0200
 
 dsa-nagios-nrpe-config (45) unstable; urgency=low
 
index ba79a57..01d4be9 100644 (file)
@@ -1,8 +1,6 @@
 @reboot  root sleep 10m && [ -x /usr/share/dsa/weak-ssh-keys-check ] && /usr/share/dsa/weak-ssh-keys-check -s /var/cache/dsa/nagios/weak-ssh-keys
 @daily   root              [ -x /usr/share/dsa/weak-ssh-keys-check ] && /usr/share/dsa/weak-ssh-keys-check -s /var/cache/dsa/nagios/weak-ssh-keys
 
-@reboot  root [ -x /usr/sbin/dsa-update-apt-status ] && /usr/sbin/dsa-update-apt-status
-@daily   root [ -x /usr/sbin/dsa-update-apt-status ] && /usr/sbin/dsa-update-apt-status
-@hourly  root [ -x /usr/sbin/dsa-update-apt-status ] && /usr/sbin/dsa-update-apt-status hourly
+@hourly  root [ -x /usr/sbin/dsa-update-apt-status ] && /usr/sbin/dsa-update-apt-status
 
 # vim:ft=crontab:
index 5433d18..a6b5b8a 100755 (executable)
@@ -2,7 +2,15 @@
 
 UPDATE_RUNS=3
 STATUS=/var/cache/dsa/nagios/apt
+SLEEP_MAX=$(( 15 * 60 ))
+MAX_AGE=$(( 23 * 60 * 60 ))
 
+# we want to run if any of the following things is true
+#  - we have never run before
+#  - var/lib/dpkg/status has been touched since the last run
+#  - var/cache/apt/pkgcache.bin has been touched since the last run
+#  - our last run ended with 'apt-get update failed'
+#  - our last run has been more than MAX_AGE (23hrs) ago
 run_required() {
        local run=0
        local norun=1
@@ -11,19 +19,22 @@ run_required() {
        [ /var/lib/dpkg/status -nt "$STATUS" ] && return $run
        [ /var/cache/apt/pkgcache.bin -nt "$STATUS" ] && return $run
        grep "apt-get update failed" "$STATUS" > /dev/null && return $run
-}
 
-sleep_max=7200
+       local last_mod
+       last_mod=`stat -c "%Y" "$STATUS"`
+       now=`date +%s`
+       age=$(( "$now" - "$last_mod" ))
+       [ "$age" -gt "$MAX_AGE" ] && return $run
 
-if [ "$1" == "hourly" ] ; then
-       # on the hourly run, only update when the system changed since the last run
-       run_required || exit
-       sleep_max=900
-fi
+       return $norun
+}
+
+# do stuff only when required
+run_required || exit
 
 # sleep if called non-interactively
 if [ -z "$TERM" -o "$TERM" = "dumb" ]; then
-       sleep $(( $RANDOM % $sleep_max ))
+       sleep $(( $RANDOM % $SLEEP_MAX ))
 fi
 
 # run apt-get update, retry a few times if it fails