#!/bin/sh # Copyright 2003 Mike Markley # This script is free for any purpose whatseoever so long as the above # copyright notice remains in place. # # Modified for Gentoo: Benjamin Smee # Date: Fri Sep 10 11:36:04 BST 2004 # This is the email address reports get mailed to MAILTO=root@localhost # Defaults #MAILTO="${MAILTO:-root}" # Options opt_f=0 opt_y=0 opt_c=0 opt_b=0 config="/etc/aide/aide.conf" aideinit_usage() { echo "Usage: $0 [options] -- [aide options]" echo " -y|--yes Overwrite output file" echo " -f|--force Force overwrite of database" echo " -c|--config Specify alternate config file" echo " -o|--output Specify alternate output file" echo " -d|--database Specify alternate database file" echo " -b|--background Run in the background" } while [ -n "$1" ]; do case "$1" in -h|--help) aideinit_usage exit 0 ;; -f|--force) opt_f=1 shift ;; -y|--yes) opt_y=1 shift ;; -b|--background) opt_b=1 shift ;; -o|--output) shift [ -z "$1" ] && aideinit_usage && exit 1 outfile=$1 shift ;; -d|--database) shift [ -z "$1" ] && aideinit_usage && exit 1 dbfile=$1 shift ;; -c|--config) opt_c=1 shift [ -z "$1" ] && aideinit_usage && exit 1 config=$1 shift ;; --) shift break 2 ;; *) echo "Unknown option $1 (use -- to delimit aideinit and aide options)" exit ;; esac done if [ ! -f "$config" ]; then echo "$0: $config: file not found" exit 1 fi if [ -z "$outfile" ]; then outfile=`egrep "database_out=file:" $config | cut -d: -f2` [ -z "$outfile" ] && outfile="/var/lib/aide/aide.db.new" fi if [ -z "$dbfile" ]; then dbfile=`egrep "database=file:" $config | cut -d: -f2` [ -z "$dbfile" ] && dbfile="/var/lib/aide/aide.db" fi if [ -f $outfile ]; then if [ $opt_y -eq 0 ]; then echo -n "Overwrite existing $outfile [Yn]? " read yn case "$yn" in [Nn]*) exit 0 ;; esac fi fi extraflags="" if [ $opt_c -eq 1 ]; then extraflags="$extraflags --config $config" fi if [ $opt_b -eq 1 ]; then (aide --init $extraflags $@ >/var/log/aide/aideinit.log 2>/var/log/aide/aideinit.errors if [ -f "$dbfile" -a $opt_f -eq 0 ]; then echo "$dbfile exists and -f was not specified" >> /var/log/aide/aideinit.errors fi lines=`wc -l /var/log/aide/aideinit.errors | awk '{ print $1 }'` if [ "$lines" -gt 0 ]; then (echo "AIDE init errors:"; cat /var/log/aide/aideinit.errors) | /bin/mail -s "AIDE initialization problem" $MAILTO else cp -f $outfile $dbfile fi) & exit 0 fi echo "Running aide --init..." aide --init $extraflags $@ return=$? if [ $return -ne 0 ]; then echo "Something didn't quite go right; see $outfile for details" >&2 exit $return fi if [ -f "$dbfile" -a $opt_f -eq 0 ]; then echo -n "Overwrite $dbfile [yN]? " read yn case "$yn" in [yY]*) cp -f $outfile $dbfile ;; esac else cp -f $outfile $dbfile fi