Subversion Repositories ALCASAR

Rev

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

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