Subversion Repositories ALCASAR

Rev

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

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