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
@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:
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
[ /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