| #!/bin/sh |
| # 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. |
| # |
| # 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 |