Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 95

Florent Torregrosa, 10/10/2013 17:19
ajout de la ligne permettant l'include dans lecontrôle du settings.php

1 1 Julien Enselme
Afin de gagner du temps et d'éviter les erreurs humaines, des scripts ont été écrits tout au long du projet. Certains sont même exécutés automatiquement toutes les semaines.
2
3 13 Florent Torregrosa
{{>toc}}
4 1 Julien Enselme
5
h1. Les tâches planifiées
6
7 26 Florent Torregrosa
h2. Crontab
8
9 3 Julien Enselme
Pour exécuter ces tâches régulièrement, on utilise le "crontab":http://fr.wikipedia.org/wiki/Crontab. Il s'agit d'un programme installé sur notre serveur.
10 1 Julien Enselme
11 3 Julien Enselme
Pour voir et modifier la liste des actions :
12
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
13
# taper la commande pour voir le crontab <code>crontab -l</code>
14 47 Julien Enselme
# taper la commande pour modifier le crontab <code>crontab -e</code>.
15 1 Julien Enselme
16 47 Julien Enselme
{{important(Ne pas effectuer cette opération avant de s'être renseigné sur "vi":http://fr.wikipedia.org/wiki/Vi (l'éditeur de texte utilisé qui n'est pas vraiment intuitif :p) et sur "la syntaxe du crontab":http://fr.wikipedia.org/wiki/Crontab#Modification !
17
Les scripts doivent si possible s’exécuter avant le club Drupal pour que les problèmes éventuels y soient réglés)}}
18
19 69 Julien Enselme
{{tip(
20
* Pour utiliser un autre éditeur que vi taper : export EDITOR=editor_name exemple : vim, nano.
21 74 Florent Torregrosa
)}}
22
23
{{important(
24
* d7-all-update-contrib.sh fait des sauvegardes automatiques individuelles pour les sites Drupal 7 en faisant appel à d7-all-dump-indiviual.sh auto
25
* C'est pour cela que d7-all-dump-individual.sh auto n'est pas appelé dans le crontab.
26
)}}
27 26 Florent Torregrosa
28
<pre>
29
<code class="php">
30 42 Florent Torregrosa
######## How to use
31
# mm hh jj MMM JJJ task
32
# minutes hour day_month month day_week
33
# for more informations : https://fr.wikipedia.org/wiki/Crontab#Notation
34
######## End how to
35
36 1 Julien Enselme
37
### Cleaning
38 91 Julien Enselme
00 5 * * * /users/guest/assos/bin/all-reset-permissions.sh > /dev/null
39
00 6 * * * /users/guest/assos/bin/delete-temporary-files.sh > /dev/null
40 1 Julien Enselme
41
42 67 Julien Enselme
### Traqu-heure
43 91 Julien Enselme
00 7 * * * /users/guest/assos/bin/traqu_heure/script-restitution.sh > /dev/null
44
0 * * * *  /users/guest/assos/bin/traqu_heure/script-traque.sh > /dev/null
45 1 Julien Enselme
46
47 91 Julien Enselme
### Drupal 7 cron
48 93 Julien Enselme
00 * * * * /users/guest/assos/bin/d7-all-drush.sh -q cron > /dev/null
49 91 Julien Enselme
50
51 68 Florent Torregrosa
### Databases
52 43 Florent Torregrosa
# Create backup
53 91 Julien Enselme
00 8 1,15 * * /users/guest/assos/bin/d7-all-dump-full.sh > /dev/null
54
00 1 * * 2    /users/guest/assos/bin/d6-all-dump-full.sh > /dev/null
55 67 Julien Enselme
56 68 Florent Torregrosa
# flush backup
57 91 Julien Enselme
00 8 2,16 * * /users/guest/assos/bin/flush-full-databases-backups.sh d7 > /dev/null
58
00 22 * * 2   /users/guest/assos/bin/flush-full-databases-backups.sh d6 > /dev/null
59
00 23 * * 2   /users/guest/assos/bin/flush-individual-databases-backups.sh auto d7 > /dev/null
60
00 1 * * 3    /users/guest/assos/bin/flush-individual-databases-backups.sh manual d7 > /dev/null
61 1 Julien Enselme
62
63 68 Florent Torregrosa
### Drupal 7
64 91 Julien Enselme
00 3 * * 4  /users/guest/assos/bin/d7-all-reset-variables.sh > /dev/null
65 42 Florent Torregrosa
00 22 * * 3 /users/guest/assos/bin/d7-all-update-contrib.sh | mail -s "d7-all-update-contrib.sh" assos
66 67 Julien Enselme
00 1 * * 4  /users/guest/assos/bin/d7-all-update-localisation.sh | mail -s "d7-all-update-localisation.sh" assos
67 43 Florent Torregrosa
00 2 * * 4  /users/guest/assos/bin/d7-all-security-review.sh
68 67 Julien Enselme
00 4 * * 4  /users/guest/assos/bin/d7-all-releases-info.sh | mail -s "d7-all-releases-info.sh" assos
69 42 Florent Torregrosa
70 43 Florent Torregrosa
71 67 Julien Enselme
### Drupal 6
72 91 Julien Enselme
00 22 * * 6 /users/guest/assos/bin/d6-all-update-contrib.sh > /dev/null
73
00 23 * * 6 /users/guest/assos/bin/d6-all-reset-variables.sh > /dev/null
74 68 Florent Torregrosa
75
# Launch drush cron on fellowings
76 91 Julien Enselme
45 17 * * *  /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.ginfo > /dev/null
77
*/15 * * * * /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.clubfinance > /dev/null
78
45 3 * * *   /users/guest/assos/bin/drushcronone default > /dev/null
79
35 00 * * *  /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.cac13 > /dev/null
80
*/45 * * * * /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.expat > /dev/null
81
*/10 * * * * /users/guest/assos/bin/drushcronone forum.centrale-marseille.fr > /dev/null
82 1 Julien Enselme
83 67 Julien Enselme
00 22 * * 7 /users/guest/assos/bin/disk-usage.sh | mail -s "disk-usage.sh" assos 
84 3 Julien Enselme
</code>
85 83 Julien Enselme
</pre>
86
87 25 Florent Torregrosa
La liste des tâches effectuées régulièrement est ci-dessous.
88
89 1 Julien Enselme
{{important(Lors de l’import d’un script de configuration comme _scripts-config.sh_ sont chemin doit être donné de façon absolue. Sinon le crontab ne trouvera pas le script !)}}
90
91 25 Florent Torregrosa
h2. La réinitialisation des variables
92 1 Julien Enselme
93
Cette tâche consiste à réinitialiser certaines variables qui donnent des droits considérés comme trop permissifs donc dangereux aux administrateurs des sites ou nécessaire pour d'autres scripts tels que piwik ou security_review.
94
95 25 Florent Torregrosa
En voici quelques exemples :
96
97 1 Julien Enselme
<pre>
98 21 Florent Torregrosa
<code class="bash">
99 25 Florent Torregrosa
drush -y vset error_level 0
100
</code>
101 3 Julien Enselme
</pre>
102 1 Julien Enselme
103
Cette commande permet de ne pas afficher les messages d'erreurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulgués à n'importe qui.
104 25 Florent Torregrosa
105 1 Julien Enselme
<pre>
106 3 Julien Enselme
<code class="php">
107 1 Julien Enselme
drush -y vset --always-set reverse_proxy TRUE
108 70 Julien Enselme
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
109 1 Julien Enselme
</code>
110 6 Julien Enselme
</pre>
111 1 Julien Enselme
112 3 Julien Enselme
Ces commandes permettent de déclarer à Drupal les serveurs proxy du CRI afin d'éviter qu'il ne répertorie tous les visiteurs comme ayant l'adresse des serveurs sus-cités. **Pas fini : voir http://assos.centrale-marseille.fr/lessive/content/t%C3%A2che/rendre-les-settingsphp-conformes-%C3%A0-la-version-712-de-drupal**
113 1 Julien Enselme
114 73 Julien Enselme
h2. La sauvegarde des bases de données
115
116
Sur les installations d6 et d7 : une fois par semaine
117
118
On utilise les scripts de sauvegardes :
119
120 1 Julien Enselme
* [[Scripts_et_taches_planifiees#d6-all-dump-fullsh|d6-all-dump-full.sh]]
121 72 Julien Enselme
* [[Scripts_et_taches_planifiees#d6-dump-individualsh|d6-dump-individual.sh]]
122 1 Julien Enselme
* [[Scripts_et_taches_planifiees#d7-all-dump-fullsh|d7-all-dump-full.sh]]
123
* [[Scripts_et_taches_planifiees#d7-all-dump-individualsh|d7-all-dump-individual.sh]].
124
125 72 Julien Enselme
h2. La purge des sauvegardes de bases de données
126 1 Julien Enselme
127
Sur les installations d6 et d7 : toutes les semaines
128 21 Florent Torregrosa
129 75 Julien Enselme
Cette tâche utilise les scripts de purges des sauvegardes ([[Scripts_et_taches_planifiees#flush-full-databases-backupssh|flush-full-databases-backups.sh]] et [[Scripts_et_taches_planifiees#flush-individual-databases-backupssh|flush-individual-databases-backups.sh]]) afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles.
130
131
h1. Liste des scripts à disposition
132 21 Florent Torregrosa
133 78 Julien Enselme
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos. Ce dossier est dans le PATH l'utilisateur assos ce qui permet d'utiliser les scripts comme les commandes ususelles du shell. Les script doivent exécutales pour fonctionner ainsi. Le script @all-reset-permissions.sh@ remet les bonnes permissions sur ce dossier.
134
135 82 Julien Enselme
Le PATH est par sécurité entièrement récrit dans @scripts-config.sh@ (on est certain que les commandes seront trouvées même si on ne les appelle pas avec leur chemin absolu). Le PATH contient alors les chemins vers les dossiers contenant les exécutales du système ainsi que les dossiers bin de assos.
136
137 53 Julien Enselme
La plupart des scripts ont besoin d’importer un des scripts de configuration. L’import se fait grâce à la commande @. SCRIPT@. Ces scripts doivent être importés explicitement. On réalise un test en début de script. Ce test permet de savoir si le script importé a besoin de l’import d’un autre script. Si ce n’est pas le cas, on affiche un message d’avertissement et on arrête l’exécution.
138 1 Julien Enselme
139 85 Julien Enselme
Les scripts nécessitant un argument contiennent une ligne commençant par ARGS détaillant la liste des arguments nécessaires à l’exécution du script. Les arguments entre crochets sont facultatifs. Si vous lancez un tel script sans argument, il affichera un message d’aide donnant la liste des arguments.
140 53 Julien Enselme
141 76 Julien Enselme
h2. Configuration et utilitaires
142
143 53 Julien Enselme
h3. scripts-config.sh
144
145
Ce script contient toutes les variables indispensables à l’exécution des autres scripts (adresse du serveur de la base de données, emplacement des sauvegardes,…). Ce script a été créé de façon a pouvoir rendre les scripts les plus indépendants possible de la configuration actuelle et de façon à pouvoir la modifier facilement sans avoir à réécrire les scripts et à les vérifier. *Ces variables doivent donc être utilisées dans les scripts.*
146
147
<pre>
148
<code class="php">
149
#!/bin/sh
150
151
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/users/guest/assos/bin
152
PATH=$PATH:/usr/guest/assos/bin
153
154
scripts_config='imported'
155
156
email_multi_assos="assos@centrale-marseille.fr"
157
158
dir_multi_assos='/users/guest/assos'
159
dir_scripts="$dir_multi_assos/bin"
160
dir_template="$dir_multi_assos/template"
161
162
###### Database
163
db_server="myassos.serv.int"
164
db_user="assos"
165 63 Julien Enselme
dir_log="$dir_multi_assos/log"
166 53 Julien Enselme
167
###### Backup
168
db_full_backup_number=3
169
db_individual_manual_backup_number=2
170
db_individual_auto_backup_number=3
171 1 Julien Enselme
172
dir_backup="$dir_multi_assos/backup"
173
dir_full_backup="$dir_backup/full"
174
dir_individual_backup="$dir_backup/individual"
175
dir_individual_manual_backup="$dir_individual_backup/manual"
176
dir_individual_auto_backup="$dir_individual_backup/auto"
177
178
179
###### D7 variables
180
d7_dir="$dir_multi_assos/htmltest"
181
d7_dir_sites="$d7_dir/sites"
182
183
### Log
184
d7_dir_log="$dir_log/d7"
185
186
### Backup
187
d7_dir_full_backup="$dir_full_backup/d7"
188 87 Julien Enselme
d7_dir_individual_manual_backup="$dir_individual_manual_backup/d7"
189
d7_dir_individual_auto_backup="$dir_individual_auto_backup/d7"
190
191 88 Julien Enselme
### Template
192 1 Julien Enselme
d7_settings_name="d7-settings.php"
193
d7_settings_local_template_name="d7-settings-local-template.php"
194
d7_settings="$dir_template/$d7_settings_name"
195
d7_settings_local_template="$dir_template/$d7_settings_local_template_name"
196
197
198
###### D6 variables
199
d6_dir="$dir_multi_assos/html"
200
d6_dir_sites="$d6_dir/sites"
201
202 64 Julien Enselme
### Backup
203
d6_dir_full_backup="$dir_full_backup/d6"
204
d6_dir_individual_manual_backup="$dir_individual_manual_backup/d6"
205
d6_dir_individual_auto_backup="$dir_individual_auto_backup/d6"
206
</code>
207 77 Julien Enselme
</pre>
208
209
h3. scripts-config-site.sh
210
211 64 Julien Enselme
Ce script est complémentaire du précédent. Il permet d’initialiser les variables spécifiques à un site. Il prend le nom du site en question comme argument. *Il doit être utilisé pour les mêmes raisons que le précédent*.
212
213
La commande @check_arguments@ n’est pas utilisée afin de ne pas avoir à importer @scripts-utils.sh@ et ainsi éviter des imports multiples.
214
215
<pre>
216
<code class="php">
217
#!/bin/sh
218
219
# Sets useful variables of a site.
220
# ARGS: site_name
221
# Requires scripts-config.sh
222
223
# Check if scripts-config.sh is imported.
224
if [ -z $scripts_config ] ; then
225
    echo "Import of scripts-config.sh required."
226
    exit 1
227
fi
228
229
if [ -z $1 ] ; then
230
    echo "This script needs a site name as argument."
231
    exit 1
232
fi
233 1 Julien Enselme
234 64 Julien Enselme
scripts_config_site='imported'
235 87 Julien Enselme
236 53 Julien Enselme
d7_site_name=$1
237
d7_site_dir="$d7_dir_sites/assos.centrale-marseille.fr.$d7_site_name"
238
d7_site_settings="$d7_site_dir/settings.php"
239
d7_site_settings_local="$d7_site_dir/settings.local.php"
240
</code>
241 79 Julien Enselme
</pre>
242
243 53 Julien Enselme
h3. scripts-utils.sh
244
245
Ce script propose des commandes utiles qui peuvent être utilisées dans divers script. Il a été écrit afin de factoriser au maximum le code.
246
247
<pre>
248
<code class="php">
249 1 Julien Enselme
#!/bin/sh
250 53 Julien Enselme
251
# This script contains useful functions for other scripts.
252 87 Julien Enselme
253 53 Julien Enselme
# Check if scripts-config.sh is imported.
254
if [ -z $scripts_config ] ; then
255
    echo "Import of scripts-config.sh required."
256
    . scripts-config.sh
257
fi
258
259
scripts_utils='imported'
260
261
ask_password() {
262
    # read -s doesn't work with sh.
263
    # usage: pass=`ask_password "password please:"`
264
    echo $1 >&2
265
    echo -n ">" >&2
266
    stty_avant=`stty -g`
267
    stty -echo
268
    read password
269
    stty $stty_avant
270
    echo "$password"
271
    unset password
272
}
273
274
ask_password_db() {
275
    # ARGS: server_name, user_name
276
    local db_password="pour_boucler"
277
    # empty db request to validate password
278
    while ! mysql -h $1 -u $2 -p$db_password -e "" 2>/dev/null ; do
279
        db_password=`ask_password "database password:"`
280
    done
281
    echo $db_password
282
}
283
284
generate_password(){
285
    # ARGS: [password_length]
286
    # The password contains special characters. '/' must be excluded to avoid sed malfunction.
287
288
    local site_password='/'
289
290
    if [ -z $1 ] ; then
291
        local password_length=20
292
    else
293
        local password_length=$1
294
    fi
295
296
    while echo "$site_password" | grep -Fq '/' ; do
297
        site_password=`dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-$password_length`
298
    done
299
300
    echo $site_password
301
}
302
303 1 Julien Enselme
count_d7_sites(){
304 65 Julien Enselme
    find $d7_dir_sites -type d ! -name all -maxdepth 1 | wc -l
305 53 Julien Enselme
}
306 1 Julien Enselme
307 87 Julien Enselme
check_arguments() {
308 1 Julien Enselme
    # ARGS: number of arguments passed to script, number of arguments required, [help text]
309
    if [ $1 -lt $2  ] ; then
310
        echo "Number of arguments insuffisant."
311 87 Julien Enselme
	echo -e $3
312
        exit 1
313
    fi
314
}
315
316
generate_settings_local() {
317
    # ARGS: site_name, site_password, d7_settings_local_template, d7_site_settings_local
318
    sed "s/\%\%DBUSER\%\%/$1/ ; s/\%\%DBNAME\%\%/$1/ ; s/\%\%DBPASS\%\%/$2/ ; s/\%\%SITE_NAME\%\%/$1/" < $3 > $4
319
}
320
321
give_dir(){
322
    # ARG: file
323 53 Julien Enselme
    # Return the abosulte directory path of a file or a dir.
324
    settings_location=`realpath $1`
325
    echo `dirname $settings_location`
326
}
327
</code>
328
</pre>
329
330
h2. Scripts généraux
331
332
h3. all-reset-permissions.sh
333
334 84 Julien Enselme
<pre>
335 21 Florent Torregrosa
<code class="php">
336
#!/bin/sh
337
338
. /users/guest/assos/bin/scripts-config.sh
339
340
# This script puts the correct permissions to sites folders, settings.php and scripts.
341
342 35 Florent Torregrosa
######### drupal 6
343
for dir in `find $d6_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all ! -name images ! -name languages` ; do
344 1 Julien Enselme
    chmod 755 $dir
345 35 Florent Torregrosa
    chmod 400 $dir/settings.php
346
done
347
348 87 Julien Enselme
######### drupal 7
349 21 Florent Torregrosa
for dir in `find $d7_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all` ; do
350
    chmod 755 $dir
351 1 Julien Enselme
    chmod 400 $dir/settings.php
352 21 Florent Torregrosa
    chmod 400 $dir/settings.local.php
353
done
354
355
####### bin
356
chmod -R 700 $dir_scripts
357
358
####### backup
359
chmod -R 700 $dir_backup
360 1 Julien Enselme
361 21 Florent Torregrosa
####### log
362 53 Julien Enselme
chmod -R 700 $dir_log
363 29 Florent Torregrosa
</code>
364 21 Florent Torregrosa
</pre>
365
366
h3. contrib-usage.sh
367
368 84 Julien Enselme
<pre>
369 21 Florent Torregrosa
<code class="php">
370
#!/bin/sh
371 66 Julien Enselme
372
. /users/guest/assos/bin/scripts-config.sh
373
. scripts-utils.sh
374 21 Florent Torregrosa
375 66 Julien Enselme
help="# ARGS: Drupal_version, project_status, project_name\n
376 21 Florent Torregrosa
# List sites that have the project_name with the corresponding project_status.\n
377
# project status: enabled or disabled"
378
379
check_arguments $# 3 "$help"
380
381
if [ $1 = d6 ] ; then
382 29 Florent Torregrosa
    cd $d6_dir_sites
383 21 Florent Torregrosa
else
384
    cd $d7_dir_sites
385
fi
386
387 1 Julien Enselme
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images | sort ` ; do
388 21 Florent Torregrosa
    # List non-core projects that correspond to the status.
389
    # Keep project_name if listed.
390
    # Count line result. 0 if not listed or 1 if listed.
391
	# Print site_dir if listed.
392
393
    cd $dir;
394
	if [ 1 -eq `drush pml --no-core --status=$2 | grep $3 | wc -l` ] ; then
395 1 Julien Enselme
        echo $dir; 
396 21 Florent Torregrosa
    fi
397
    cd -
398 53 Julien Enselme
done
399 21 Florent Torregrosa
</code>
400 41 Florent Torregrosa
</pre>
401 21 Florent Torregrosa
402 1 Julien Enselme
h3. delete-temporary-files.sh
403
404 84 Julien Enselme
<pre>
405 53 Julien Enselme
<code class="php">
406
#!/bin/sh
407
408
. /users/guest/assos/bin/scripts-config.sh
409
410
find $dir_multi_assos -name '*~' -delete
411
</code>
412
</pre>
413
414
h3. disk-usage.sh
415
416 84 Julien Enselme
<pre>
417 53 Julien Enselme
<code class="php">
418
#!/bin/sh
419
420
. /users/guest/assos/bin/scripts-config.sh
421
422
echo -e "Quotas: 9.1 GB\n"
423
424
echo "Assos:"
425
du -hcs $dir_multi_assos | grep total
426
echo -e "\n"
427
428
echo "D6:"
429
cd $d6_dir_sites
430
du -h -d 1
431
echo -e "\n"
432
433
echo "D7:"
434
cd $d7_dir_sites
435
du -h -d 1
436
echo -e "\n"
437
438
echo "Logs:"
439
du -hcs $dir_log | grep total
440
echo -e "\n"
441
442
echo "Backups:"
443
cd $dir_backup
444
du -h -d 2
445
</code>
446 81 Julien Enselme
</pre>
447
448 53 Julien Enselme
h3. flush-files.sh
449
450
Ce script se contente d’afficher un warning si scripts-utils.sh afin de pouvoir l’utiliser directement depuis le terminal.
451
452 66 Julien Enselme
<pre>
453 53 Julien Enselme
<code class="php">
454 1 Julien Enselme
#!/bin/sh
455 81 Julien Enselme
456 53 Julien Enselme
help="# ARGS: number of files to keep, [email address]\n
457
# usage: flush files from a folder except a number equal to argument."
458 57 Julien Enselme
459 53 Julien Enselme
# Check if scripts-utils.sh is imported.
460
if [ -z $scripts_utils ] ; then
461 66 Julien Enselme
    echo "Import of scripts-utils.sh required."
462 53 Julien Enselme
    . scripts-utils.sh
463
fi
464 60 Julien Enselme
465 53 Julien Enselme
check_arguments $# 1 "$help"
466 1 Julien Enselme
467
backups_number=`ls | wc -l`
468 53 Julien Enselme
let "number_of_backups_to_delete = backups_number - $1" > /dev/null
469 60 Julien Enselme
470
if [ $number_of_backups_to_delete -gt 0 ] ; then
471
    ls | head -$number_of_backups_to_delete | xargs rm
472
else
473 53 Julien Enselme
    if [ ! -z $2 ] ; then
474
        dir=`pwd`
475
        echo "There are not enough files in $dir to Flush it. Check if backup script works fine." | mail -s "[db] $dir has a backup problem" $2
476
    fi
477
fi
478
</code>
479
</pre>
480
481
h3. flush-full-databases-backups.sh
482
483 84 Julien Enselme
<pre>
484 53 Julien Enselme
<code class="php">
485
#!/bin/sh
486
487
. /users/guest/assos/bin/scripts-config.sh
488
489
# ARGS: Drupal version
490
491
cd $dir_full_backup/$1
492
493
for dir in `ls` ; do
494
    cd $dir
495
    flush-files.sh $db_full_backup_number $email_multi_assos
496
    cd -
497
done
498
</code>
499
</pre>
500
501
h3. flush-individual-databases-backups.sh
502
503 84 Julien Enselme
<pre>
504 1 Julien Enselme
<code class="php">
505
#!/bin/sh
506
507
. /users/guest/assos/bin/scripts-config.sh
508
509
# ARGS: manual or auto, Drupal version
510
511
cd $dir_individual_backup/$1/$2
512
513
for dir in `ls` ; do
514
    cd $dir
515
    if [ $1 = 'auto' ] ; then
516
        flush-files.sh $db_individual_auto_backup_number $email_multi_assos
517
    else
518
        flush-files.sh $db_individual_manual_backup_number
519
    fi
520
    cd -
521
done
522 80 Julien Enselme
</code>
523
</pre>
524
525
h2. Scripts Drupal 6
526
527
h3. drushcronone
528
529
Ce script permet de lancer les tâches planifiées sur un site Drupal 6. En effet, sous Drupal 6 les webmasters ne peuvent choisir via l’interface d’administration de Drupal.
530
531 84 Julien Enselme
<pre>
532 80 Julien Enselme
<code class="php">
533
#!/bin/sh
534
535
. /users/guest/assos/bin/scripts-config.sh
536
537
if [ $# -lt 1 ]; then
538
  echo "usage: $0 <site's folder name>"
539
  exit 1
540
fi
541
542
cd "$d6_sites_dir/$*"
543 53 Julien Enselme
pwd;
544
drush cron;
545
</code>
546
</pre>
547
548
h3. d6-all-drush.sh
549
550 84 Julien Enselme
<pre>
551 21 Florent Torregrosa
<code class="php">
552
#!/bin/sh
553 66 Julien Enselme
554 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
555 66 Julien Enselme
. scripts-utils.sh
556 21 Florent Torregrosa
557
help="# ARGS: drush_command"
558
559
check_arguments $# 1 "$help"
560
561 1 Julien Enselme
for dir in `find $d6_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images | sort` ; do
562 21 Florent Torregrosa
    cd $dir
563 45 Florent Torregrosa
    echo $dir
564 21 Florent Torregrosa
    drush $*
565 53 Julien Enselme
done
566 45 Florent Torregrosa
</code>
567 37 Florent Torregrosa
</pre>
568
569
h3. d6-all-dump-full.sh
570
571 84 Julien Enselme
<pre>
572 37 Florent Torregrosa
<code class="php">
573
#!/bin/sh
574
575
. /users/guest/assos/bin/scripts-config.sh
576
577 41 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
578 1 Julien Enselme
579 37 Florent Torregrosa
# Dump D6 database with webassos user.
580
mysqldump --single-transaction webassos -h myweb.serv.int -u webassos --password=password > $d6_dir_full_backup/webassos/$current_date.webassos.sql
581 21 Florent Torregrosa
</code>
582
</pre>
583
584
h3. d6-all-reset-variables.sh
585
586 84 Julien Enselme
<pre>
587 21 Florent Torregrosa
<code class="php">
588
#!/bin/sh
589 1 Julien Enselme
590 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
591
592
cd $d6_dir_sites
593
d6-all-drush.sh vset --always-set reverse_proxy TRUE
594
d6-all-drush.sh vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
595 53 Julien Enselme
drush @sites -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
596 21 Florent Torregrosa
</code>
597
</pre>
598
599
h3. d6-all-update-contrib.sh
600
601 84 Julien Enselme
<pre>
602 21 Florent Torregrosa
<code class="php">
603
#!/bin/sh
604 1 Julien Enselme
605 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
606
607
d6-all-drush.sh -y en update
608
# Launch cron to check for updates.
609
d6-all-drush.sh -q cron
610
611 1 Julien Enselme
d6-all-drush.sh cc all
612
d6-all-dump-full.sh
613
614
d6-all-drush.sh -y upc --no-core
615
d6-all-drush.sh -y updb
616
617
d6-all-drush.sh -y dis update
618 41 Florent Torregrosa
619 53 Julien Enselme
d6-all-drush.sh cron
620 41 Florent Torregrosa
</code>
621
</pre>
622
623
h3. d6-dump-individual.sh
624
625 84 Julien Enselme
<pre>
626 21 Florent Torregrosa
<code class="php">
627
#!/bin/sh
628
629
. /users/guest/assos/bin/scripts-config.sh
630
631 1 Julien Enselme
# ARGS: auto or manual, site_prefix
632
# WARNING : backup are regularly flushed, put your backup in a safe place.
633
634 84 Julien Enselme
cd $dir_individual_backup
635 21 Florent Torregrosa
636 1 Julien Enselme
#!/bin/sh
637 21 Florent Torregrosa
638
. /users/guest/assos/bin/scripts-config.sh
639
640
# ARGS: auto or manual, site_prefix
641 41 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
642
643
cd $dir_individual_backup
644
645 21 Florent Torregrosa
#récupération des tables du site dans le fichier liste_tables.temp
646
tables='_%'
647
liste="$1$tables"
648
649
mysql -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY -BNe "show tables like '"$liste"'" webassos | tr '\r\n' ' ' > liste_tables.temp
650 1 Julien Enselme
651 21 Florent Torregrosa
#transformation de cette liste en une variable
652
var=$(cat liste_tables.temp)
653
654
#sauvegarde de toutes ces tables
655 1 Julien Enselme
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
656 21 Florent Torregrosa
suffixe="_dump$current_date.sql"
657
fichier="$1$suffixe"
658 1 Julien Enselme
659 21 Florent Torregrosa
if [ $1 = 'auto' ] ; then
660 1 Julien Enselme
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_auto_backup/$fichier
661
else
662 21 Florent Torregrosa
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_manual_backup/$fichier
663
fi
664
665
#suppression du fichier temporaire utilisé
666 53 Julien Enselme
rm liste_tables.temp
667 30 Florent Torregrosa
</code>
668 53 Julien Enselme
</pre>
669
670 1 Julien Enselme
h2. Scripts Drupal 7
671 30 Florent Torregrosa
672
h3. d7-all-drush-logged.sh
673
674 84 Julien Enselme
<pre>
675 30 Florent Torregrosa
<code class="php">
676
#!/bin/sh
677 66 Julien Enselme
678 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
679 66 Julien Enselme
. scripts-utils.sh
680 1 Julien Enselme
681 21 Florent Torregrosa
help="# ARGS: drush_command"
682 1 Julien Enselme
683 21 Florent Torregrosa
check_arguments $# 1 "$help"
684
685
cd $d7_dir_sites
686
687 1 Julien Enselme
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
688 21 Florent Torregrosa
    cd $dir
689
    current_date=`date "+%Y-%m-%d_%Hh:%Mm"`
690
    echo "======$current_date======" >> $d7_dir_log/$dir.log
691
    echo "Arguments are: $* " >> $d7_dir_log/$dir.log
692
    drush $* >> $d7_dir_log/$dir.log
693
    #To have the same caracters limit we needed 'end' that have 4 caracters, we used the Croate language for this ! LOL 
694
    echo -e "=============KRAJ=============\n" >> $d7_dir_log/$dir.log
695 41 Florent Torregrosa
    cd -
696 53 Julien Enselme
done
697 21 Florent Torregrosa
</code>
698
</pre>
699
700
h3. d7-all-drush.sh
701
702 84 Julien Enselme
<pre>
703 1 Julien Enselme
<code class="php">
704 21 Florent Torregrosa
#!/bin/sh
705 66 Julien Enselme
706 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
707 66 Julien Enselme
. scripts-utils.sh
708 21 Florent Torregrosa
709
help="# ARGS: drush_command"
710
711
check_arguments $# 1 "$help"
712
713
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
714
    cd $dir
715
    echo $dir
716
    drush $*
717 53 Julien Enselme
done
718 21 Florent Torregrosa
</code>
719 45 Florent Torregrosa
</pre>
720 21 Florent Torregrosa
721 1 Julien Enselme
h3. d7-all-dump-full.sh
722 21 Florent Torregrosa
723 84 Julien Enselme
<pre>
724 21 Florent Torregrosa
<code class="php">
725
#!/bin/sh
726
727
. /users/guest/assos/bin/scripts-config.sh
728
729 41 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
730
731
# Dump D7 databases at once.
732 53 Julien Enselme
mysqldump -h $db_server -u $db_user -ppassword --all-databases > $d7_dir_full_backup/myassos/$current_date.d7_full.sql
733 21 Florent Torregrosa
</code>
734
</pre>
735 41 Florent Torregrosa
736
h3. d7-all-dump-individual.sh
737
738 84 Julien Enselme
<pre>
739 62 Julien Enselme
<code class="php">
740 21 Florent Torregrosa
#!/bin/sh
741 66 Julien Enselme
742 1 Julien Enselme
. /users/guest/assos/bin/scripts-config.sh
743 66 Julien Enselme
. scripts-utils.sh
744 21 Florent Torregrosa
745
help="# ARGS: auto or manual"
746
747
check_arguments $# 1 "$help"
748
749
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
750 1 Julien Enselme
751 21 Florent Torregrosa
cd $d7_dir_sites
752
753
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | cut -c3-` ; do
754
    cd $dir
755 1 Julien Enselme
    drush cc all
756 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
757
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
758
    else
759
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
760
    fi
761
    cd -
762 53 Julien Enselme
done
763 21 Florent Torregrosa
</code>
764
</pre>
765
766
h3. d7-all-releases-info.sh
767 1 Julien Enselme
768 84 Julien Enselme
<pre>
769 1 Julien Enselme
<code class="php">
770
#!/bin/sh
771
772
. /users/guest/assos/bin/scripts-config.sh
773
774
# List version of a module or theme that exists in sites/all/*
775
# and all versions that are available for same project on drupal.org
776
777
# modules
778
cd $d7_dir_sites/all/modules
779
for dir in `ls -1` ; do
780
    if [ -d $dir ] ; then
781
        drush pm-releases $dir
782
    fi
783
done
784
785
# themes
786
cd $d7_dir_sites/all/themes
787 21 Florent Torregrosa
for dir in `ls -1` ; do
788
    if [ -d $dir ] ; then
789
        drush pm-releases $dir
790 41 Florent Torregrosa
    fi
791 53 Julien Enselme
done
792 41 Florent Torregrosa
</code>
793 1 Julien Enselme
</pre>
794 41 Florent Torregrosa
795
h3. d7-all-reset-variables.sh
796
797 84 Julien Enselme
<pre>
798 41 Florent Torregrosa
<code class="php">
799
#!/bin/sh
800
801
. /users/guest/assos/bin/scripts-config.sh
802
803
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
804
    cd $dir
805 1 Julien Enselme
    echo $dir
806 41 Florent Torregrosa
    d7-reset-variables.sh
807 53 Julien Enselme
done
808 41 Florent Torregrosa
</code>
809
</pre>
810
811 1 Julien Enselme
h3. d7-all-security-review.sh
812 21 Florent Torregrosa
813 84 Julien Enselme
<pre>
814 21 Florent Torregrosa
<code class="php">
815
#!/bin/sh
816 59 Florent Torregrosa
817 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config.sh
818
819
# grep -v success to keep site_name and error lines.
820 53 Julien Enselme
bash -c "d7-all-drush.sh security-review --store |& grep -v success | mail -s d7-all-security-review.sh $email_multi_assos"
821 21 Florent Torregrosa
</code>
822
</pre>
823
824
h3. d7-all-update-contrib.sh
825
826 84 Julien Enselme
<pre>
827 1 Julien Enselme
<code class="php">
828 21 Florent Torregrosa
#!/bin/sh
829
830
. /users/guest/assos/bin/scripts-config.sh
831
832
d7-all-drush.sh -y en update
833
# Launch cron to check for updates.
834 1 Julien Enselme
d7-all-drush.sh -q cron
835 21 Florent Torregrosa
836
d7-all-dump-individual.sh auto
837
838
d7-all-drush-logged.sh -y upc --no-core
839 90 Florent Torregrosa
d7-all-drush.sh -y updb
840
841 21 Florent Torregrosa
d7-all-drush.sh -y dis update
842
843 1 Julien Enselme
d7-all-drush.sh cc all
844 21 Florent Torregrosa
845 53 Julien Enselme
d7-all-drush.sh cron
846 21 Florent Torregrosa
</code>
847
</pre>
848
849 84 Julien Enselme
h3. d7-all-update-localisation.sh
850 21 Florent Torregrosa
851
<pre>
852
<code class="php">
853
#!/bin/sh
854
855
. /users/guest/assos/bin/scripts-config.sh
856
857 41 Florent Torregrosa
d7-all-drush.sh -y en l10n_update
858 53 Julien Enselme
d7-all-drush.sh l10n-update-refresh
859 1 Julien Enselme
d7-all-drush.sh l10n-update
860 21 Florent Torregrosa
d7-all-drush.sh -y dis l10n_update
861 1 Julien Enselme
</code>
862
</pre>
863 21 Florent Torregrosa
864
h3. d7-create-site.sh
865 1 Julien Enselme
866 84 Julien Enselme
<pre>
867 87 Julien Enselme
<code class="php">
868
#!/bin/sh
869 21 Florent Torregrosa
870 66 Julien Enselme
. /users/guest/assos/bin/scripts-config.sh
871 21 Florent Torregrosa
. /users/guest/assos/bin/scripts-config-site.sh $1
872
. /users/guest/assos/bin/scripts-utils.sh
873 66 Julien Enselme
874 21 Florent Torregrosa
help="# ARGS: site name"
875
876
######## Exceptions
877
check_arguments $# 1 "$help"
878
879
# "-" is forbidden because it provokes database error.
880
if [ `echo $1 | grep -` ] ; then
881
    echo '"-" is forbidden in the site name'
882
    exit 1
883 41 Florent Torregrosa
fi
884 21 Florent Torregrosa
885
# Site name length must be lower or equal to 16 due to database limitations.
886
if [`echo $1 | wc -c` -gt 16 ] ; then
887 1 Julien Enselme
    echo "site name can't have more than 16 characters"
888 21 Florent Torregrosa
    exit 1
889
fi
890
891
###### Initialisation
892
cd $d7_dir
893
db_password=`ask_password_db $db_server $db_user`
894
site_password=`generate_password`
895
896
# Check if site database already exists.
897
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
898
    echo "Database $d7_site_name already exists"
899
    exit 1
900
fi
901
902
# Check if site folder already exists.
903
if [ -d $d7_site_dir ] ; then
904
    echo "Folder $d7_site_dir already exists"
905
    exit 1
906
fi
907
908 1 Julien Enselme
###### Main
909 21 Florent Torregrosa
mkdir $d7_site_dir
910
dir_site_name="assos.centrale-marseille.fr.$d7_site_name"
911 1 Julien Enselme
912 21 Florent Torregrosa
# Backup requirements
913
mkdir $d7_dir_individual_auto_backup/$dir_site_name
914
mkdir $d7_dir_individual_manual_backup/$dir_site_name
915
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
916
917 87 Julien Enselme
# NB : ls sort by considering the 1st characters
918 1 Julien Enselme
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql
919
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql2
920 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql3
921
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql4
922
923
# Create and grant privileges on database
924 87 Julien Enselme
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
925
mysql -h $db_server -u $db_user -e "GRANT ALL PRIVILEGES ON $d7_site_name.* TO '$d7_site_name'@'%' IDENTIFIED BY '$site_password'" -p$db_password
926 21 Florent Torregrosa
927
# Create settings.php
928
cp $d7_settings $d7_site_settings
929
generate_settings_local $d7_site_name $site_password $d7_settings_local_template $d7_site_settings_local
930
931
# Create symbolic link
932
cd $d7_dir
933
ln -s . $d7_site_name
934 1 Julien Enselme
935 41 Florent Torregrosa
# Next Instructions
936 21 Florent Torregrosa
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
937
echo "Press enter when ready to go on."
938
read key
939
940
# Init variables
941
d7-reset-variables.sh $d7_site_name
942
943
# Permissions
944
chmod -R 755 $d7_site_dir
945
chmod 400 $d7_site_settings
946
947
# Last instructions
948
echo "Last instructions:"
949
echo "- Advice the webmaster to close account creation on the website"
950
echo "- Give the webmaster a link to the club Drupal's tutorials "
951
echo "- Create a node of type \"Site\" on default"
952 53 Julien Enselme
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
953 21 Florent Torregrosa
</code>
954
</pre>
955
956
h3. d7-delete-site.sh
957
958 84 Julien Enselme
<pre>
959 21 Florent Torregrosa
<code class="php">
960
#!/bin/sh
961
962 66 Julien Enselme
. /users/guest/assos/bin/scripts-config.sh
963 21 Florent Torregrosa
. scripts-config-site.sh $1
964 66 Julien Enselme
. scripts-utils.sh
965 21 Florent Torregrosa
966
help="# ARGS: site name."
967
968
check_arguments $# 1 "$help"
969
970
db_password=`ask_password_db $db_server $db_user`
971
972 1 Julien Enselme
# Delete database.
973 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "DROP DATABASE $d7_site_name"
974
975
# Delete MYSQL user.
976
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
977
978 1 Julien Enselme
# Delete site's folder.
979 21 Florent Torregrosa
chmod -R 700 $d7_site_dir
980
rm -r $d7_site_dir
981
982 1 Julien Enselme
# Delete symbolic link.
983
rm $d7_dir/$d7_site_name
984 21 Florent Torregrosa
985
# Delete database backups.
986
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
987
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
988
989
echo "Don't forget to:"
990
echo "- Refresh node site on default"
991 53 Julien Enselme
echo "- Check particular behavior (normally detailed on site node)"
992 1 Julien Enselme
</code>
993 21 Florent Torregrosa
</pre>
994
995
h3. d7-reset-variables.sh
996
997 84 Julien Enselme
<pre>
998 21 Florent Torregrosa
<code class="php">
999
#!/bin/sh
1000
1001
. /users/guest/assos/bin/scripts-config.sh
1002
1003
# ARGS: [site_name]
1004
1005 1 Julien Enselme
if [ ! -z $1 ] ; then
1006 41 Florent Torregrosa
    . scripts-config-site.sh $1
1007 21 Florent Torregrosa
    cd $d7_site_dir
1008 41 Florent Torregrosa
fi
1009
1010 21 Florent Torregrosa
current_timestamp=`date "+%s"`
1011
1012
random_1=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
1013
random_2=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
1014 86 Julien Enselme
1015 21 Florent Torregrosa
####### General variables
1016
drush -y vset --always-set reverse_proxy TRUE
1017
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
1018 1 Julien Enselme
drush -y ev "variable_set('update_notify_emails', array('$email_multi_assos'));"
1019 41 Florent Torregrosa
drush -y vset error_level 0
1020 21 Florent Torregrosa
drush -y vset dblog_row_limit 1000
1021 92 Julien Enselme
drush -y vset cron_safe_threshold 0
1022 21 Florent Torregrosa
1023
###### Hidden captcha
1024
drush -y en hidden_captcha
1025
# Log wrong answers.
1026
drush -y vset captcha_log_wrong_responses 1
1027
# Use hidden captcha for all forms.
1028
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
1029
# Flush captcha cache.
1030
drush -y vdel captcha_placement_map_cache
1031
# Randomely generate a math question as the label of the hidden captcha field.
1032
drush -y vset hidden_captcha_label "$random_1 + $random_2"
1033
1034 41 Florent Torregrosa
1035 21 Florent Torregrosa
####### Piwik
1036
drush -y en piwik
1037
drush -y vset piwik_site_id "101"
1038
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
1039
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
1040
# Piwik cache.
1041
drush -y vset piwik_cache 1
1042
drush -y vset piwik_visibility_roles "1"
1043
# Piwik is enable for everyone except the administrator
1044
drush -y vset --format=json piwik_roles '[3]'
1045
drush -y vset piwik_page_title_hierarchy 1
1046
# Activate local search.
1047
drush -y vset piwik_site_search 1
1048 41 Florent Torregrosa
1049 21 Florent Torregrosa
1050
###### Security review
1051
# For untrusted roles:
1052 11 Julien Enselme
# 1: anonymous user
1053 1 Julien Enselme
# 2: authenticated user
1054
# 3: administrator
1055
drush -y en security_review
1056
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
1057 95 Florent Torregrosa
drush vset security_review_base_url_method include
1058 1 Julien Enselme
# Used to initialise entries in the database schema.
1059
drush security-review --store
1060
# Security review can't check for files permissions on multi_assos if launched within the web interface.
1061 87 Julien Enselme
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid = '1' WHERE reviewcheck IN ('file_perms');"
1062
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = '0', skipuid = NULL WHERE reviewcheck NOT IN ('file_perms');"
1063
</code>
1064
</pre>
1065
1066
h3. d7-all-update-settings.sh
1067
1068
<pre>
1069
<code>
1070
#!/bin/sh
1071
1072
. /users/guest/assos/bin/script-config.sh
1073
. /users/guest/assos/bin/scripts-utils.sh
1074
1075
# This script updates all drupal 7 settings.php according to a new template. Site informations located in settings.local.php are left intact.
1076
1077
for settings in $(find $d7_dir_sites -mindepth 2 -maxdepth 2 -name settings.php) ; do
1078
1079
    # We go into the settings.php directory.
1080
    settings_dir=`give_dir $settings`
1081
    cd $settings_dir
1082
1083
    chmod 700 $settings
1084
    rm $settings
1085 1 Julien Enselme
1086
    cp $d7_settings settings.php
1087
    chmod 400 settings.php
1088
done