#!/bin/bash STALE_DIR="${HOME}/var/stale/" get_names() { bcfg2-reports "$@" --fields=name | sed 's/ *$//' } get_extra() { get_names | while read i ; do test -z "$(bcfg2-reports -e $i)" || echo $i ; done } get_stale() { get_names --stale | sed 's/ *$//' } get_all() { get_names -a | sed 's/ *$//' } get_bad() { get_names -d | sed 's/ *$//' } get_clean() { get_names -c | sed 's/ *$//' } get_nagios() { clean=$(get_clean | wc -l) bad=$(get_bad | wc -l) extra=$(get_extra | wc -l) stale=$(get_stale | wc -l) status="OK" exit=0 if [ "$bad" != "0" -o "$stale" != "0" ]; then status="CRITICAL" exit=2 fi echo "$status | clean=$clean; bad=$bad; extra=$extra; stale=$stale;" exit $exit } get_stale_once() { get_stale | while read host; do STALE_FILE="${STALE_DIR}/${host}" test -f "${STALE_FILE}" || ( touch "${STALE_FILE}" echo $host ) done comm -13 <(get_stale | sort) <(get_all | sort) | while read host; do STALE_FILE="${STALE_DIR}/${host}" test -f "${STALE_FILE}" && rm -f "${STALE_FILE}" done } cron() { stale=$(get_stale_once) if [ -n "$stale" ]; then sendmail -t <