Subversion Repositories ALCASAR

Rev

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

Rev 1353 Rev 1369
1
#/bin/bash
1
#/bin/bash
2
# $Id: alcasar-profil.sh 1353 2014-05-19 16:59:51Z richard $
2
# $Id: alcasar-profil.sh 1369 2014-06-03 16:23:07Z richard $
3
 
3
 
4
# alcasar-profil.sh
4
# alcasar-profil.sh
5
# by Richard REY
5
# by 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 des comptes liés aux profiles
8
# Gestion des comptes liés aux profiles
9
# Manage the profil logins
9
# Manage the profil logins
10
 
10
 
11
ADM_PROFIL="admin"
11
ADM_PROFIL="admin"
12
PROFILS="backup manager"
12
PROFILS="backup manager"
13
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
13
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
14
DIR_KEY="/usr/local/etc/digest"
14
DIR_KEY="/usr/local/etc/digest"
15
SED="/bin/sed -i"
15
SED="/bin/sed -i"
16
HOSTNAME=`uname -n`
16
HOSTNAME=`uname -n`
17
Lang=`echo $LANG|cut -c 1-2`
17
Lang=`echo $LANG|cut -c 1-2`
18
 
18
 
19
# liste les comptes de chaque profile
19
# liste les comptes de chaque profile
20
function list () {
20
function list () {
21
	for i in $ALL_PROFILS
21
	for i in $ALL_PROFILS
22
	do
22
	do
23
	if [ $Lang == "fr" ]
23
		if [ $Lang == "fr" ]
24
       	then
24
       		then
25
		echo "Comptes liés au profil '$i' :"
25
			echo -n "Comptes liés au profil '$i' : "
26
 
26
 
27
	else
27
		else
28
	       	echo "accounts linked with profile '$i' :"
28
	       		echo -n "accounts linked with profile '$i' : "
29
	fi
29
		fi
30
	cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort
30
		account_list=`cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort`
-
 
31
		for account in $account_list
-
 
32
		do
-
 
33
			echo -n "$account " 
-
 
34
		done
-
 
35
	echo
31
	done
36
	done
32
}
37
}
33
# ajoute les comptes du profil "admin" aux autres profils
38
# ajoute les comptes du profil "admin" aux autres profils
34
# crée le fichier de clés contenant tous les compte (pour l'accès au centre de gestion)
39
# crée le fichier de clés contenant tous les compte (pour l'accès au centre de gestion)
35
function concat () {
40
function concat () {
36
	> $DIR_KEY/key_all
41
	> $DIR_KEY/key_all
37
	for i in $PROFILS
42
	for i in $PROFILS
38
	do
43
	do
39
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
44
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
40
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
45
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
41
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_all
46
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_all
42
	done
47
	done
43
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
48
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
44
	cat $DIR_KEY/key_only_$ADM_PROFIL >> $DIR_KEY/key_all
49
	cat $DIR_KEY/key_only_$ADM_PROFIL >> $DIR_KEY/key_all
45
	chown -R root:apache $DIR_KEY
50
	chown -R root:apache $DIR_KEY
46
	chmod 640 $DIR_KEY/key_*
51
	chmod 640 $DIR_KEY/key_*
47
}
52
}
48
 
53
 
49
usage="Usage: alcasar-profil.sh --list | --add | --del | --pass"
54
usage="Usage: alcasar-profil.sh --list | --add | --del | --pass"
50
nb_args=$#
55
nb_args=$#
51
args=$1
56
args=$1
52
 
57
 
53
# on met en place la structure minimale
58
# on met en place la structure minimale
54
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
59
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
55
then
60
then
56
	touch $DIR_KEY/key_$ADM_PROFIL
61
	touch $DIR_KEY/key_$ADM_PROFIL
57
fi
62
fi
58
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
63
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
59
for i in $PROFILS
64
for i in $PROFILS
60
do
65
do
61
	if [ ! -e $DIR_KEY/key_only_$i ]
66
	if [ ! -e $DIR_KEY/key_only_$i ]
62
	then
67
	then
63
		touch $DIR_KEY/key_only_$i
68
		touch $DIR_KEY/key_only_$i
64
	fi
69
	fi
65
done
70
done
66
concat
71
concat
67
if [ $nb_args -eq 0 ]
72
if [ $nb_args -eq 0 ]
68
then
73
then
69
	echo $usage
74
	echo $usage
70
	exit 0
75
	exit 0
71
fi
76
fi
72
case $args in
77
case $args in
73
	-\? | -h* | --h*)
78
	-\? | -h* | --h*)
74
		echo "$usage"
79
		echo "$usage"
75
		exit 0
80
		exit 0
76
		;;
81
		;;
77
	--add|-add)	
82
	--add|-add)	
78
		# ajout d'un compte
83
		# ajout d'un compte
79
		list
84
		list
80
		if [ $Lang == "fr" ]
85
		if [ $Lang == "fr" ]
81
	       	then
86
	       	then
82
			echo -n "Choisissez un profil ($ALL_PROFILS) : "
87
			echo -n "Choisissez un profil ($ALL_PROFILS) : "
83
		else
88
		else
84
			echo -n "Select a profile ($ALL_PROFILS) : "
89
			echo -n "Select a profile ($ALL_PROFILS) : "
85
		fi
90
		fi
86
		read profil
91
		read profil
87
		if [ $Lang == "fr" ]
92
		if [ $Lang == "fr" ]
88
		then
93
		then
89
			echo -n "Entrez le nom du compte à créer (profil '$profil') : "
94
			echo -n "Entrez le nom du compte à créer (profil '$profil') : "
90
		else
95
		else
91
		       	echo "Enter the name of the account to create (profile '$profil') : "
96
		       	echo "Enter the name of the account to create (profile '$profil') : "
92
		fi
97
		fi
93
		read account
98
		read account
94
		# on teste s'il n'existe pas déjà
99
		# on teste s'il n'existe pas déjà
95
		for i in $ALL_PROFILS
100
		for i in $ALL_PROFILS
96
		do
101
		do
97
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
102
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
98
			for j in $tmp_account
103
			for j in $tmp_account
99
				do
104
				do
100
				if [ "$j" = "$account" ]
105
				if [ "$j" = "$account" ]
101
					then if [ $Lang == "fr" ]
106
					then if [ $Lang == "fr" ]
102
						then
107
						then
103
							echo "Ce compte existe déjà"
108
							echo "Ce compte existe déjà"
104
						else
109
						else
105
							echo "This account already exists"
110
							echo "This account already exists"
106
						fi
111
						fi
107
					exit 0
112
					exit 0
108
				fi
113
				fi
109
				done
114
				done
110
		done
115
		done
111
		/usr/bin/htdigest $DIR_KEY/key_only_$profil $HOSTNAME $account
116
		/usr/bin/htdigest $DIR_KEY/key_only_$profil $HOSTNAME $account
112
		concat
117
		concat
113
		list
118
		list
114
		;;
119
		;;
115
	--del|-del)
120
	--del|-del)
116
		# suppression d'un compte
121
		# suppression d'un compte
117
		list
122
		list
118
		if [ $Lang == "fr" ]
123
		if [ $Lang == "fr" ]
119
		then
124
		then
120
			echo -n "entrez le nom du compte à supprimer : "
125
			echo -n "entrez le nom du compte à supprimer : "
121
		else
126
		else
122
			echo -n "enter the name of the account to remove : "
127
			echo -n "enter the name of the account to remove : "
123
		fi
128
		fi
124
		read account
129
		read account
125
		for i in $ALL_PROFILS
130
		for i in $ALL_PROFILS
126
			do
131
			do
127
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
132
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
128
			done
133
			done
129
		concat
134
		concat
130
		list
135
		list
131
		;;
136
		;;
132
	--pass|-pass)
137
	--pass|-pass)
133
		# changement du mot de passe d'un compte
138
		# changement du mot de passe d'un compte
134
		list
139
		list
135
		if [ $Lang == "fr" ]
140
		if [ $Lang == "fr" ]
136
		then
141
		then
137
			echo "Changement de mot de passe"
142
			echo "Changement de mot de passe"
138
			echo -n "Entrez le nom du compte : "
143
			echo -n "Entrez le nom du compte : "
139
		else
144
		else
140
			echo "Password change"
145
			echo "Password change"
141
			echo -n "Enter the name of the account : "
146
			echo -n "Enter the name of the account : "
142
		fi
147
		fi
143
		read account
148
		read account
144
		for i in $ALL_PROFILS
149
		for i in $ALL_PROFILS
145
		do
150
		do
146
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
151
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
147
			for j in $tmp_account
152
			for j in $tmp_account
148
				do
153
				do
149
				if [ "$j" = "$account" ]
154
				if [ "$j" = "$account" ]
150
					then
155
					then
151
					/usr/bin/htdigest $DIR_KEY/key_only_$i $HOSTNAME $account
156
					/usr/bin/htdigest $DIR_KEY/key_only_$i $HOSTNAME $account
152
				fi
157
				fi
153
				done
158
				done
154
		done
159
		done
155
		concat
160
		concat
156
		;;
161
		;;
157
	--list|-list)
162
	--list|-list)
158
		# liste des comptes par profile
163
		# liste des comptes par profile
159
		list
164
		list
160
		;;
165
		;;
161
	*)
166
	*)
162
		if [ $Lang == "fr" ]
167
		if [ $Lang == "fr" ]
163
		then
168
		then
164
			echo "Argument inconnu :$1";
169
			echo "Argument inconnu :$1";
165
		else
170
		else
166
			echo "Unknown argument : $i";
171
			echo "Unknown argument : $i";
167
		fi
172
		fi
168
		echo "$usage"
173
		echo "$usage"
169
		exit 1
174
		exit 1
170
		;;
175
		;;
171
esac
176
esac
172
 
177