[project @ peter@palfrader.org-20080706094246-lgxrzpnljewux8g5]
authorPeter Palfrader <peter@palfrader.org>
Sun, 6 Jul 2008 09:42:46 +0000 (11:42 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sun, 6 Jul 2008 09:42:46 +0000 (11:42 +0200)
Introduce hourly runs for dsa-update-apt-status that happen if the system
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.

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

index 53713a9..57cdd37 100644 (file)
@@ -2,8 +2,13 @@ dsa-nagios-nrpe-config (XX) unstable; urgency=low
 
   * Move apt status update from cron.daily to usr/sbin/dsa-update-apt-status.
   * Move script calls from cron.daily to cron.d @daily and @reboot.
+  * Introduce hourly runs for dsa-update-apt-status that happen if the system
+    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.
 
- -- Peter Palfrader <weasel@debian.org>  Sun, 06 Jul 2008 11:27:36 +0200
+ -- Peter Palfrader <weasel@debian.org>  Sun, 06 Jul 2008 11:41:41 +0200
 
 dsa-nagios-nrpe-config (45) unstable; urgency=low
 
index 389874f..ba79a57 100644 (file)
@@ -1,7 +1,8 @@
 @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 sleep 15m && [ -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
+@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
 
 # vim:ft=crontab:
index 47c7e7a..5433d18 100755 (executable)
@@ -3,9 +3,27 @@
 UPDATE_RUNS=3
 STATUS=/var/cache/dsa/nagios/apt
 
+run_required() {
+       local run=0
+       local norun=1
+
+       [ -e "$STATUS" ] || return $run
+       [ /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
+
+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
+
 # sleep if called non-interactively
 if [ -z "$TERM" -o "$TERM" = "dumb" ]; then
-       sleep $(( $RANDOM % 7200 ))
+       sleep $(( $RANDOM % $sleep_max ))
 fi
 
 # run apt-get update, retry a few times if it fails