blob: 6a3c60c3783721a9240ee68ba3f4819d9977f513 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#!/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
|