From 6f1b9549915d9d7837e09a3a53054237801b573d Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sun, 6 Jul 2008 11:50:32 +0200 Subject: [PATCH] [project @ peter@palfrader.org-20080706095032-bstq0eycfjc6tbfi] 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 | 5 ++-- dsa-nagios-nrpe-config/debian/cron.d | 4 +-- dsa-nagios-nrpe-config/dsa-update-apt-status | 27 ++++++++++++++------ 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/dsa-nagios-nrpe-config/debian/changelog b/dsa-nagios-nrpe-config/debian/changelog index 57cdd37..dbcc608 100644 --- a/dsa-nagios-nrpe-config/debian/changelog +++ b/dsa-nagios-nrpe-config/debian/changelog @@ -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 Sun, 06 Jul 2008 11:41:41 +0200 + -- Peter Palfrader Sun, 06 Jul 2008 11:49:37 +0200 dsa-nagios-nrpe-config (45) unstable; urgency=low diff --git a/dsa-nagios-nrpe-config/debian/cron.d b/dsa-nagios-nrpe-config/debian/cron.d index ba79a57..01d4be9 100644 --- a/dsa-nagios-nrpe-config/debian/cron.d +++ b/dsa-nagios-nrpe-config/debian/cron.d @@ -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: diff --git a/dsa-nagios-nrpe-config/dsa-update-apt-status b/dsa-nagios-nrpe-config/dsa-update-apt-status index 5433d18..a6b5b8a 100755 --- a/dsa-nagios-nrpe-config/dsa-update-apt-status +++ b/dsa-nagios-nrpe-config/dsa-update-apt-status @@ -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 -- 2.20.1