Subversion Repositories ALCASAR

Rev

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

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