Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
865 richard 1
#!/bin/bash
2
# $Id: alcasar-log-export.sh 672 2011-07-08 15:34:22Z richard $
3
 
4
# alcasar-log-export.sh
5
# by Franck BOUIJOUX and REXY
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
8
# Script permettant 
9
#	- d'exporter des logs des répertoires /var/log/{squid-firewall-httpd} à des fins d'archivages.
10
# 	- Une fonction de chiffrement des logs a été implémentée dans ce script. Lisez la documentation d'exploitation pour l'activer.
11
#	- nettoyage des archives supérieures à 1 an (365 jours)
12
 
13
# This script allows 
14
#	- export log files from folders /var/log/{squid-firewall-httpd} in order to archive them.
15
# 	- a cypher fonction allows to protect these files. Read the exploit documentation to enable it.
16
#	- delete backup files older than one year (365 days)
17
 
18
TO_SAVE="/var/Save/logs"		# répertoire accessible par webs
19
REP_SAVE="/var/log"			# répertoire local des log
20
REP_SERVICE="squid httpd firewall"	# répertoires contenant des logs utiles à exporter
21
REP_BASE="/var/Save/base"		# répertoire de sauvegarde de la base de données usagers
22
NOW="$(date +%G%m%d-%Hh%M)"  		# date et heure du moment
23
DELAY=365				# Nbre de jour avant suppression des fichiers journaux
24
CHIFFREMENT="0"				# chiffrement des logs ( 0=non / 1=oui )
25
GPG_USER=""				# utilisateur autorisé à déchiffrer les logs. Son biclé est inclus dans le portefeuille gnupg de root (/root/.gnupg)
26
 
27
usage="Usage: alcasar-log.sh {--clean or -clean} | {--export or -export} | {--live_export or -live_export}"
28
 
29
nb_args=$#
30
args=$1
31
if [ $nb_args -eq 0 ]
32
then
33
	nb_args=1
34
	args="-h"
35
fi
36
case $args in
37
	-\? | -h* | --h*)
38
		echo "$usage"
39
		exit 0
40
		;;
41
	--clean|-clean)	
42
		for i in $TO_SAVE $REP_SAVE ; do
43
			for j in $REP_SERVICE ;	do
44
				cd $i/$j
45
				find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg'  \) -exec rm -f {} \;
46
			done
47
		done
48
		cd $REP_BASE
49
		find . \( -mtime +$DELAY \) -a \( -name '*.gz' -o -name '*.sql' -o -name '' -o -name 'gpg'  \) -exec rm -f {} \;
50
		;;
51
	--export|-export)	
52
		for i in $REP_SERVICE ; do
53
			[ -d $TO_SAVE/$i ] || mkdir -p $TO_SAVE/$i	# utile une seule fois mais crée le répertoire si nécessaire
54
			cd $REP_SAVE/$i 
55
			if [ $CHIFFREMENT -eq "1" ]
56
			then
57
# chiffrement des logs dans /var/Save/logs/(squid|firewall|httpd)
58
				find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec gpg --output $TO_SAVE/$i/{}.gpg --encrypt --recipient $GPG_USER {} \;
59
			else	
60
# copie simple des logs dans /var/Save/logs/(squid|firewall|httpd) 
61
				find . \( -mtime -7 -o -ctime 0 \) -a \( -name '*log-*.gz' \) -exec cp {} $TO_SAVE/$i/.  \;
62
			fi
63
		done
64
		chown -R apache.apache $TO_SAVE
65
		;;
66
	--live_export|-live_export)
67
		cp $REP_SAVE/firewall/tracability.log $TO_SAVE/firewall/
68
		gzip $TO_SAVE/firewall/tracability.log
69
		mv $TO_SAVE/firewall/tracability.log.gz $TO_SAVE/firewall/tracability.log-$NOW.gz
70
		chown apache:apache $TO_SAVE/firewall/tracability.log-$NOW.gz
71
		;;
72
	*)
73
		echo "Unknown argument :$1";
74
		echo "$usage"
75
		exit 1
76
		;;
77
esac
78
exit 0
79