Your IP : 172.28.240.42


Current Path : /usr/sbin/
Upload File :
Current File : //usr/sbin/aideinit

#!/bin/sh
#
# $Id$
# Copyright 2003 Mike Markley <mike@markley.org>
# This script is free for any purpose whatseoever so long as the above
# copyright notice remains in place.

if [ -f /etc/default/aide ]; then
	. /etc/default/aide
fi

# Defaults
MAILTO="${MAILTO:-root}"

# Options
opt_f=0
opt_y=0
opt_c=0
opt_b=0
defaultconfig="/var/lib/aide/aide.conf.autogenerated"

if ! [ -x "/usr/bin/aide" ]; then
  echo >&2 "no /usr/bin/aide found, check your dependencies"
  exit 1
fi

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 [ -z "$config" ]; then
	update-aide.conf
fi

config=${config:-$defaultconfig}

if [ ! -f "$config" ]; then
	echo "$0: $config: file not found"
	exit 1
fi

if [ -z "$outfile" ]; then
	outfile=$(egrep "^[[:space:]]*database_out=file:" $config | cut -d: -f2)
	[ -z "$outfile" ] && outfile="/var/lib/aide/aide.db.new"
fi
if [ -z "$dbfile" ]; then
	dbfile=$(egrep "^[[:space:]]*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_b -eq 1 ]; then
	(aide.wrapper --init $extraflags $@ >/var/log/aide/aideinit.log 2>/var/log/aide/aideinit.errors
	RET=$?
	printf "AIDE --init return code %d" "$RET" >> /var/log/aide/aideinit.log
	if [ "$RET" != "0" ]; then
	   printf "AIDE --init return code %d" "$RET" >> /var/log/aide/aideinit.errors
	fi
	if [ -f "$dbfile" -a $opt_f -eq 0 ]; then
		echo "$dbfile exists and -f was not specified" >> /var/log/aide/aideinit.errors
	fi
	if [ "$(< /var/log/aide/aideinit.errors wc -l)" -gt 0 ]; then
		(echo "AIDE init errors:"; cat /var/log/aide/aideinit.errors) | /usr/bin/mail -s "AIDE initialization problem" $MAILTO
	else
		cp -f $outfile $dbfile
	fi) &
	exit 0
fi

# this is only reached if we run in foreground
echo "Running aide --init..."
aide.wrapper --init $extraflags $@

RET=$?
if [ "$RET" != "0" ]; then
	echo "AIDE --init return code $RET" >&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