Subversion Repositories ALCASAR

Rev

Rev 873 | Rev 909 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 873 Rev 904
1
#! /bin/bash
1
#! /bin/bash
2
# $Id: alcasar-mysql.sh 873 2012-05-21 17:56:25Z franck $
2
# $Id: alcasar-mysql.sh 904 2012-06-23 11:35:25Z franck $
3
 
3
 
4
# alcasar-mysql.sh
4
# alcasar-mysql.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# Gestion (sauvegarde / import / RAZ) de la base MySQL 'radius'. Fermeture des sessions de comptabilité ouvertes
8
# Gestion (sauvegarde / import / RAZ) de la base MySQL 'radius'. Fermeture des sessions de comptabilité ouvertes
9
# Management of mysql 'radius' database (save / import / RAZ). Close the accounting open sessions
9
# Management of mysql 'radius' database (save / import / RAZ). Close the accounting open sessions
10
 
10
 
11
rep_tr="/var/Save/base" 	 	# répertoire d'accueil des sauvegardes
11
rep_tr="/var/Save/base" 	 	# répertoire d'accueil des sauvegardes
12
ext="sql"  				# extension des fichiers de sauvegarde
12
ext="sql"  				# extension des fichiers de sauvegarde
13
DB_RADIUS="db_radius"
13
DB_RADIUS="radius"
14
DB_USER="db_user"
14
DB_USER="radius"
15
radiuspwd="radius_pwd"
15
radiuspwd="9dthW7VG"
16
new="$(date +%G%m%d-%Hh%M)"  		# date et heure des fichiers
16
new="$(date +%G%m%d-%Hh%M)"  		# date et heure des fichiers
17
fichier="$DB_RADIUS-$new.$ext"		# nom du fichier de sauvegarde
17
fichier="$DB_RADIUS-$new.$ext"		# nom du fichier de sauvegarde
18
 
18
 
-
 
19
#USER="franck"
-
 
20
#MYSQLCMD="/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS --exec"
-
 
21
 
19
stop_acct ()
22
stop_acct ()
20
{
23
{
21
	date_now=`date "+%F %X"`
24
	date_now=`date "+%F %X"`
22
	echo "UPDATE radacct SET acctstoptime = '$date_now', acctterminatecause = 'Admin-Reset' WHERE acctstoptime IS NULL" | mysql -u$DB_USER -p$radiuspwd $DB_RADIUS
25
	echo "UPDATE radacct SET acctstoptime = '$date_now', acctterminatecause = 'Admin-Reset' WHERE acctstoptime IS NULL" | mysql -u$DB_USER -p$radiuspwd $DB_RADIUS
23
 
26
 
24
}
27
}
-
 
28
 
-
 
29
expire_user ()
-
 
30
{
-
 
31
	MYSQL=`/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS -ss --exec  "SELECT username FROM radcheck WHERE ( DATE_SUB(CURDATE(),INTERVAL 7 DAY) > STR_TO_DATE(value,'%d %M %Y')) AND attribute='Expiration';"`
-
 
32
	for u in $MYSQL
-
 
33
	do
-
 
34
		 /usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS --exec "DELETE FROM radusergroup WHERE username = '$u'; DELETE FROM radreply WHERE username = '$u'; DELETE FROM userinfo WHERE UserName = '$u'; DELETE FROM radcheck WHERE username = '$u'"
-
 
35
	done
-
 
36
}
25
usage="Usage: alcasar-mysql.sh { -d or --dump } | { -i or --import } | { -r or --raz } | { -acct_stop }"
37
usage="Usage: alcasar-mysql.sh { -d or --dump } | { -i or --import } | { -r or --raz } | { -acct_stop } | [ --expire_user ]"
26
nb_args=$#
38
nb_args=$#
27
args=$1
39
args=$1
28
if [ $nb_args -eq 0 ]
40
if [ $nb_args -eq 0 ]
29
then
41
then
30
	nb_args=1
42
	nb_args=1
31
	args="-h"
43
	args="-h"
32
fi
44
fi
33
case $args in
45
case $args in
34
	-\? | -h* | --h*)
46
	-\? | -h* | --h*)
35
		echo "$usage"
47
		echo "$usage"
36
		exit 0
48
		exit 0
37
		;;
49
		;;
38
	-d | --dump | -dump)	
50
	-d | --dump | -dump)	
39
		[ -d $rep_tr ] || mkdir -p $rep_tr
51
		[ -d $rep_tr ] || mkdir -p $rep_tr
40
		if [ -e  $fichier ];
52
		if [ -e  $fichier ];
41
			then rm -f  $fichier 
53
			then rm -f  $fichier 
42
		fi
54
		fi
43
		echo "Export de la base 'db_radius' dans le fichier : $fichier"
55
		echo "Export de la base 'db_radius' dans le fichier : $fichier"
44
		mysqldump -u $DB_USER -p$radiuspwd --opt -BcQC  $DB_RADIUS > $rep_tr/$fichier
56
		mysqldump -u $DB_USER -p$radiuspwd --opt -BcQC  $DB_RADIUS > $rep_tr/$fichier
45
		echo "Fin de Sauvegarde mysql $( date "+%Hh %Mmn" )"
57
		echo "Fin de Sauvegarde mysql $( date "+%Hh %Mmn" )"
46
		;;
58
		;;
47
	-i | --import | -import)
59
	-i | --import | -import)
48
		if [ $nb_args -ne 2 ]
60
		if [ $nb_args -ne 2 ]
49
			then
61
			then
50
			echo "Entrez le nom d'un fichier SQL (.sql)"
62
			echo "Entrez le nom d'un fichier SQL (.sql)"
51
			exit 0
63
			exit 0
52
		else
64
		else
53
			mysql -u $DB_USER -p$radiuspwd < $2
65
			mysql -u $DB_USER -p$radiuspwd < $2
54
			stop_acct	
66
			stop_acct	
55
		fi
67
		fi
56
		;;
68
		;;
57
	-r | --raz | -raz)
69
	-r | --raz | -raz)
58
		mysqldump -u $DB_USER -p$radiuspwd --opt -BcQC  $DB_RADIUS > $rep_tr/$fichier && \
70
		mysqldump -u $DB_USER -p$radiuspwd --opt -BcQC  $DB_RADIUS > $rep_tr/$fichier && \
59
		mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < /etc/raddb/radiusd-db-vierge.sql
71
		mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < /etc/raddb/radiusd-db-vierge.sql
60
		;;
72
		;;
61
	-acct_stop)
73
	-acct_stop)
62
		stop_acct
74
		stop_acct
63
		;;
75
		;;
-
 
76
	--expire_user)
-
 
77
		expire_user	
-
 
78
		;;
64
	*)
79
	*)
65
		echo "Argument inconnu :$1";
80
		echo "Argument inconnu :$1";
66
		echo "$usage"
81
		echo "$usage"
67
		exit 1
82
		exit 1
68
		;;
83
		;;
69
esac
84
esac
70
 
85