Révision 40
bin/get-conf-snapshot (revision 40) | ||
---|---|---|
3 | 3 |
|
4 | 4 |
function usage { |
5 | 5 |
echo "Syntax : $0 zfs_filesystem/volume_name" 1>&2 |
6 |
echo "Return the parameters snapshot for a zfs filesystem/volume" 1>&2
|
|
6 |
echo "Return snapshot parameters for a given zfs filesystem/volume" 1>&2
|
|
7 | 7 |
} |
8 | 8 |
|
9 | 9 |
DIR_CRON="/etc/cron.d/" |
bin/disable-snapshot (revision 40) | ||
---|---|---|
5 | 5 |
DIR_CONF_SNAPSHOT="/opt/gZFS/snapshots/" |
6 | 6 |
BIN_ZFS_SNAPSHOT="/sbin/zfs-snapshot" |
7 | 7 |
|
8 |
# TODO: traduire les msg |
|
8 | 9 |
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 | 10 |
function usage { |
14 | 11 |
echo "Usage :" 1>&2 |
15 | 12 |
echo "disable-snapshot [OPTIONS]" 1>&2 |
bin/enable-replica (revision 40) | ||
---|---|---|
5 | 5 |
DIR_CRON="/etc/cron.d/" |
6 | 6 |
BIN_ZFS_REPLICA="/sbin/zfs-replica" |
7 | 7 |
|
8 |
# TODO: traduire les msg |
|
9 |
|
|
8 | 10 |
function usage { |
9 | 11 |
echo "USAGE :" |
10 | 12 |
echo "$0 -o volume_fs_to_replicate -r volume_fs_destination -n number_replicas_to_keep -m minute_cron -H hour_cron -D Day_of_Month_cron -M month_cron -d day_of_week_cron [-s server destination]" 1>&2 |
... | ... | |
15 | 17 |
echo " -o : origin volume or a filesystem to replicate" 1>&2 |
16 | 18 |
echo " -r : volume or filesystem replicated" 1>&2 |
17 | 19 |
echo " -n : number replicas to keep" 1>&2 |
18 |
echo " -s : if the replica destination is on a another zfs server, so you need to specify this option with the name of server." 1>&2
|
|
19 |
echo " The remote replication use ssh. So please, generate a ssh private/public key and the public key in /root/.ssh/authorized_key" 1>&2
|
|
20 |
echo " on the remote server" 1>&2
|
|
20 |
echo " -s : if replica destination is on another zfs server, you need to specify this option with the name of server." 1>&2
|
|
21 |
echo " Warning ! Remote replication use ssh. So please, generate a ssh private/public key and the public key in /root/.ssh/authorized_key" 1>&2
|
|
22 |
echo " on remote server" 1>&2 |
|
21 | 23 |
echo " -m : minute field for cron replication" 1>&2 |
22 | 24 |
echo " -H : hour field for cron replication" 1>&2 |
23 | 25 |
echo " -D : Day of Month field for cron replication" 1>&2 |
bin/add-iscsi-volume (revision 40) | ||
---|---|---|
46 | 46 |
do |
47 | 47 |
CHECK_TID=$(($CHECK_TID + 1)) |
48 | 48 |
done |
49 |
echo "*** iscsi volume name : ***"
|
|
49 |
echo "*** iscsi volume name: ***" |
|
50 | 50 |
while read inputline |
51 | 51 |
do |
52 | 52 |
NAME_ISCSI=$inputline |
53 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
53 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
54 | 54 |
|
55 | 55 |
while read inputConfirm |
56 | 56 |
do |
... | ... | |
58 | 58 |
then |
59 | 59 |
break |
60 | 60 |
fi |
61 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
61 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
62 | 62 |
done |
63 | 63 |
|
64 | 64 |
if [ "$inputConfirm" = "y" ] |
... | ... | |
67 | 67 |
fi |
68 | 68 |
if [ "$inputConfirm" != "y" ] |
69 | 69 |
then |
70 |
echo "*** iscsi volume name : ***"
|
|
70 |
echo "*** iscsi volume name: ***" |
|
71 | 71 |
fi |
72 | 72 |
done |
73 | 73 |
|
74 | 74 |
echo "" |
75 |
echo "*** Step I : Initialization of TID and iscsi volume name ***"
|
|
75 |
echo "*** Step I: Initialization of TID and iscsi volume name ***" |
|
76 | 76 |
TODAY=$(date +%Y%m%d%H%M%S) |
77 | 77 |
ietadm --op new --tid=$CHECK_TID --params Name=iqn.$TODAY:$(hostname)-ens-zfs-iscsi-$NAME_ISCSI |
78 | 78 |
if [ $? -eq 0 ] |
79 | 79 |
then |
80 |
echo "*** Path of zfs device (zvol) to export : ***"
|
|
80 |
echo "*** Path of zfs device (zvol) to export: ***" |
|
81 | 81 |
|
82 | 82 |
|
83 | 83 |
while read -e inputline |
84 | 84 |
do |
85 | 85 |
PATH_ZVOL=$inputline |
86 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
86 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
87 | 87 |
|
88 | 88 |
while read inputConfirm |
89 | 89 |
do |
... | ... | |
91 | 91 |
then |
92 | 92 |
break |
93 | 93 |
fi |
94 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
94 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
95 | 95 |
done |
96 | 96 |
|
97 | 97 |
if [ "$inputConfirm" = "y" ] |
98 | 98 |
then |
99 |
echo "*** Check if zvol path exists ...***"
|
|
99 |
echo "*** Check if zvol path exists... ***"
|
|
100 | 100 |
ls -l $PATH_ZVOL |
101 | 101 |
if [ $? -eq 0 ] |
102 | 102 |
then |
103 |
echo "*** The path is valid ..."
|
|
103 |
echo "*** The path is valid... "
|
|
104 | 104 |
break |
105 | 105 |
else |
106 |
echo "*** Path doesn't exist ...."
|
|
106 |
echo "*** Path doesn't exist... "
|
|
107 | 107 |
fi |
108 | 108 |
fi |
109 | 109 |
if [ "$inputConfirm" != "y" ] |
110 | 110 |
then |
111 |
echo "*** Path of zfs device (zvol) to export : ***"
|
|
111 |
echo "*** Path of zfs device (zvol) to export: ***" |
|
112 | 112 |
fi |
113 | 113 |
done |
114 | 114 |
|
115 | 115 |
echo "" |
116 |
echo "*** Step II : initialization of the PATH and iscsi volume LUN ***"
|
|
116 |
echo "*** Step II: initialization of the PATH and iscsi volume LUN ***" |
|
117 | 117 |
if [ $? -eq 0 ] |
118 | 118 |
then |
119 |
echo "*** ISCSI export Type (fileio/blockio) : ***"
|
|
119 |
echo "*** ISCSI export Type (fileio/blockio): ***" |
|
120 | 120 |
|
121 | 121 |
while read inputline |
122 | 122 |
do |
123 | 123 |
TYPE_EXPORT=$inputline |
124 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
124 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
125 | 125 |
|
126 | 126 |
while read inputConfirm |
127 | 127 |
do |
... | ... | |
129 | 129 |
then |
130 | 130 |
break |
131 | 131 |
fi |
132 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
132 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
133 | 133 |
done |
134 | 134 |
|
135 | 135 |
if [ "$inputConfirm" = "y" ] |
136 | 136 |
then |
137 |
echo "*** Check if the parameter is valid ...***"
|
|
137 |
echo "*** Check if the parameter is valid... ***"
|
|
138 | 138 |
if [ "$TYPE_EXPORT" = "fileio" ]||[ "$TYPE_EXPORT" = "blockio" ] |
139 | 139 |
then |
140 | 140 |
break |
141 | 141 |
else |
142 |
echo "*** ISCSI export Type (fileio/blockio) : ***"
|
|
142 |
echo "*** ISCSI export Type (fileio/blockio): ***" |
|
143 | 143 |
fi |
144 | 144 |
fi |
145 | 145 |
if [ "$inputConfirm" != "y" ] |
146 | 146 |
then |
147 |
echo "*** ISCSI export Type (fileio/blockio) : ***"
|
|
147 |
echo "*** ISCSI export Type (fileio/blockio): ***" |
|
148 | 148 |
fi |
149 | 149 |
done |
150 | 150 |
|
151 | 151 |
echo "" |
152 |
echo "*** Step II.B : initialization iscsi IOMode ***"
|
|
153 |
echo "*** ISCSI IOMode (ro/wt) : ***"
|
|
152 |
echo "*** Step II.B: initialization iscsi IOMode ***" |
|
153 |
echo "*** ISCSI IOMode (ro/wt): ***" |
|
154 | 154 |
|
155 | 155 |
while read inputline |
156 | 156 |
do |
157 | 157 |
iomode=$inputline |
158 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
158 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
159 | 159 |
|
160 | 160 |
while read inputConfirm |
161 | 161 |
do |
... | ... | |
163 | 163 |
then |
164 | 164 |
break |
165 | 165 |
fi |
166 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
166 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
167 | 167 |
done |
168 | 168 |
|
169 | 169 |
if [ "$inputConfirm" = "y" ] |
170 | 170 |
then |
171 |
echo "*** Check if the parameter is valid ...***"
|
|
171 |
echo "*** Check if the parameter is valid... ***"
|
|
172 | 172 |
if [ "$iomode" = "ro" ]||[ "$iomode" = "wt" ] |
173 | 173 |
then |
174 | 174 |
break |
175 | 175 |
else |
176 |
echo "*** ISCSI IOMode (ro/wt) : ***"
|
|
176 |
echo "*** ISCSI IOMode (ro/wt): ***" |
|
177 | 177 |
fi |
178 | 178 |
fi |
179 | 179 |
if [ "$inputConfirm" != "y" ] |
180 | 180 |
then |
181 |
echo "*** ISCSI IOMode (ro/wt) : ***"
|
|
181 |
echo "*** ISCSI IOMode (ro/wt): ***" |
|
182 | 182 |
fi |
183 | 183 |
done |
184 | 184 |
|
185 | 185 |
echo "" |
186 |
echo "*** Step III : initialization of export Type and iscsi IOMode ***"
|
|
186 |
echo "*** Step III: initialization of export Type and iscsi IOMode ***" |
|
187 | 187 |
ietadm --op new --tid=$CHECK_TID --lun=0 --params Path=$PATH_ZVOL,Type=$TYPE_EXPORT,IOMode=$iomode |
188 | 188 |
if [ $? -eq 0 ] |
189 | 189 |
then |
190 | 190 |
|
191 | 191 |
echo "" |
192 |
echo "*** Step IV : Login and password ***"
|
|
193 |
echo "*** Do you enable a restriction login/password : (y/n)"
|
|
192 |
echo "*** Step IV: Login and password ***" |
|
193 |
echo "*** Do you enable a restriction login/password: (y/n)" |
|
194 | 194 |
while read inputline |
195 | 195 |
do |
196 | 196 |
if [ "$inputline" != "y" ] && [ "$inputline" != "n" ] |
197 | 197 |
then |
198 |
echo "*** Do you enable a restriction login/password : (y/n)"
|
|
198 |
echo "*** Do you enable a restriction login/password: (y/n)" |
|
199 | 199 |
else |
200 | 200 |
if [ "$inputline" = "y" ] |
201 | 201 |
then |
202 |
echo "*** Give a login :"
|
|
202 |
echo "*** Give a login:" |
|
203 | 203 |
while read inputlogin |
204 | 204 |
do |
205 | 205 |
if [ "$inputlogin" != "" ] |
206 | 206 |
then |
207 | 207 |
break |
208 | 208 |
else |
209 |
echo "*** Give a login :"
|
|
209 |
echo "*** Give a login:" |
|
210 | 210 |
fi |
211 | 211 |
done |
212 | 212 |
|
213 |
echo "*** Give a password :"
|
|
213 |
echo "*** Give a password:" |
|
214 | 214 |
while read inputpass |
215 | 215 |
do |
216 | 216 |
if [ "$inputpass" = "" ] |
217 | 217 |
then |
218 |
echo "*** Give a password :"
|
|
218 |
echo "*** Give a password:" |
|
219 | 219 |
else |
220 | 220 |
break |
221 | 221 |
fi |
... | ... | |
226 | 226 |
echo "*** Authentication Configuration [OK]" |
227 | 227 |
|
228 | 228 |
echo "" |
229 |
echo "*** Step IV : Writting in file ietd.conf ***"
|
|
230 |
echo "*** Backup of /etc/iet/ietd.conf ..."
|
|
229 |
echo "*** Step IV: Writting in file ietd.conf ***" |
|
230 |
echo "*** Backup of /etc/iet/ietd.conf... "
|
|
231 | 231 |
|
232 | 232 |
cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY |
233 | 233 |
|
... | ... | |
248 | 248 |
break |
249 | 249 |
else |
250 | 250 |
echo "" |
251 |
echo "*** Step IV : Writting in file ietd.conf ***"
|
|
252 |
echo "*** Backup of /etc/iet/ietd.conf ..."
|
|
251 |
echo "*** Step IV: Writting in file ietd.conf ***" |
|
252 |
echo "*** Backup of /etc/iet/ietd.conf... "
|
|
253 | 253 |
|
254 | 254 |
cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY |
255 | 255 |
|
... | ... | |
270 | 270 |
done |
271 | 271 |
|
272 | 272 |
else |
273 |
echo "*** Problem during the step III (initialization of iscsi export Type). Canceled Process ...***"
|
|
273 |
echo "*** Problem during step III (initialization of iscsi export Type). Canceled process... ***"
|
|
274 | 274 |
ietadm --op delete --tid=$CHECK_TID |
275 | 275 |
fi |
276 | 276 |
|
277 | 277 |
else |
278 |
echo "*** Problem during the step II (initialization of PATH and iscsi volume LUN). Canceled Process ...***"
|
|
278 |
echo "*** Problem during step II (initialization of PATH and iscsi volume LUN). Canceled process... ***"
|
|
279 | 279 |
ietadm --op delete --tid=$CHECK_TID |
280 | 280 |
fi |
281 | 281 |
|
282 | 282 |
else |
283 |
echo "*** Problem during the step I (initialization of TID and iscsi volume name). Canceled Process ...***"
|
|
283 |
echo "*** Problem during step I (initialization of TID and iscsi volume name). Canceled process... ***"
|
|
284 | 284 |
ietadm --op delete --tid=$CHECK_TID |
285 | 285 |
fi |
286 | 286 |
} |
287 | 287 |
|
288 | 288 |
function usage { |
289 | 289 |
|
290 |
echo "syntax : " 1>&2
|
|
290 |
echo "syntax: " 1>&2 |
|
291 | 291 |
echo "add-iscsi-volume [OPTIONS]" 1>&2 |
292 | 292 |
echo "" 1>&2 |
293 | 293 |
echo "OPTIONS :" 1>&2 |
294 | 294 |
echo "-h : display this message" 1>&2 |
295 | 295 |
echo "-d : path device to iscsi export" 1>&2 |
296 |
echo "-T : export type. Only fileio or blockio" 1>&2
|
|
297 |
echo "-L : lun. Only numeric value." 1>&2
|
|
296 |
echo "-T : export type (Only fileio or blockio)" 1>&2
|
|
297 |
echo "-L : lun (Only numeric values)" 1>&2
|
|
298 | 298 |
echo "-o : IO Mode : ro (Read Only) or wt (Read Write)" 1>&2 |
299 | 299 |
echo "-l : login if you want a CHAP authentication" 1>&2 |
300 | 300 |
echo "-p : password if you want a CHAP authentication" 1>&2 |
301 |
echo "-R : Specify a list of restricted IP. Separate such IP by a ;" 1>&2
|
|
302 |
echo "-t : name of zfs volume. This field is used to generate alias name iscsi" 1>&2
|
|
303 |
echo "-i : interactive mode. This option is not compatible with others" 1>&2
|
|
301 |
echo "-R : Specify a list of restricted IP (Separated by a ;)" 1>&2
|
|
302 |
echo "-t : name of zfs volume (This field is used to generate alias name iscsi)" 1>&2
|
|
303 |
echo "-i : interactive mode (This option is not compatible with others)" 1>&2
|
|
304 | 304 |
|
305 | 305 |
} |
306 | 306 |
|
bin/create-volume (revision 40) | ||
---|---|---|
8 | 8 |
echo " -p : pool name" 1>&2 |
9 | 9 |
echo " -b : block size. Permit value : 32K, 64K, 128K (recommanded)" 1>&2 |
10 | 10 |
echo " -s : volume size. Permit unit : T, G, M" 1>&2 |
11 |
# FIXME: c'est pas clair ta formulation |
|
11 | 12 |
echo " -o : options zfs volume. Read the man zfs for more details" 1>&2 |
12 |
|
|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
|
... | ... | |
27 | 27 |
|
28 | 28 |
function interactive { |
29 | 29 |
zfs list |
30 |
echo "*** Choose a pool for the ZFS volume to create : ***" |
|
30 |
# FIXME: c'est pas clair ta formulation |
|
31 |
echo "*** Choose a pool for the ZFS volume to create: ***" |
|
31 | 32 |
|
32 | 33 |
while read inputline |
33 | 34 |
do |
... | ... | |
36 | 37 |
zfs list |grep -i $inputline |
37 | 38 |
if [ $? -eq 1 ] |
38 | 39 |
then |
39 |
echo "*** Choose a pool for the ZFS volume to create : ***" |
|
40 |
# FIXME: c'est pas clair ta formulation |
|
41 |
echo "*** Choose a pool for the ZFS volume to create: ***" |
|
40 | 42 |
else |
41 | 43 |
|
42 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
44 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
43 | 45 |
while read inputConfirm |
44 | 46 |
do |
45 | 47 |
if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ] |
46 | 48 |
then |
47 | 49 |
break |
48 | 50 |
fi |
49 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
51 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
50 | 52 |
done |
51 | 53 |
|
52 | 54 |
if [ "$inputConfirm" = "y" ] |
53 | 55 |
then |
54 | 56 |
NAME_POOL=$inputline |
55 |
echo "volume name : "
|
|
57 |
echo "volume name: " |
|
56 | 58 |
while read inputVolume |
57 | 59 |
do |
58 | 60 |
if [ "$inputVolume" != "" ] |
... | ... | |
73 | 75 |
fi |
74 | 76 |
if [ $VOL_OK -eq 1 ] |
75 | 77 |
then |
76 |
echo "volume name : "
|
|
78 |
echo "volume name: " |
|
77 | 79 |
else |
78 | 80 |
NAME_VOL=$inputVolume |
79 |
echo "volume size (Unit in T|G|M) : "
|
|
81 |
echo "volume size (Unit in T|G|M): " |
|
80 | 82 |
while read inputSize |
81 | 83 |
do |
82 | 84 |
if [ "$inputSize" != "" ] |
... | ... | |
91 | 93 |
echo "/!\\ ZFS volume creation [ERROR] /!\\" |
92 | 94 |
fi |
93 | 95 |
else |
94 |
echo "volume size (Unit in T|G|M) : "
|
|
96 |
echo "volume size (Unit in T|G|M): " |
|
95 | 97 |
fi |
96 | 98 |
done |
97 | 99 |
break |
98 | 100 |
fi |
99 | 101 |
else |
100 |
echo "volume name : "
|
|
102 |
echo "volume name: " |
|
101 | 103 |
fi |
102 | 104 |
done |
103 | 105 |
break |
... | ... | |
105 | 107 |
break |
106 | 108 |
fi |
107 | 109 |
else |
108 |
echo "*** Choose a pool for the ZFS volume to create : ***" |
|
110 |
# FIXME: c'est pas clair ta formulation |
|
111 |
echo "*** Choose a pool for the ZFS volume to create: ***" |
|
109 | 112 |
fi |
110 | 113 |
done |
111 | 114 |
} |
bin/del-volume (revision 40) | ||
---|---|---|
1 | 1 |
#!/bin/bash |
2 | 2 |
# $Id$ |
3 | 3 |
|
4 |
# TODO: fix typos |
|
5 |
|
|
4 | 6 |
GETINFO_ISCSI="/sbin/get-conf-iscsi-volume" |
5 | 7 |
DEL_ISCSI="/sbin/del-iscsi-volume" |
6 | 8 |
|
bin/check-coherence-zvol-dev (revision 40) | ||
---|---|---|
15 | 15 |
SIZE_ZVOL=$(zfs get volsize $line | grep $line |awk '{ print $3}') |
16 | 16 |
if [ "$SIZE_ZVOL" != "-" ] |
17 | 17 |
then |
18 |
echo "*** zvol $line. Taille : $SIZE_ZVOL"
|
|
18 |
echo "*** zvol $line. Size: $SIZE_ZVOL"
|
|
19 | 19 |
if [ -e /dev/zvol/$line ] |
20 | 20 |
then |
21 | 21 |
echo "Check Coherence ZVOL/DEVICE for $line : [OK]" |
22 | 22 |
else |
23 | 23 |
echo "Check Coherence ZVOL/DEVICE for $line : [ERROR]" |
24 |
echo "Try to resolv the problem ..."
|
|
24 |
echo "Trying to resolv the problem... "
|
|
25 | 25 |
zfs rename $line $line-rn |
26 | 26 |
zfs rename $line-rn $line |
27 | 27 |
if [ -e /dev/zvol/$line ] |
... | ... | |
51 | 51 |
echo "Check Coherence SNAPSHOT/DEVICE for $line : [OK]" |
52 | 52 |
else |
53 | 53 |
echo "Check Coherence SNAPSHOT/DEVICE for $line : [ERROR]" |
54 |
echo "Try to resolv the problem ..."
|
|
54 |
echo "Trying to resolv the problem... "
|
|
55 | 55 |
zfs rename $line $line-rn |
56 | 56 |
zfs rename $line-rn $line |
57 | 57 |
if [ -e /dev/zvol/$line ] |
bin/get-conf-replica (revision 40) | ||
---|---|---|
3 | 3 |
|
4 | 4 |
function usage { |
5 | 5 |
echo "Syntax : $0 zfs_filesystem/volume_name" 1>&2 |
6 |
echo "Return the parameters replication for a zfs filesystem/volume" 1>&2
|
|
6 |
echo "Return replication parameters for a given zfs filesystem/volume" 1>&2
|
|
7 | 7 |
} |
8 | 8 |
|
9 | 9 |
DIR_CRON="/etc/cron.d/" |
bin/disable-replica (revision 40) | ||
---|---|---|
5 | 5 |
DIR_CONF_REPLICA="/opt/gZFS/replicas/" |
6 | 6 |
BIN_ZFS_REPLICA="/sbin/zfs-replica" |
7 | 7 |
|
8 |
# TODO: traduire les msg |
|
8 | 9 |
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 | 10 |
function usage { |
14 | 11 |
echo "Usage :" 1>&2 |
15 | 12 |
echo "disable-replica [OPTIONS]" 1>&2 |
bin/del-iscsi-volume (revision 40) | ||
---|---|---|
34 | 34 |
fi |
35 | 35 |
if [ $TID_ISACTIVE -eq 0 ] |
36 | 36 |
then |
37 |
echo "iscsi volume in use, please disconnect all clients " 1>&2 |
|
37 |
echo "iscsi volume in use, please disconnect all clients first " 1>&2
|
|
38 | 38 |
exit 1 |
39 | 39 |
fi |
40 | 40 |
TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }') |
... | ... | |
52 | 52 |
ietadm --op delete --tid=$TID2DEL |
53 | 53 |
if [ $? -eq 0 ] |
54 | 54 |
then |
55 |
echo "*** La suppression via la commande ietadm s'est termine correctement" |
|
55 |
# echo "*** La suppression via la commande ietadm s'est termine correctement" |
|
56 |
echo "*** Removal, via ietadm command, ended correctly " |
|
56 | 57 |
echo "" |
57 |
echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..." |
|
58 |
# echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..." |
|
59 |
echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... " |
|
58 | 60 |
|
59 | 61 |
COPY_LINE=0 |
60 | 62 |
>/tmp/.buffer_ietd.conf |
... | ... | |
76 | 78 |
fi |
77 | 79 |
|
78 | 80 |
done < "/etc/iet/ietd.conf" |
79 |
echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..." |
|
81 |
# echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..." |
|
82 |
echo "*** Backup of file /etc/iet/ietd.conf... " |
|
80 | 83 |
TODAY=$(date +%Y%m%d%H%M%S) |
81 | 84 |
cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY |
82 | 85 |
cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf |
83 | 86 |
|
84 | 87 |
|
85 | 88 |
echo "" |
86 |
echo "*** Vérification /proc/net/iet/volume :" |
|
89 |
# echo "*** Vérification /proc/net/iet/volume :" |
|
90 |
echo "*** Checking /proc/net/iet/volumes: " |
|
87 | 91 |
cat /proc/net/iet/volume |
88 | 92 |
|
89 | 93 |
echo "" |
90 |
echo "*** Verification repertoire /etc/iet :" |
|
94 |
# echo "*** Verification repertoire /etc/iet :" |
|
95 |
echo "*** Checking /etc/iet directory: " |
|
91 | 96 |
ls -ltr /etc/iet |
92 | 97 |
|
93 | 98 |
echo "" |
94 |
echo "*** Operation de suppression [OK] ..." |
|
99 |
# echo "*** Operation de suppression [OK] ..." |
|
100 |
echo "*** Removal operation [OK] " |
|
95 | 101 |
else |
96 | 102 |
|
97 |
echo "*** Un probleme est survenu lors de la tentive de suppresion du volume iscsi TID:$TID2DEL" |
|
98 |
echo "*** Veuillez vérifier que le volume n'est pas en cours d'uilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce serv ce" |
|
103 |
# echo "*** Un probleme est survenu lors de la tentative de suppression du volume iscsi TID:$TID2DEL" |
|
104 |
# echo "*** Veuillez vérifier que le volume n'est pas en cours d'utilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce service" |
|
105 |
echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL" |
|
106 |
echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge" |
|
99 | 107 |
fi |
100 | 108 |
|
101 | 109 |
|
... | ... | |
104 | 112 |
|
105 | 113 |
function interactive { |
106 | 114 |
|
107 |
echo "*** Choix du volume ISCSI a supprimer ***" |
|
115 |
#echo "*** Choix du volume ISCSI a supprimer ***" |
|
116 |
echo "*** ISCSI volume to delete: ***" |
|
108 | 117 |
cat /proc/net/iet/session |
109 | 118 |
|
110 |
echo "*** Saisir le TID du volume iscsi a supprimer : ***" |
|
119 |
#echo "*** Saisir le TID du volume iscsi a supprimer : ***" |
|
120 |
echo "*** Please enter TID from iscsi volume to delete: ***" |
|
111 | 121 |
while read inputline |
112 | 122 |
do |
113 | 123 |
TID2DEL=$inputline |
114 |
echo "*** Etes-vous sur du nom : $inputline ? (y/n) ***" |
|
124 |
# echo "*** Etes-vous sur du nom : $inputline ? (y/n) ***" |
|
125 |
echo "*** Are you sure: $inputline ? (y/n) ***" |
|
115 | 126 |
|
116 | 127 |
while read inputConfirm |
117 | 128 |
do |
... | ... | |
119 | 130 |
then |
120 | 131 |
break |
121 | 132 |
fi |
122 |
echo "*** Etes-vous certain de vouloir supprimer le TID : $inputline ? (y/n) ***" |
|
133 |
# echo "*** Etes-vous certain de vouloir supprimer le TID : $inputline ? (y/n) ***" |
|
134 |
echo "*** Are you sure to delete this TID: $inputline ? (y/n) ***" |
|
123 | 135 |
done |
124 | 136 |
|
125 | 137 |
if [ "$inputConfirm" = "y" ] |
... | ... | |
128 | 140 |
fi |
129 | 141 |
if [ "$inputConfirm" != "y" ] |
130 | 142 |
then |
131 |
echo "*** Saisir le TID du volume iscsi a supprimer : ***" |
|
143 |
# echo "*** Saisir le TID du volume iscsi a supprimer : ***" |
|
144 |
echo "*** Please enter TID from iscsi volume to delete: ***" |
|
132 | 145 |
fi |
133 | 146 |
done |
134 | 147 |
|
135 |
echo "**** Recuperation de la propriété Target (identifiant utilise dans le fichier /etc/iet/ietd.conf) ..." |
|
148 |
#echo "**** Recuperation de la propriété Target (identifiant utilise dans le fichier /etc/iet/ietd.conf) ..." |
|
149 |
echo "**** Retrieval of Target property (id used in /etc/iet/ietd.conf)... " |
|
136 | 150 |
TARGET=$(cat /proc/net/iet/session |grep -i tid:$TID2DEL |cut -d ":" -f3) |
137 | 151 |
|
138 |
echo "Nom de la target a rechercher dans /etc/iet/ietd.conf : $TARGET" |
|
152 |
#echo "Nom de la target a rechercher dans /etc/iet/ietd.conf : $TARGET" |
|
153 |
echo "Target name to search in /etc/iet/ietd.conf: $TARGET" |
|
139 | 154 |
|
140 | 155 |
echo "" |
141 |
echo "**** Check si le volume est en cours d'utilisation ..." |
|
156 |
#echo "**** Check si le volume est en cours d'utilisation ..." |
|
157 |
echo "**** Checking if volume is in use... " |
|
142 | 158 |
|
143 | 159 |
|
144 | 160 |
TID_FIND=1 |
... | ... | |
156 | 172 |
fi |
157 | 173 |
if [ $TID_ISACTIVE -eq 0 ] |
158 | 174 |
then |
159 |
echo "Le volume isci est en cours d'utilisation, suppression impossible" |
|
175 |
# echo "Le volume isci est en cours d'utilisation, suppression impossible" |
|
176 |
echo "ISCSI Volume is in use, cannot delete." |
|
160 | 177 |
exit 1 |
161 | 178 |
fi |
162 | 179 |
TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }') |
... | ... | |
171 | 188 |
fi |
172 | 189 |
done |
173 | 190 |
|
174 |
echo "*** Debut de la procédure de suppression ..." |
|
191 |
#echo "*** Debut de la procédure de suppression ..." |
|
192 |
echo "*** Beginning delete procedure... " |
|
175 | 193 |
echo "" |
176 | 194 |
|
177 | 195 |
ietadm --op delete --tid=$TID2DEL |
178 | 196 |
if [ $? -eq 0 ] |
179 | 197 |
then |
180 |
echo "*** La suppression via la commande ietadm s'est termine correctement" |
|
198 |
# echo "*** La suppression via la commande ietadm s'est termine correctement" |
|
199 |
echo "*** Removal, via ietadm command, ended correctly " |
|
181 | 200 |
echo "" |
182 |
echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..." |
|
201 |
# echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..." |
|
202 |
echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... " |
|
183 | 203 |
|
184 | 204 |
COPY_LINE=0 |
185 | 205 |
>/tmp/.buffer_ietd.conf |
... | ... | |
201 | 221 |
fi |
202 | 222 |
|
203 | 223 |
done < "/etc/iet/ietd.conf" |
204 |
echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..." |
|
224 |
# echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..." |
|
225 |
echo "*** Backup of file /etc/iet/ietd.conf... " |
|
205 | 226 |
TODAY=$(date +%Y%m%d%H%M%S) |
206 | 227 |
cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY |
207 | 228 |
cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf |
208 | 229 |
|
209 | 230 |
|
210 | 231 |
echo "" |
211 |
echo "*** Vérification /proc/net/iet/volume :" |
|
232 |
# echo "*** Vérification /proc/net/iet/volume :" |
|
233 |
echo "*** Checking /proc/net/iet/volumes: " |
|
212 | 234 |
cat /proc/net/iet/volume |
213 | 235 |
|
214 | 236 |
echo "" |
215 |
echo "*** Verification repertoire /etc/iet :" |
|
237 |
# echo "*** Verification repertoire /etc/iet :" |
|
238 |
echo "*** Checking /etc/iet directory: " |
|
216 | 239 |
ls -ltr /etc/iet |
217 | 240 |
|
218 | 241 |
echo "" |
219 |
echo "*** Operation de suppression [OK] ..." |
|
242 |
# echo "*** Operation de suppression [OK] ..." |
|
243 |
echo "*** Removal operation [OK] " |
|
220 | 244 |
else |
221 | 245 |
|
222 |
echo "*** Un probleme est survenu lors de la tentive de suppresion du volume iscsi TID:$TID2DEL" |
|
223 |
echo "*** Veuillez vérifier que le volume n'est pas en cours d'uilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce service" |
|
246 |
# echo "*** Un probleme est survenu lors de la tentive de suppresion du volume iscsi TID:$TID2DEL" |
|
247 |
# echo "*** Veuillez vérifier que le volume n'est pas en cours d'uilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce service" |
|
248 |
echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL" |
|
249 |
echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge" |
|
224 | 250 |
fi |
225 |
echo "*** FIN ***"
|
|
251 |
echo "*** END ***"
|
|
226 | 252 |
} |
227 | 253 |
|
228 | 254 |
while getopts "iT:h" OPTION |
bin/enable-snapshot (revision 40) | ||
---|---|---|
5 | 5 |
DIR_CONF_SNAPSHOT="/opt/gZFS/snapshots/" |
6 | 6 |
BIN_ZFS_SNAPSHOT="/sbin/zfs-snapshot" |
7 | 7 |
|
8 |
# TODO: traduire les msg |
|
8 | 9 |
|
9 | 10 |
function usage { |
10 | 11 |
echo "Usage : $0 options" 1>&2 |
11 | 12 |
echo "OPTIONS :" 1>&2 |
12 |
echo " -i : interactive mode, this option is not compatible with others options" 1>&2
|
|
13 |
echo " -i : interactive mode, this option is not compatible with other options" 1>&2 |
|
13 | 14 |
echo " -m : minute field for cron snapshot" 1>&2 |
14 |
echo " -H : hour field for cron snapshots" 1>&2
|
|
15 |
echo " -D : Day of Month field for cron snapshots" 1>&2
|
|
16 |
echo " -M : Month field for cron snapshots" 1>&2
|
|
17 |
echo " -d : Day of week for cron snapshots" 1>&2
|
|
18 |
echo " -N : Name of ZFS Volume/FileSystem to snapshots" 1>&2
|
|
19 |
echo " -t : Type ZFS Volume or FileSystem. Possible value : volume or filesystem" 1>&2
|
|
20 |
echo " -k : Number of snapsot to keep" 1>&2 |
|
15 |
echo " -H : hour field for cron snapshot" 1>&2 |
|
16 |
echo " -D : Day of Month field for cron snapshot" 1>&2 |
|
17 |
echo " -M : Month field for cron snapshot" 1>&2 |
|
18 |
echo " -d : Day of week for cron snapshot" 1>&2 |
|
19 |
echo " -N : Name of ZFS Volume/FileSystem to snapshot" 1>&2 |
|
20 |
echo " -t : Type (Possible values: volume or filesystem)" 1>&2
|
|
21 |
echo " -k : Number of snapshot to keep" 1>&2
|
|
21 | 22 |
} |
22 | 23 |
|
23 | 24 |
function checkField4Cron { |
bin/create-filesystem (revision 40) | ||
---|---|---|
6 | 6 |
echo "$0 [options]" 1>&2 |
7 | 7 |
echo " -n : filesystem name" 1>&2 |
8 | 8 |
echo " -p : pool name" 1>&2 |
9 |
# FIXME: c'est pas clair ta formulation : |
|
9 | 10 |
echo " -o : options zfs filesystem. Read the man zfs for more details" 1>&2 |
10 |
|
|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
function nointeractive { |
... | ... | |
19 | 19 |
|
20 | 20 |
function interactive { |
21 | 21 |
zfs list |
22 |
echo "*** Choose a pool for the filesystem to create : ***" |
|
22 |
# FIXME: c'est pas clair ta formulation |
|
23 |
echo "*** Choose a pool for the filesystem to create: ***" |
|
23 | 24 |
|
24 | 25 |
while read inputline |
25 | 26 |
do |
... | ... | |
28 | 29 |
zfs list |grep -i $inputline |
29 | 30 |
if [ $? -eq 1 ] |
30 | 31 |
then |
31 |
echo "*** Choose a pool for the filesystem to create : ***" |
|
32 |
# FIXME: c'est pas clair ta formulation |
|
33 |
echo "*** Choose a pool for the filesystem to create: ***" |
|
32 | 34 |
else |
33 | 35 |
|
34 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
36 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
35 | 37 |
while read inputConfirm |
36 | 38 |
do |
37 | 39 |
if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ] |
38 | 40 |
then |
39 | 41 |
break |
40 | 42 |
fi |
41 |
echo "*** Are you sur : $inputline ? (y/n) ***"
|
|
43 |
echo "*** Are you sure: $inputline ? (y/n) ***"
|
|
42 | 44 |
done |
43 | 45 |
|
44 | 46 |
if [ "$inputConfirm" = "y" ] |
45 | 47 |
then |
46 | 48 |
NAME_POOL=$inputline |
47 |
echo "filesystem name : "
|
|
49 |
echo "filesystem name: " |
|
48 | 50 |
while read inputFS |
49 | 51 |
do |
50 | 52 |
if [ "$inputFS" != "" ] |
... | ... | |
59 | 61 |
fi |
60 | 62 |
if [ $FS_OK -eq 1 ] |
61 | 63 |
then |
62 |
echo "filesystem name : "
|
|
64 |
echo "filesystem name: " |
|
63 | 65 |
else |
64 | 66 |
NAME_FS=$inputFS |
65 | 67 |
zfs create $NAME_POOL/$inputFS |
... | ... | |
73 | 75 |
fi |
74 | 76 |
fi |
75 | 77 |
else |
76 |
echo "filesystem name : "
|
|
78 |
echo "filesystem name: " |
|
77 | 79 |
fi |
78 | 80 |
done |
79 | 81 |
break |
... | ... | |
81 | 83 |
break |
82 | 84 |
fi |
83 | 85 |
else |
84 |
echo "*** Choose a pool for the filesystem to create : ***" |
|
86 |
# FIXME: c'est pas clair ta formulation |
|
87 |
echo "*** Choose a pool for the filesystem to create: ***" |
|
85 | 88 |
fi |
86 | 89 |
done |
87 | 90 |
} |
bin/del-filesystem (revision 40) | ||
---|---|---|
36 | 36 |
function interactive { |
37 | 37 |
|
38 | 38 |
zfs list |
39 |
echo "*** Enter the ZFS FileSystem Name : ***"
|
|
39 |
echo "*** Enter ZFS FileSystem Name: ***"
|
|
40 | 40 |
while read inputline |
41 | 41 |
do |
42 | 42 |
NAME_VOL=$inputline |
43 |
echo "*** Do you want really remove the ZFS FileSystem : $inputline ? (y/n) ***"
|
|
43 |
echo "*** Do you really want to remove this ZFS FileSystem: $inputline ? (y/n) ***"
|
|
44 | 44 |
while read inputConfirm |
45 | 45 |
do |
46 | 46 |
if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ] |
47 | 47 |
then |
48 | 48 |
break |
49 | 49 |
fi |
50 |
echo "*** Do you want really remove the ZFS FileSystem : $inputline ? (y/n) ***"
|
|
50 |
echo "*** Do you really want to remove this ZFS FileSystem: $inputline ? (y/n) ***"
|
|
51 | 51 |
done |
52 | 52 |
|
53 | 53 |
|
... | ... | |
57 | 57 |
fi |
58 | 58 |
if [ "$inputConfirm" != "y" ] |
59 | 59 |
then |
60 |
echo "*** Enter the ZFS Volume FileSystem : ***"
|
|
60 |
echo "*** Enter ZFS Volume FileSystem: ***"
|
|
61 | 61 |
fi |
62 | 62 |
done |
63 | 63 |
nointeractive |
COPYING.CeCILLv2 (revision 40) | ||
---|---|---|
1 |
CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL |
|
2 |
|
|
3 |
|
|
4 |
Avertissement |
|
5 |
|
|
6 |
Ce contrat est une licence de logiciel libre issue d'une concertation |
|
7 |
entre ses auteurs afin que le respect de deux grands principes préside à |
|
8 |
sa rédaction: |
|
9 |
|
|
10 |
* d'une part, le respect des principes de diffusion des logiciels |
|
11 |
libres: accès au code source, droits étendus conférés aux |
|
12 |
utilisateurs, |
|
13 |
* d'autre part, la désignation d'un droit applicable, le droit |
|
14 |
français, auquel elle est conforme, tant au regard du droit de la |
|
15 |
responsabilité civile que du droit de la propriété intellectuelle |
|
16 |
et de la protection qu'il offre aux auteurs et titulaires des |
|
17 |
droits patrimoniaux sur un logiciel. |
|
18 |
|
|
19 |
Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel] |
|
20 |
L[ibre]) sont: |
|
21 |
|
|
22 |
Commissariat à l'Energie Atomique - CEA, établissement public de |
|
23 |
recherche à caractère scientifique, technique et industriel, dont le |
|
24 |
siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris. |
|
25 |
|
|
26 |
Centre National de la Recherche Scientifique - CNRS, établissement |
|
27 |
public à caractère scientifique et technologique, dont le siège est |
|
28 |
situé 3 rue Michel-Ange, 75794 Paris cedex 16. |
|
29 |
|
|
30 |
Institut National de Recherche en Informatique et en Automatique - |
|
31 |
INRIA, établissement public à caractère scientifique et technologique, |
|
32 |
dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153 |
|
33 |
Le Chesnay cedex. |
|
34 |
|
|
35 |
|
|
36 |
Préambule |
|
37 |
|
|
38 |
Ce contrat est une licence de logiciel libre dont l'objectif est de |
|
39 |
conférer aux utilisateurs la liberté de modification et de |
|
40 |
redistribution du logiciel régi par cette licence dans le cadre d'un |
|
41 |
modèle de diffusion en logiciel libre. |
|
42 |
|
|
43 |
L'exercice de ces libertés est assorti de certains devoirs à la charge |
|
44 |
des utilisateurs afin de préserver ce statut au cours des |
|
45 |
redistributions ultérieures. |
|
46 |
|
|
47 |
L'accessibilité au code source et les droits de copie, de modification |
|
48 |
et de redistribution qui en découlent ont pour contrepartie de n'offrir |
|
49 |
aux utilisateurs qu'une garantie limitée et de ne faire peser sur |
|
50 |
l'auteur du logiciel, le titulaire des droits patrimoniaux et les |
|
51 |
concédants successifs qu'une responsabilité restreinte. |
|
52 |
|
|
53 |
A cet égard l'attention de l'utilisateur est attirée sur les risques |
|
54 |
associés au chargement, à l'utilisation, à la modification et/ou au |
|
55 |
développement et à la reproduction du logiciel par l'utilisateur étant |
|
56 |
donné sa spécificité de logiciel libre, qui peut le rendre complexe à |
|
57 |
manipuler et qui le réserve donc à des développeurs ou des |
|
58 |
professionnels avertis possédant des connaissances informatiques |
|
59 |
approfondies. Les utilisateurs sont donc invités à charger et tester |
|
60 |
l'adéquation du logiciel à leurs besoins dans des conditions permettant |
|
61 |
d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus |
|
62 |
généralement, à l'utiliser et l'exploiter dans les mêmes conditions de |
|
63 |
sécurité. Ce contrat peut être reproduit et diffusé librement, sous |
|
64 |
réserve de le conserver en l'état, sans ajout ni suppression de clauses. |
|
65 |
|
|
66 |
Ce contrat est susceptible de s'appliquer à tout logiciel dont le |
|
67 |
titulaire des droits patrimoniaux décide de soumettre l'exploitation aux |
|
68 |
dispositions qu'il contient. |
|
69 |
|
|
70 |
|
|
71 |
Article 1 - DEFINITIONS |
|
72 |
|
|
73 |
Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une |
|
74 |
lettre capitale, auront la signification suivante: |
|
75 |
|
|
76 |
Contrat: désigne le présent contrat de licence, ses éventuelles versions |
|
77 |
postérieures et annexes. |
|
78 |
|
|
79 |
Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code |
|
80 |
Source et le cas échéant sa documentation, dans leur état au moment de |
|
81 |
l'acceptation du Contrat par le Licencié. |
|
82 |
|
|
83 |
Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et |
|
84 |
éventuellement de Code Objet et le cas échéant sa documentation, dans |
|
85 |
leur état au moment de leur première diffusion sous les termes du Contrat. |
|
86 |
|
|
87 |
Logiciel Modifié: désigne le Logiciel modifié par au moins une |
|
88 |
Contribution. |
|
89 |
|
|
90 |
Code Source: désigne l'ensemble des instructions et des lignes de |
|
91 |
programme du Logiciel et auquel l'accès est nécessaire en vue de |
|
92 |
modifier le Logiciel. |
|
93 |
|
|
94 |
Code Objet: désigne les fichiers binaires issus de la compilation du |
|
95 |
Code Source. |
|
96 |
|
|
97 |
Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur |
|
98 |
sur le Logiciel Initial. |
|
99 |
|
|
100 |
Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le |
|
101 |
Contrat. |
|
102 |
|
|
103 |
Contributeur: désigne le Licencié auteur d'au moins une Contribution. |
|
104 |
|
|
105 |
Concédant: désigne le Titulaire ou toute personne physique ou morale |
|
106 |
distribuant le Logiciel sous le Contrat. |
|
107 |
|
|
108 |
Contribution: désigne l'ensemble des modifications, corrections, |
|
109 |
traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans |
|
110 |
le Logiciel par tout Contributeur, ainsi que tout Module Interne. |
|
111 |
|
|
112 |
Module: désigne un ensemble de fichiers sources y compris leur |
|
113 |
documentation qui permet de réaliser des fonctionnalités ou services |
|
114 |
supplémentaires à ceux fournis par le Logiciel. |
|
115 |
|
|
116 |
Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce |
|
117 |
Module et le Logiciel s'exécutent dans des espaces d'adressage |
|
118 |
différents, l'un appelant l'autre au moment de leur exécution. |
|
119 |
|
|
120 |
Module Interne: désigne tout Module lié au Logiciel de telle sorte |
|
121 |
qu'ils s'exécutent dans le même espace d'adressage. |
|
122 |
|
|
123 |
GNU GPL: désigne la GNU General Public License dans sa version 2 ou |
|
124 |
toute version ultérieure, telle que publiée par Free Software Foundation |
|
125 |
Inc. |
|
126 |
|
|
127 |
Parties: désigne collectivement le Licencié et le Concédant. |
|
128 |
|
|
129 |
Ces termes s'entendent au singulier comme au pluriel. |
|
130 |
|
|
131 |
|
|
132 |
Article 2 - OBJET |
|
133 |
|
|
134 |
Le Contrat a pour objet la concession par le Concédant au Licencié d'une |
|
135 |
licence non exclusive, cessible et mondiale du Logiciel telle que |
|
136 |
définie ci-après à l'article 5 pour toute la durée de protection des droits |
|
137 |
portant sur ce Logiciel. |
|
138 |
|
|
139 |
|
|
140 |
Article 3 - ACCEPTATION |
|
141 |
|
|
142 |
3.1 L'acceptation par le Licencié des termes du Contrat est réputée |
|
143 |
acquise du fait du premier des faits suivants: |
|
144 |
|
|
145 |
* (i) le chargement du Logiciel par tout moyen notamment par |
|
146 |
téléchargement à partir d'un serveur distant ou par chargement à |
|
147 |
partir d'un support physique; |
|
148 |
* (ii) le premier exercice par le Licencié de l'un quelconque des |
|
149 |
droits concédés par le Contrat. |
|
150 |
|
|
151 |
3.2 Un exemplaire du Contrat, contenant notamment un avertissement |
|
152 |
relatif aux spécificités du Logiciel, à la restriction de garantie et à |
|
153 |
la limitation à un usage par des utilisateurs expérimentés a été mis à |
|
154 |
disposition du Licencié préalablement à son acceptation telle que |
|
155 |
définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris |
|
156 |
connaissance. |
|
157 |
|
|
158 |
|
|
159 |
Article 4 - ENTREE EN VIGUEUR ET DUREE |
|
160 |
|
|
161 |
|
|
162 |
4.1 ENTREE EN VIGUEUR |
|
163 |
|
|
164 |
Le Contrat entre en vigueur à la date de son acceptation par le Licencié |
|
165 |
telle que définie en 3.1. |
|
166 |
|
|
167 |
|
|
168 |
4.2 DUREE |
|
169 |
|
|
170 |
Le Contrat produira ses effets pendant toute la durée légale de |
|
171 |
protection des droits patrimoniaux portant sur le Logiciel. |
|
172 |
|
|
173 |
|
|
174 |
Article 5 - ETENDUE DES DROITS CONCEDES |
|
175 |
|
|
176 |
Le Concédant concède au Licencié, qui accepte, les droits suivants sur |
|
177 |
le Logiciel pour toutes destinations et pour la durée du Contrat dans |
|
178 |
les conditions ci-après détaillées. |
|
179 |
|
|
180 |
Par ailleurs, si le Concédant détient ou venait à détenir un ou |
|
181 |
plusieurs brevets d'invention protégeant tout ou partie des |
|
182 |
fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas |
|
183 |
opposer les éventuels droits conférés par ces brevets aux Licenciés |
|
184 |
successifs qui utiliseraient, exploiteraient ou modifieraient le |
|
185 |
Logiciel. En cas de cession de ces brevets, le Concédant s'engage à |
|
186 |
faire reprendre les obligations du présent alinéa aux cessionnaires. |
|
187 |
|
|
188 |
|
|
189 |
5.1 DROIT D'UTILISATION |
|
190 |
|
|
191 |
Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant |
|
192 |
aux domaines d'application, étant ci-après précisé que cela comporte: |
|
193 |
|
|
194 |
1. la reproduction permanente ou provisoire du Logiciel en tout ou |
|
195 |
partie par tout moyen et sous toute forme. |
|
196 |
|
|
197 |
2. le chargement, l'affichage, l'exécution, ou le stockage du |
|
198 |
Logiciel sur tout support. |
|
199 |
|
|
200 |
3. la possibilité d'en observer, d'en étudier, ou d'en tester le |
|
201 |
fonctionnement afin de déterminer les idées et principes qui sont |
|
202 |
à la base de n'importe quel élément de ce Logiciel; et ceci, |
|
203 |
lorsque le Licencié effectue toute opération de chargement, |
|
204 |
d'affichage, d'exécution, de transmission ou de stockage du |
|
205 |
Logiciel qu'il est en droit d'effectuer en vertu du Contrat. |
|
206 |
|
|
207 |
|
|
208 |
5.2 DROIT D'APPORTER DES CONTRIBUTIONS |
|
209 |
|
|
210 |
Le droit d'apporter des Contributions comporte le droit de traduire, |
|
211 |
d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel |
|
212 |
et le droit de reproduire le logiciel en résultant. |
|
213 |
|
|
214 |
Le Licencié est autorisé à apporter toute Contribution au Logiciel sous |
|
215 |
réserve de mentionner, de façon explicite, son nom en tant qu'auteur de |
|
216 |
cette Contribution et la date de création de celle-ci. |
|
217 |
|
|
218 |
|
|
219 |
5.3 DROIT DE DISTRIBUTION |
|
220 |
|
|
221 |
Le droit de distribution comporte notamment le droit de diffuser, de |
|
222 |
transmettre et de communiquer le Logiciel au public sur tout support et |
|
223 |
par tout moyen ainsi que le droit de mettre sur le marché à titre |
|
224 |
onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé. |
|
225 |
|
|
226 |
Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou |
|
227 |
non, à des tiers dans les conditions ci-après détaillées. |
|
228 |
|
|
229 |
|
|
230 |
5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION |
|
231 |
|
|
232 |
Le Licencié est autorisé à distribuer des copies conformes du Logiciel, |
|
233 |
sous forme de Code Source ou de Code Objet, à condition que cette |
|
234 |
distribution respecte les dispositions du Contrat dans leur totalité et |
|
235 |
soit accompagnée: |
|
236 |
|
|
237 |
1. d'un exemplaire du Contrat, |
|
238 |
|
|
239 |
2. d'un avertissement relatif à la restriction de garantie et de |
|
240 |
responsabilité du Concédant telle que prévue aux articles 8 |
|
241 |
et 9, |
|
242 |
|
|
243 |
et que, dans le cas où seul le Code Objet du Logiciel est redistribué, |
|
244 |
le Licencié permette aux futurs Licenciés d'accéder facilement au Code |
|
245 |
Source complet du Logiciel en indiquant les modalités d'accès, étant |
|
246 |
entendu que le coût additionnel d'acquisition du Code Source ne devra |
|
247 |
pas excéder le simple coût de transfert des données. |
|
248 |
|
|
249 |
|
|
250 |
5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE |
|
251 |
|
|
252 |
Lorsque le Licencié apporte une Contribution au Logiciel, les conditions |
|
253 |
de distribution du Logiciel Modifié en résultant sont alors soumises à |
|
254 |
l'intégralité des dispositions du Contrat. |
|
255 |
|
|
256 |
Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de |
|
257 |
code source ou de code objet, à condition que cette distribution |
|
258 |
respecte les dispositions du Contrat dans leur totalité et soit |
|
259 |
accompagnée: |
|
260 |
|
|
261 |
1. d'un exemplaire du Contrat, |
|
262 |
|
|
263 |
2. d'un avertissement relatif à la restriction de garantie et de |
|
264 |
responsabilité du Concédant telle que prévue aux articles 8 |
|
265 |
et 9, |
|
266 |
|
|
267 |
et que, dans le cas où seul le code objet du Logiciel Modifié est |
|
268 |
redistribué, le Licencié permette aux futurs Licenciés d'accéder |
|
269 |
facilement au code source complet du Logiciel Modifié en indiquant les |
|
270 |
modalités d'accès, étant entendu que le coût additionnel d'acquisition |
|
271 |
du code source ne devra pas excéder le simple coût de transfert des données. |
|
272 |
|
|
273 |
|
|
274 |
5.3.3 DISTRIBUTION DES MODULES EXTERNES |
|
275 |
|
|
276 |
Lorsque le Licencié a développé un Module Externe les conditions du |
|
277 |
Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué |
|
278 |
sous un contrat de licence différent. |
|
279 |
|
|
280 |
|
|
281 |
5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL |
|
282 |
|
|
283 |
Le Licencié peut inclure un code soumis aux dispositions d'une des |
|
284 |
versions de la licence GNU GPL dans le Logiciel modifié ou non et |
|
285 |
distribuer l'ensemble sous les conditions de la même version de la |
|
286 |
licence GNU GPL. |
|
287 |
|
|
288 |
Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis |
|
289 |
aux dispositions d'une des versions de la licence GNU GPL et distribuer |
|
290 |
l'ensemble sous les conditions de la même version de la licence GNU GPL. |
|
291 |
|
|
292 |
|
|
293 |
Article 6 - PROPRIETE INTELLECTUELLE |
|
294 |
|
|
295 |
|
|
296 |
6.1 SUR LE LOGICIEL INITIAL |
|
297 |
|
|
298 |
Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel |
|
299 |
Initial. Toute utilisation du Logiciel Initial est soumise au respect |
|
300 |
des conditions dans lesquelles le Titulaire a choisi de diffuser son |
|
301 |
oeuvre et nul autre n'a la faculté de modifier les conditions de |
|
302 |
diffusion de ce Logiciel Initial. |
|
303 |
|
|
304 |
Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi |
|
305 |
par le Contrat et ce, pour la durée visée à l'article 4.2. |
|
306 |
|
|
307 |
|
|
308 |
6.2 SUR LES CONTRIBUTIONS |
|
309 |
|
|
310 |
Le Licencié qui a développé une Contribution est titulaire sur celle-ci |
|
311 |
des droits de propriété intellectuelle dans les conditions définies par |
|
312 |
la législation applicable. |
|
313 |
|
|
314 |
|
|
315 |
6.3 SUR LES MODULES EXTERNES |
|
316 |
|
|
317 |
Le Licencié qui a développé un Module Externe est titulaire sur celui-ci |
|
318 |
des droits de propriété intellectuelle dans les conditions définies par |
|
319 |
la législation applicable et reste libre du choix du contrat régissant |
|
320 |
sa diffusion. |
|
321 |
|
|
322 |
|
|
323 |
6.4 DISPOSITIONS COMMUNES |
|
324 |
|
|
325 |
Le Licencié s'engage expressément: |
|
326 |
|
|
327 |
1. à ne pas supprimer ou modifier de quelque manière que ce soit les |
|
328 |
mentions de propriété intellectuelle apposées sur le Logiciel; |
|
329 |
|
|
330 |
2. à reproduire à l'identique lesdites mentions de propriété |
|
331 |
intellectuelle sur les copies du Logiciel modifié ou non. |
|
332 |
|
|
333 |
Le Licencié s'engage à ne pas porter atteinte, directement ou |
|
334 |
indirectement, aux droits de propriété intellectuelle du Titulaire et/ou |
|
335 |
des Contributeurs sur le Logiciel et à prendre, le cas échéant, à |
|
336 |
l'égard de son personnel toutes les mesures nécessaires pour assurer le |
|
337 |
respect des dits droits de propriété intellectuelle du Titulaire et/ou |
|
338 |
des Contributeurs. |
|
339 |
|
|
340 |
|
|
341 |
Article 7 - SERVICES ASSOCIES |
|
342 |
|
|
343 |
7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de |
|
344 |
prestations d'assistance technique ou de maintenance du Logiciel. |
|
345 |
|
|
346 |
Cependant le Concédant reste libre de proposer ce type de services. Les |
|
347 |
termes et conditions d'une telle assistance technique et/ou d'une telle |
|
348 |
maintenance seront alors déterminés dans un acte séparé. Ces actes de |
|
349 |
maintenance et/ou assistance technique n'engageront que la seule |
|
350 |
responsabilité du Concédant qui les propose. |
|
351 |
|
|
352 |
7.2 De même, tout Concédant est libre de proposer, sous sa seule |
|
353 |
responsabilité, à ses licenciés une garantie, qui n'engagera que lui, |
|
354 |
lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce, |
|
355 |
dans les conditions qu'il souhaite. Cette garantie et les modalités |
|
356 |
financières de son application feront l'objet d'un acte séparé entre le |
|
357 |
Concédant et le Licencié. |
|
358 |
|
|
359 |
|
|
360 |
Article 8 - RESPONSABILITE |
|
361 |
|
|
362 |
8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la |
|
363 |
faculté, sous réserve de prouver la faute du Concédant concerné, de |
|
364 |
solliciter la réparation du préjudice direct qu'il subirait du fait du |
|
365 |
Logiciel et dont il apportera la preuve. |
|
366 |
|
|
367 |
8.2 La responsabilité du Concédant est limitée aux engagements pris en |
|
368 |
application du Contrat et ne saurait être engagée en raison notamment: |
|
369 |
(i) des dommages dus à l'inexécution, totale ou partielle, de ses |
|
370 |
obligations par le Licencié, (ii) des dommages directs ou indirects |
|
371 |
découlant de l'utilisation ou des performances du Logiciel subis par le |
|
372 |
Licencié et (iii) plus généralement d'un quelconque dommage indirect. En |
|
373 |
particulier, les Parties conviennent expressément que tout préjudice |
|
374 |
financier ou commercial (par exemple perte de données, perte de |
|
375 |
bénéfices, perte d'exploitation, perte de clientèle ou de commandes, |
|
376 |
manque à gagner, trouble commercial quelconque) ou toute action dirigée |
|
377 |
contre le Licencié par un tiers, constitue un dommage indirect et |
|
378 |
n'ouvre pas droit à réparation par le Concédant. |
|
379 |
|
|
380 |
|
|
381 |
Article 9 - GARANTIE |
|
382 |
|
|
383 |
9.1 Le Licencié reconnaît que l'état actuel des connaissances |
|
384 |
scientifiques et techniques au moment de la mise en circulation du |
|
385 |
Logiciel ne permet pas d'en tester et d'en vérifier toutes les |
|
386 |
utilisations ni de détecter l'existence d'éventuels défauts. L'attention |
|
387 |
du Licencié a été attirée sur ce point sur les risques associés au |
|
388 |
chargement, à l'utilisation, la modification et/ou au développement et à |
|
389 |
la reproduction du Logiciel qui sont réservés à des utilisateurs avertis. |
|
390 |
|
|
391 |
Il relève de la responsabilité du Licencié de contrôler, par tous |
|
392 |
moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et |
|
393 |
de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens. |
|
394 |
|
|
395 |
9.2 Le Concédant déclare de bonne foi être en droit de concéder |
|
396 |
l'ensemble des droits attachés au Logiciel (comprenant notamment les |
|
397 |
droits visés à l'article 5). |
|
398 |
|
|
399 |
9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le |
|
400 |
Concédant sans autre garantie, expresse ou tacite, que celle prévue à |
|
401 |
l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, |
|
402 |
son caractère sécurisé, innovant ou pertinent. |
|
403 |
|
|
404 |
En particulier, le Concédant ne garantit pas que le Logiciel est exempt |
|
405 |
d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible |
|
406 |
avec l'équipement du Licencié et sa configuration logicielle ni qu'il |
|
407 |
remplira les besoins du Licencié. |
|
408 |
|
|
409 |
9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le |
|
410 |
Logiciel ne porte pas atteinte à un quelconque droit de propriété |
|
411 |
intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout |
|
412 |
autre droit de propriété. Ainsi, le Concédant exclut toute garantie au |
|
413 |
profit du Licencié contre les actions en contrefaçon qui pourraient être |
|
414 |
diligentées au titre de l'utilisation, de la modification, et de la |
|
415 |
redistribution du Logiciel. Néanmoins, si de telles actions sont |
|
416 |
exercées contre le Licencié, le Concédant lui apportera son aide |
|
417 |
technique et juridique pour sa défense. Cette aide technique et |
|
418 |
juridique est déterminée au cas par cas entre le Concédant concerné et |
|
419 |
le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage |
|
420 |
toute responsabilité quant à l'utilisation de la dénomination du |
|
421 |
Logiciel par le Licencié. Aucune garantie n'est apportée quant à |
|
422 |
l'existence de droits antérieurs sur le nom du Logiciel et sur |
|
423 |
l'existence d'une marque. |
|
424 |
|
|
425 |
|
|
426 |
Article 10 - RESILIATION |
|
427 |
|
|
428 |
10.1 En cas de manquement par le Licencié aux obligations mises à sa |
|
429 |
charge par le Contrat, le Concédant pourra résilier de plein droit le |
|
430 |
Contrat trente (30) jours après notification adressée au Licencié et |
|
431 |
restée sans effet. |
|
432 |
|
|
433 |
10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à |
|
434 |
utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les |
|
435 |
licences qu'il aura concédées antérieurement à la résiliation du Contrat |
|
436 |
resteront valides sous réserve qu'elles aient été effectuées en |
|
437 |
conformité avec le Contrat. |
|
438 |
|
|
439 |
|
|
440 |
Article 11 - DISPOSITIONS DIVERSES |
|
441 |
|
|
442 |
|
|
443 |
11.1 CAUSE EXTERIEURE |
|
444 |
|
|
445 |
Aucune des Parties ne sera responsable d'un retard ou d'une défaillance |
|
446 |
d'exécution du Contrat qui serait dû à un cas de force majeure, un cas |
|
447 |
fortuit ou une cause extérieure, telle que, notamment, le mauvais |
|
448 |
fonctionnement ou les interruptions du réseau électrique ou de |
|
449 |
télécommunication, la paralysie du réseau liée à une attaque |
|
450 |
informatique, l'intervention des autorités gouvernementales, les |
|
451 |
catastrophes naturelles, les dégâts des eaux, les tremblements de terre, |
|
452 |
le feu, les explosions, les grèves et les conflits sociaux, l'état de |
|
453 |
guerre... |
|
454 |
|
|
455 |
11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou |
|
456 |
plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du |
|
457 |
Contrat, ne pourra en aucun cas impliquer renonciation par la Partie |
|
458 |
intéressée à s'en prévaloir ultérieurement. |
|
459 |
|
|
460 |
11.3 Le Contrat annule et remplace toute convention antérieure, écrite |
|
461 |
ou orale, entre les Parties sur le même objet et constitue l'accord |
|
462 |
entier entre les Parties sur cet objet. Aucune addition ou modification |
|
463 |
aux termes du Contrat n'aura d'effet à l'égard des Parties à moins |
|
464 |
d'être faite par écrit et signée par leurs représentants dûment habilités. |
|
465 |
|
|
466 |
11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat |
|
467 |
s'avèrerait contraire à une loi ou à un texte applicable, existants ou |
|
468 |
futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les |
|
469 |
amendements nécessaires pour se conformer à cette loi ou à ce texte. |
|
470 |
Toutes les autres dispositions resteront en vigueur. De même, la |
|
471 |
nullité, pour quelque raison que ce soit, d'une des dispositions du |
|
472 |
Contrat ne saurait entraîner la nullité de l'ensemble du Contrat. |
|
473 |
|
|
474 |
|
|
475 |
11.5 LANGUE |
|
476 |
|
|
477 |
Le Contrat est rédigé en langue française et en langue anglaise, ces |
|
478 |
deux versions faisant également foi. |
|
479 |
|
|
480 |
|
|
481 |
Article 12 - NOUVELLES VERSIONS DU CONTRAT |
|
482 |
|
|
483 |
12.1 Toute personne est autorisée à copier et distribuer des copies de |
|
484 |
ce Contrat. |
|
485 |
|
|
486 |
12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé |
|
487 |
et ne peut être modifié que par les auteurs de la licence, lesquels se |
|
488 |
réservent le droit de publier périodiquement des mises à jour ou de |
|
489 |
nouvelles versions du Contrat, qui posséderont chacune un numéro |
|
490 |
distinct. Ces versions ultérieures seront susceptibles de prendre en |
|
491 |
compte de nouvelles problématiques rencontrées par les logiciels libres. |
|
492 |
|
|
493 |
12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra |
|
494 |
faire l'objet d'une diffusion ultérieure que sous la même version du |
|
495 |
Contrat ou une version postérieure, sous réserve des dispositions de |
|
496 |
l'article 5.3.4. |
|
497 |
|
|
498 |
|
|
499 |
Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE |
|
500 |
|
|
501 |
13.1 Le Contrat est régi par la loi française. Les Parties conviennent |
|
502 |
de tenter de régler à l'amiable les différends ou litiges qui |
|
503 |
viendraient à se produire par suite ou à l'occasion du Contrat. |
|
504 |
|
|
505 |
13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter |
|
506 |
de leur survenance et sauf situation relevant d'une procédure d'urgence, |
|
507 |
les différends ou litiges seront portés par la Partie la plus diligente |
|
508 |
devant les Tribunaux compétents de Paris. |
|
509 |
|
|
510 |
|
|
511 |
Version 2.0 du 2006-09-05. |
|
512 |
|
Formats disponibles : Unified diff