Subversion Repositories ALCASAR

Rev

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

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