Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

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