Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 21

Florent Torregrosa, 04/08/2013 15:59
Ajout du code des nouveaux scripts

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 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.
8 1 Julien Enselme
9 3 Julien Enselme
Pour voir et modifier la liste des actions :
10
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
11
# taper la commande pour voir le crontab <code>crontab -l</code>
12
# taper la commande pour modifier le crontab <code>crontab -e</code>. /!\ 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 !
13
14 1 Julien Enselme
Voici la liste des tâches effectuées régulièrement.
15
16 3 Julien Enselme
h2. La mise à jour des projets
17 1 Julien Enselme
18
Voici les différentes étapes réalisées :
19 3 Julien Enselme
# Activer partout le module _update_. C'est lui qui gère la vérification des versions, l'envoi de notifications par mail ainsi que les mises à jour via drush, il est donc indispensable qu'il soit activé.
20
# Lancer le cron pour que les sites sachent s'il y a des mises à jour à faire
21 1 Julien Enselme
# Supprimer le cache des sites pour réduire drastiquement la taille des bases de données sauvegardées.
22 3 Julien Enselme
# Exécuter le [[Scripts_et_taches_planifiees#dump.sh_and_co|script de sauvegarde des bases de données]]
23 1 Julien Enselme
# Vérifier les versions des projets et au besoin, mettre à jour leur code
24 3 Julien Enselme
# Exécuter la [[Utilisation_de_Drupal_multi-site#Mise_à_jour_de_la_base_de_données|mise à jour des bases de données]]
25 1 Julien Enselme
# Exécuter une nouvelle fois le cron
26 3 Julien Enselme
# Exécuter le [[Scripts_et_taches_planifiees#taille.sh|script de rapport sur la taille utilisée du disque]] et l'envoyer par mail au club Drupal
27 1 Julien Enselme
# Dater les logs et les sauvegarder au bon endroit
28 3 Julien Enselme
# Désactiver le module _update_ (vu qu'il est réactivé avant la mise à jour et que celle-ci a lieu toutes les semaines, il y a peu d'intérêt à le garder activé le reste du temps)
29 1 Julien Enselme
30 3 Julien Enselme
h2. La mise à jour des traductions
31 1 Julien Enselme
32 5 Julien Enselme
Sur les installations d6 et d7 : une fois par semaine le jeudi.
33 1 Julien Enselme
34
Voici les étapes effectuées :
35 3 Julien Enselme
# Activer partout le module _l10n_update_. C'est lui qui gère la mise à jour des traductions
36
# Vérifier s'il y a des nouvelles chaînes traduites disponibles
37
# Ajouter les nouvelles traductions disponibles
38
# Désactiver le module _l10n_update_
39 1 Julien Enselme
40 3 Julien Enselme
Pour drupal 6, les différentes instructions sont écrites directement dans le crontab. Pour drupal 7, on utilise [[Scripts_et_taches_planifiees#drush_maj_trad|l'alias drush perso <code>drush maj_trad</code>]] dans le crontab.
41 1 Julien Enselme
42 3 Julien Enselme
h2. La réinitialisation des droits d'accès
43 1 Julien Enselme
44 3 Julien Enselme
Sur les installations d6 et d7 : toutes les semaines, après les D&D du club drupal
45 1 Julien Enselme
46 3 Julien Enselme
Cette tâche utilise le script [[Scripts_et_taches_planifiees#ch_mdp|ch_mdp]] afin de rétablir les droits d'accès recommandés par drupal sur 
47
* les dossiers des sites
48 1 Julien Enselme
* les settings.php des sites
49
50 3 Julien Enselme
h2. La réinitialisation des variables dangeureuses
51 1 Julien Enselme
52 3 Julien Enselme
Sur l'installation d7 principalement : une fois par semaine
53 1 Julien Enselme
54 3 Julien Enselme
Cette tâche consiste à réinitialiser certaines variables qui donnent des droits considérés comme trop permissifs donc dangereux aux administrateurs des sites. En voici la liste :
55 1 Julien Enselme
<pre>
56
<code class="bash">
57
drushall_atest vset error_level 0 --yes
58
</code>
59
</pre>
60
61
Cette commande permet de ne pas afficher les messages d'erreurs aux utilisateurs autre que les administrateurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulgués à n'importe qui.
62
<pre>
63
<code class="php">
64
drushall_atest php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\;
65
</code>
66
</pre>
67
68
Cette commande  permet de ne pas autoriser les utilisateurs à installer et mettre à jour des modules via l'interface du site (fonctionnalité introduite dans drupal7). En effet, seul le club Drupal maintient les codes des projet, afin d'en garantir la pérennité.
69
70 21 Florent Torregrosa
<pre
71 1 Julien Enselme
<code class="php">
72
drushall_atest vset --always-set reverse_proxy TRUE
73
drushall_atest vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
74
</code>
75
</pre>
76 21 Florent Torregrosa
77 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 sus-cités serveurs. **Pas fini : voir http://assos.centrale-marseille.fr/content/t%C3%A2che/d%C3%A9clarer-les-proxy-du-cri-%C3%A0-drupal**
78 1 Julien Enselme
79 3 Julien Enselme
80 1 Julien Enselme
h3. Comment le lancer ?
81
82 3 Julien Enselme
N'importe où, taper <code>reinit_var.sh</code>.
83 1 Julien Enselme
84 3 Julien Enselme
h2. La sauvegarde des bases de données
85 1 Julien Enselme
86 3 Julien Enselme
Sur les installations d6 et d7 : une fois par semaine
87 1 Julien Enselme
88 6 Julien Enselme
On utilise les [[Scripts_et_taches_planifiees#Tout-sauvegarder|scripts de sauvegarde créés par le club Drupal]].
89 1 Julien Enselme
90 3 Julien Enselme
h2. La purge des sauvegardes de bdd
91 1 Julien Enselme
92 3 Julien Enselme
Sur les installations d6 et d7 : toutes les semaines
93 1 Julien Enselme
94 3 Julien Enselme
Cette tâche utilise le script de [[Scripts_et_taches_planifiees#purge_des_sauvegardes.sh|purge des sauvegardes]] afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles.
95 1 Julien Enselme
96
h1. Liste des scripts à disposition
97
98
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos.
99
100
h2. all-reset-permissions.sh
101 21 Florent Torregrosa
102
<pre>
103
<code class="php">
104
#!/bin/sh
105
106
. scripts-config.sh
107
108
# This script puts the correct permissions to sites folders, settings.php and scripts.
109
110
######### drupal 6
111
for dir in `find $d6_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all ! -name images ! -name languages` ; do
112
    chmod 755 $dir
113
    chmod 400 $dir/settings.php
114
done
115
116
######### drupal 7
117
for dir in `find $d7_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all` ; do
118
    chmod 755 $dir
119
    chmod 400 $dir/settings.php
120
done
121
122
####### bin
123
chmod -R 700 $dir_scripts
124
</code>
125
</pre>
126
127 1 Julien Enselme
h2. contrib-usage.sh
128 21 Florent Torregrosa
129
<pre>
130
<code class="php">
131
#!/bin/sh
132
133
. scripts-config.sh
134
. scripts-utils.sh
135
136
# ARGS: Drupal_version, project_status, project_name
137
# List sites that have the project_name with the corresponding project_status.
138
139
check_arguments $# 3
140
141
if [ $1 = d6 ] ; then
142
    cd $d6_dir_sites
143
else
144
    cd $d7_dir_sites
145
fi
146
147
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images` ; do
148
    # List non-core projects that correspond to the status.
149
    # Keep project_name if listed.
150
    # Count line result. 0 if not listed or 1 if listed.
151
	# Print site_dir if listed.
152
153
    cd $dir;
154
	if [ 1 -eq `drush pml --no-core --status=$2 | grep $3 | wc -l` ] ; then
155
        echo $dir; 
156
    fi
157
done
158
</code>
159
</pre>
160
161 1 Julien Enselme
h2. d6-all-drush.sh
162 21 Florent Torregrosa
163
<pre>
164
<code class="php">
165
#!/bin/sh
166
167
. scripts-config.sh
168
. scripts-utils.sh
169
170
# ARGS: drush_command
171
172
check_arguments $# 1
173
174
for dir in `find $d6_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images` ; do
175
    cd $dir
176
    echo $dir
177
    drush $*
178
done
179
</code>
180
</pre>
181
182 1 Julien Enselme
h2. d6-all-dump-full.sh
183 21 Florent Torregrosa
184
<pre>
185
<code class="php">
186
#!/bin/sh
187
188
. scripts-config.sh
189
190
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
191
192
# Dump D6 database with webassos user.
193
mysqldump --single-transaction webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY > $d6_dir_full_backup/webassos/$current_date.webassos.sql
194
195
# Dump D6 form database with forum user.
196
mysqldump forum -h myweb.serv.int -u forum --password=dtcAltF12 > $d6_dir_full_backup/forum/$current_date.forum.sql
197
</code>
198
</pre>
199
200 1 Julien Enselme
h2. d6-all-update-contrib.sh
201 21 Florent Torregrosa
202
<pre>
203
<code class="php">
204
#!/bin/sh
205
206
. scripts-config.sh
207
208
d6-all-drush.sh -y en update
209
# Launch cron to check for updates.
210
d6-all-drush.sh -q cron
211
212
d6-all-drush.sh cc all
213
d6-all-dump-full.sh
214
215
d6-all-drush.sh -y upc --no-core
216
d6-all-drush.sh -y updb
217
218
d6-all-drush.sh -y dis update
219
220
# Cron report.
221
d6-all-drush.sh cron
222
</code>
223
</pre>
224
225 1 Julien Enselme
h2. d6-dump-individual.sh
226 21 Florent Torregrosa
227
<pre>
228
<code class="php">
229
#!/bin/sh
230
231
. scripts-config.sh
232
233
# ARGS: auto or manual, site_prefix
234
# WARNING : backup are regularly flushed, put your backup in a safe place.
235
236
cd $dir_individual_backup
237
238
#récupération des tables du site dans le fichier liste_tables.temp
239
tables='_%'
240
liste="$1$tables"
241
242
mysql -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY -BNe "show tables like '"$liste"'" webassos | tr '\r\n' ' ' > liste_tables.temp
243
244
#transformation de cette liste en une variable
245
var=$(cat liste_tables.temp)
246
247
#sauvegarde de toutes ces tables
248
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
249
suffixe="_dump$current_date.sql"
250
fichier="$1$suffixe"
251
252
if [ $1 = 'auto' ] ; then
253
        mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_auto_backup/$fichier
254
    else
255
        mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_manual_backup/$fichier
256
    fi
257
258
#suppression du fichier temporaire utilisé
259
rm liste_tables.temp
260
</code>
261
</pre>
262
263 1 Julien Enselme
h2. d6-reset-variables.sh
264 21 Florent Torregrosa
265
<pre>
266
<code class="php">
267
#!/bin/sh
268
269
. scripts-config.sh
270
271
cd $d6_dir_sites
272
d6-all-drush.sh vset --always-set reverse_proxy TRUE
273
d6-all-drush.sh vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
274
drush @sites ev "variable_set('update_notify_emails', array($email_multi_assos));" --yes
275
</code>
276
</pre>
277
278 1 Julien Enselme
h2. d7-all-drush-logged.sh
279 21 Florent Torregrosa
280
<pre>
281
<code class="php">
282
#!/bin/sh
283
284
. scripts-config.sh
285
. scripts-utils.sh
286
287
# ARGS: drush_command
288
289
check_arguments $# 1
290
291
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
292
    cd $dir
293
    current_date=`date "+%Y-%m-%d_%Hh:%Mm"`
294
    echo "======$current_date======" >> $d7_dir_log/$x.log
295
    echo "Arguments are: $* " >> $d7_dir_log/$x.log
296
    drush $* >> $d7_dir_log/$x.log
297
    #To have the same caracters limit we needed 'end' that have 4 caracters, we used the Croate language for this ! LOL 
298
    echo -e "=============KRAJ=============\n" >> $d7_dir_log/$x.log
299
done
300
</code>
301
</pre>
302
303 1 Julien Enselme
h2. d7-all-drush.sh
304 21 Florent Torregrosa
305
<pre>
306
<code class="php">
307
#!/bin/sh
308
309
. scripts-config.sh
310
. scripts-utils.sh
311
312
# ARGS: drush_command
313
314
check_arguments $# 1
315
316
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
317
    cd $dir
318
    echo $dir
319
    drush $*
320
done
321
</code>
322
</pre>
323
324 1 Julien Enselme
h2. d7-all-dump-full.sh
325 21 Florent Torregrosa
326
<pre>
327
<code class="php">
328
#!/bin/sh
329
330
. scripts-config.sh
331
332
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
333
334
# Dump D7 databases at once.
335
mysqldump -h $db_server -u $db_user -pNoNo82jJ --all-databases > $d7_dir_full_backup/myassos/$current_date.d7_full.sql
336
</code>
337
</pre>
338
339 1 Julien Enselme
h2. d7-all-dump-individual.sh
340 21 Florent Torregrosa
341
<pre>
342
<code class="php">
343
#!/bin/sh
344
345
. scripts-config.sh
346
347
# ARGS: auto or manual
348
349
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
350
351
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
352
    cd $dir
353
    drush cc all
354
    if [ $1 = 'auto' ] ; then
355
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
356
    else
357
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
358
    fi
359
done
360
</code>
361
</pre>
362
363 1 Julien Enselme
h2. d7-all-releases-info.sh
364 21 Florent Torregrosa
365
<pre>
366
<code class="php">
367
#!/bin/sh
368
369
. scripts-config.sh
370
371
# List version of a module or theme that exists in sites/all/*
372
# and all versions that are available for same project on drupal.org
373
374
# modules
375
for dir in `find $d7_dir_sites/all/modules -maxdepth 1 -mindepth 1 -type d` ; do
376
    drush pm-releases $dir
377
done
378
379
# themes
380
for dir in `find $d7_dir_sites/all/themes -maxdepth 1 -mindepth 1 -type d` ; do
381
    drush pm-releases $dir
382
done
383
</code>
384
</pre>
385
386 1 Julien Enselme
h2. d7-all-reset-variables.sh
387 21 Florent Torregrosa
388
<pre>
389
<code class="php">
390
#!/bin/sh
391
392
. scripts-config.sh
393
394
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
395
    cd $dir
396
    echo $dir
397
    d7-reset-variables.sh
398
done
399
</code>
400
</pre>
401
402 1 Julien Enselme
h2. d7-all-security-review.sh
403 21 Florent Torregrosa
404
<pre>
405
<code class="php">
406
#!/bin/sh
407
408
. scripts-config.sh
409
410
# grep -v success to keep site_name and error lines.
411
bash -c 'd7-all-drush.sh security-review |& grep -v success | mail -s "Security review" $email_multi_assos'
412
</code>
413
</pre>
414
415 1 Julien Enselme
h2. d7-all-update-contrib.sh
416 21 Florent Torregrosa
417
<pre>
418
<code class="php">
419
#!/bin/sh
420
421
. scripts-config.sh
422
423
d7-all-drush.sh -y en update
424
# Launch cron to check for updates.
425
d7-all-drush.sh -q cron
426
427
d7-all-drush.sh cc all
428
d7-all-dump-individual.sh
429
430
d7-all-drush-logged.sh -y upc --no-core
431
d7-all-drush.sh -y updb
432
433
d7-all-drush.sh -y dis update
434
435
# Cron report.
436
d7-all-drush.sh cron | mail -s "Cron report: d7-all-update-contrib.sh" $email_multi_assos
437
</code>
438
</pre>
439
440 1 Julien Enselme
h2. d7-all-update-localisation.sh
441 21 Florent Torregrosa
442
<pre>
443
<code class="php">
444
#!/bin/sh
445
446
. scripts-config.sh
447
448
d7-all-drush.sh -y en l10n_update
449
d7-all-drush.sh l10n-update-refresh
450
d7-all-drush.sh l10n-update
451
d7-all-drush.sh -y dis l10n_update
452
</code>
453
</pre>
454
455 1 Julien Enselme
h2. d7-create-site.sh
456 21 Florent Torregrosa
457
<pre>
458
<code class="php">
459
#!/bin/sh
460
461
. scripts-config.sh
462
. scripts-config-site.sh $1
463
. scripts-utils.sh
464
465
# ARGS: site name
466
467
######## Exceptions
468
check_arguments $# 1
469
470
# "-" is forbidden because it provokes database error.
471
if `echo $1 | grep -` ; then
472
    echo '"-" is forbidden in the site name'
473
    exit 1
474
fi
475
476
# Site name length must be lower or equal to 16 due to database limitations.
477
if [ $(echo $1 | wc -n) -le 16 ] ; then
478
    echo "site name can't have more than 16 characters"
479
    exit 1
480
fi
481
482
###### Initialisation
483
cd $d7_dir
484
db_password=`ask_password_db $db_server $db_user`
485
site_password=`gen_password`
486
487
# Check if site database already exists.
488
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
489
    echo "Database $d7_site_name already exists"
490
    exit 1
491
fi
492
493
# Check if site folder already exists.
494
if [ -d $d7_site_dir ] ; then
495
    echo "Folder $d7_site_dir already exists"
496
    exit 1
497
fi
498
499
###### Main
500
mkdir $d7_site_dir
501
502
# Backup requirements
503
mkdir $d7_dir_individual_auto_backup/$d7_site_name
504
mkdir $d7_dir_individual_manual_backup/$d7_site_name
505
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
506
507
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
508
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
509
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
510
511
# Create and grant privileges on database
512
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
513
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
514
515
# Create settings.php
516
sed "s/\%\%DBUSER\%\%/$d7_site_name/ ; s/\%\%DBNAME\%\%/$d7_site_name/ ; s/\%\%DBPASS\%\%/$site_password/ ; s/\%\%nomsite\%\%/$d7_site_name/" < $d7_settings_template > $d7_site_settings
517
518
# Create symbolic link
519
cd $d7_dir
520
ln -s . $d7_site_name
521
522
# Next Instructions
523
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
524
echo "Press enter when ready to go on."
525
read key
526
527
# Init variables
528
d7-reset-variables.sh $d7_site_name
529
530
# Permissions
531
chmod -R 755 $d7_site_dir
532
chmod 400 $d7_site_settings
533
534
# Last instructions
535
echo "Last instructions:"
536
echo "- Advice the webmaster to close account creation on the website"
537
echo "- Give the webmaster a link to the club Drupal's tutorials "
538
echo "- Create a node of type \"Site\" on default"
539
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
540
</code>
541
</pre>
542
543 1 Julien Enselme
h2. d7-delete-site.sh
544 21 Florent Torregrosa
545
<pre>
546
<code class="php">
547
#!/bin/sh
548
549
. scripts-config.sh
550
. scripts-config-site.sh $1
551
. scripts-utils.sh
552
553
# ARGS: site name.
554
555
check_arguments $# 1
556
557
db_password=`ask_password_db $db_server $db_user`
558
559
# Delete database.
560
mysql -h $db_server -u $db_user -p$db_password -e "IF EXISTS DROP DATABASE $d7_site_name"
561
562
# Delete MYSQL user.
563
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
564
565
# Delete site's folder.
566
chmod -R 700 $d7_site_dir
567
rm -r $d7_site_dir
568
569
# Delete symbolic link.
570
rm $d7_dir/$d7_site_name
571
572
# Delete database backups.
573
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
574
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
575
576
echo "Don't forget to:"
577
echo "- Refresh node site on default"
578
echo "- Check particular behavior (normally detailed on site node)"
579
</code>
580
</pre>
581
582 1 Julien Enselme
h2. d7-reset-variables.sh
583 21 Florent Torregrosa
584
<pre>
585
<code class="php">
586
#!/bin/sh
587
588
. scripts-config.sh
589
590
# ARGS: [site_name]
591
592
if [ ! -z $1 ] ; then
593
    . scripts-config-site.sh $1
594
    cd $d7_site_dir
595
fi
596
597
current_timestamp=`date "+%s"`
598
599
####### General variables
600
drush -y vset --always-set reverse_proxy TRUE
601
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
602
drush -y ev "variable_set('update_notify_emails', array($email_multi_assos));"
603
drush -y vset error_level 0
604
605
###### Hidden captcha
606
drush -y en hidden_captcha
607
# Log wrong answers.
608
drush -y vset captcha_log_wrong_responses 1
609
# Use hidden captcha for all forms.
610
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
611
# Flush captcha cache.
612
drush -y vdel captcha_placement_map_cache
613
# Randomely generate a math question as the label of the hidden captcha field.
614
drush -y vset hidden_captcha_label "$RANDOM + $RANDOM"
615
616
617
####### Piwik
618
drush -y en piwik
619
drush -y vset piwik_site_id "101"
620
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
621
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
622
# Piwik cache.
623
drush -y vset piwik_cache 1
624
drush -y vset piwik_visibility_roles "1"
625
# Anonymous and authenticated statistics.
626
drush -y vset --format=json piwik_roles '{"1":0,"2":0}'
627
drush -y vset piwik_page_title_hierarchy 1
628
# Activate local search.
629
drush -y vset piwik_site_search 1
630
631
632
###### Security review
633
# For untrusted roles:
634
# 1 : anonymous user
635
# 2 : authenticated user
636
# 3 : administrator
637
drush -y en security_review
638
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
639
# Security review can't check for files permissions on multi_assos.
640
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid= '1' WHERE reviewcheck IN ('file_perms');"
641
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = 0, skipuid= NULL WHERE reviewcheck NOT IN ('file_perms');"
642
</code>
643
</pre>
644
645 1 Julien Enselme
h2. delete-temporary-files.sh
646 21 Florent Torregrosa
647
<pre>
648
<code class="php">
649
#!/bin/sh
650
651
. scripts-config.sh
652
653
find $dir_multi_assos -name '*~' -delete
654
</code>
655
</pre>
656
657 1 Julien Enselme
h2. disk-usage.sh
658 21 Florent Torregrosa
659
<pre>
660
<code class="php">
661
#!/bin/sh
662
663
. scripts-config.sh
664
665
echo -e "Quotas: 9.1 GB\n"
666
667
echo "Assos:"
668
du -hcs $dir_multi_assos | grep total
669
echo -e "\n"
670
671
echo "D6:"
672
cd $d6_dir_sites
673
du -h -d 1
674
echo -e "\n"
675
676
echo "D7:"
677
cd $d7_dir_sites
678
du -h -d 1
679
echo -e "\n"
680
681
echo "Logs:"
682
du -hcs $dir_log | grep total
683
echo -e "\n"
684
685
echo "Backups:"
686
cd $dir_backup
687
du -h -d 2
688
</code>
689
</pre>
690
691 1 Julien Enselme
h2. flush-files.sh
692 21 Florent Torregrosa
693
<pre>
694
<code class="php">
695
#!/bin/sh
696
697
# ARGS: number of files to keep, email address
698
# usage: flush files from a folder except a number equal to argument.
699
700
# Check if scripts-config.sh is imported.
701
if [ -z $scripts_utils ] ; then
702
    echo "Import of scripts-utils.sh required."
703
    exit 1
704
fi
705
706
check_arguments $# 2
707
708
backups_number=`ls | wc -l`
709
let "number_of_backups_to_delete = backups_number - $1"
710
711
if [ $number_of_backups_to_delete -gt 0 ] ; then
712
    ls | head -$number_of_backups_to_delete | xargs rm
713
else
714
    dir=`pwd`
715
    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
716
fi
717
</code>
718
</pre>
719
720 1 Julien Enselme
h2. flush-full-databases-backups.sh
721 21 Florent Torregrosa
722
<pre>
723
<code class="php">
724
#!/bin/sh
725
726
. scripts-config.sh
727
728
# ARGS: Drupal version
729
730
cd $dir_full_backup/$1
731
732
for dir in `ls` ; do
733
    cd $dir
734
    flush-files.sh $db_full_backup_number $email_multi_assos
735
done
736
</code>
737
</pre>
738
739 1 Julien Enselme
h2. flush-individual-databases-backups.sh
740 21 Florent Torregrosa
741
<pre>
742
<code class="php">
743
#!/bin/sh
744
745
. scripts-config.sh
746
747
# ARGS: manual or auto, Drupal version
748
749
cd $dir_individual_backup/$1/$2
750
751
for dir in `ls` ; do
752
    cd $dir
753
    if [ $1 = 'auto' ] ; then
754
        flush-files.sh $db_individual_auto_backup_number $email_multi_assos
755
    else
756
        flush-files.sh $db_individual_manual_backup_number $email_multi_assos
757
    fi
758
done
759
</code>
760
</pre>
761
762 1 Julien Enselme
h2. scripts-config-site.sh
763 21 Florent Torregrosa
764
<pre>
765
<code class="php">
766
#!/bin/sh
767
768
# Sets useful variables of a site.
769
# ARGS: site_name
770
# Requires scripts-config.sh
771
772
# Check if scripts-config.sh is imported.
773
if [ -z $scripts_config ] ; then
774
    echo "Import of scripts-config.sh required."
775
    exit 1
776
fi
777
778
if [ -z $1 ] ; then
779
    echo "This script needs a site name as argument."
780
    exit 1
781
fi
782
783
scripts_config_site='imported'
784
785
d7_site_name=$1
786
d7_site_dir="$d7_dir_sites/assos.centrale-marseille.fr.$d7_site_name"
787
d7_site_settings="$d7_site_dir/settings.php"
788
</code>
789
</pre>
790
791 1 Julien Enselme
h2. scripts-config.sh
792 21 Florent Torregrosa
793
<pre>
794
<code class="php">
795
#!/bin/sh
796
797
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/users/guest/assos/bin
798
PATH=$PATH:/usr/guest/assos/bin
799
800
scripts_config='imported'
801
802
email_multi_assos="assos@centrale-marseille.fr"
803
804
dir_multi_assos='/users/guest/assos'
805
dir_scripts="$dir_multi_assos/bin"
806
dir_template="$dir_multi_assos/Desktop"
807
808
###### Database
809
db_server="myassos.serv.int"
810
db_user="assos"
811
dir_log="$dir_multi_assos/log"
812
813
###### Backup
814
db_full_backup_number=3
815
db_individual_manual_backup_number=3
816
db_individual_auto_backup_number=3
817
818
dir_backup="$dir_multi_assos/backup"
819
dir_full_backup="$dir_backup/full"
820
dir_individual_backup="$dir_backup/individual"
821
dir_individual_manual_backup="$dir_individual_backup/manual"
822
dir_individual_auto_backup="$dir_individual_backup/auto"
823
824
825
###### D7 variables
826
d7_dir="$dir_multi_assos/htmltest"
827
d7_dir_sites="$d7_dir/sites"
828
829
### Log
830
d7_dir_log="$dir_log/d7"
831
832
### Backup
833
d7_dir_full_backup="$dir_full_backup/d7"
834
d7_dir_individual_manual_backup="$dir_individual_manual_backup/d7"
835
d7_dir_individual_auto_backup="$dir_individual_auto_backup/d7"
836
837
### Template
838
d7_settings_template_name="settings-D7-bddinde-template.php"
839
d7_settings_template="$dir_template/$d7_settings_template_name"
840
841
842
###### D6 variables
843
d6_dir="$dir_multi_assos/html"
844
d6_dir_sites="$d6_dir/sites"
845
846
### Backup
847
d6_dir_full_backup="$dir_full_backup/d6"
848
d6_dir_individual_manual_backup="$dir_individual_manual_backup/d6"
849
d6_dir_individual_auto_backup="$dir_individual_auto_backup/d6"
850
</code>
851
</pre>
852
853 1 Julien Enselme
h2. scripts-utils.sh
854 21 Florent Torregrosa
855
<pre>
856
<code class="php">
857
#!/bin/sh
858
859
# This script contains useful functions for other scripts.
860
861
# Check if scripts-config.sh is imported.
862
if [ -z $scripts_config ] ; then
863
    echo "Import of scripts-config.sh required."
864
    exit 1
865
fi
866
867
scripts_utils='imported'
868
869
ask_password() {
870
    # read -s doesn't work with sh.
871
    # usage: pass=`ask_password "password please:"`
872
    echo $1 >&2
873
    echo -n ">" >&2
874
    stty_avant=`stty -g`
875
    stty -echo
876
    read p
877
    stty $stty_avant
878
    echo "$p"
879
    unset p
880
}
881
882
ask_password_db() {
883
    # ARGS: server_name, user_name
884
    local db_password="pour_boucler"
885
    # empty db request to validate password
886
    while ! mysql -h $1 -u $2 -p$db_password -e "" 2>/dev/null ; do
887
        db_password=`ask_password "database password:"`
888
        echo ""
889
    done
890
}
891
892
generate_password(){
893
    # ARGS: [password_length]
894
    # The password contains special characters. '/' must be excluded to avoid sed malfunction.
895
896
    local site_password='/'
897
898
    if [ -z $1 ] ; then
899
        local password_length=20
900
    else
901
        local password_length=$1
902
    fi
903
    
904
    while echo "$site_password" | grep -Fq '/' ; do
905
        site_password=`dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-$password_length`
906
    done
907
908
    echo $site_password
909
}
910
911
count_d7_sites(){
912
    find $d7_dir_sites -type d ! -name all -maxdepth 1 | wc -l
913
}
914
915
check_arguments() {
916
    # ARGS: number of arguments passed to script, number of arguments required
917
    if [ $1 -le $2  ] ; then
918
        echo "Number of arguments insuffisant."
919
        exit 1
920
    fi
921
}
922
</code>
923
</pre>
924 20 Florent Torregrosa
925 1 Julien Enselme
h2. ch_mdp
926
927 11 Julien Enselme
Il a été écrit pour permettre de prendre acte de la modification du mot de passe de la base de données rapidement dans tous les settings.php (pour l’installation de drupal 6 uniquement, les sites drupal 7 étant chacun dans leur base de données).
928 1 Julien Enselme
929 11 Julien Enselme
Pour effectuer cette action, il faut donner l'ancien et le nouveau mot de passe en argument puis lancer le script.
930 1 Julien Enselme
931 3 Julien Enselme
Plus d'info sur comment ça marche en lisant http://fr.wikipedia.org/wiki/Stream_Editor#Utilisation_la_documentation_de_la_commande_sed et les commentaires laissés dans le code du script.
932 1 Julien Enselme
933
h3. Comment le lancer ?
934
935 3 Julien Enselme
Il suffit de taper <code>ch_mdp</code> n'importe où dans le compte assos.
936 1 Julien Enselme
937
h3. À quoi ça ressemble ?
938
939
<pre>
940
<code class="bash">
941
cd [drupal directory]/sites
942
943 3 Julien Enselme
for x in $(ls -1 | grep -v 'all'); do
944
	cd $x;
945
	fichier="settings.php" 
946 1 Julien Enselme
	chmod 600 $fichier
947
	mv $fichier $fichier.old
948 15 Julien Enselme
        #remplacer la première chaine après le / par l'ancien mot de passe, et la seconde chaine (après le deuxième /) par le nouveau mot de passe
949 11 Julien Enselme
	sed "s/$1/$2/g" < $fichier.old > $fichier
950 1 Julien Enselme
	chmod 400 $fichier
951 15 Julien Enselme
	echo "Verifier que le site fonctionne et appuyer sur la touche Entree pour continuer"
952
	read fake_variable
953 1 Julien Enselme
	rm $fichier.old
954
	cd ..
955 15 Julien Enselme
done
956 11 Julien Enselme
</code>
957
</pre>
958
959
h2. chk_perm
960
961
Ce script rétablit les permissions des dossiers des sites, des scripts et des settings.php. Il se lance tous les jours grâce au cron.
962
963
Il ressemble à ça :
964
<pre>
965
<code class="bash">
966
cd [drupal directory]/sites
967
968
for dir in $(find . -type d -maxdepth 1 ! -name all)
969
do
970
    chmod 755 $dir
971
    cd $dir
972
    chmod 400 settings.php
973
    cd -
974
done
975 1 Julien Enselme
</code>
976
</pre>
977
978
h2. dis_tiers.sh et en_tiers.sh
979
980 3 Julien Enselme
Créé en juillet 2011 dans le cadre de [[De_Drupal6_vers_Drupal7|la migration de d6 à d7]], ces scripts permettent respectivement de désactiver et réactiver tous les modules tiers (c'est-à-dire les modules qui ne font pas partie du noyau / core de drupal, ceux qui sont installé dans sites/all/modules).
981 1 Julien Enselme
982
En effet, il s'agit de deux étapes indipensables pour la migration d'un site.
983
984
h3. Comment les lancer ?
985
986
Il suffit de taper "dis_tiers.sh" ou "en_tiers.sh" dans le dossier du site en question.
987
988
h3. À quoi ça ressemble ?
989
990
<pre>
991
<code class="bash">
992
##dis_tiers.sh
993
#écrire le nom des modules non core dans un fichier
994
drush pml |grep -v Core* | grep Module | grep Enabled > fichier.temp
995
sed -e 's/\(.*(\)\(.*\)\().*\)/\2/' fichier.temp > modules_tiers.txt
996
#désactiver ces modules
997
for line in $(cat modules_tiers.txt); do drush dis -y "$line" ; done  
998
#effacer les fichiers créés
999
rm fichier.temp
1000
1001
##en_tiers.sh
1002
#activer ces modules du fichier texte
1003
for line in $(cat modules_tiers.txt); do drush en -y "$line" ; done 
1004
</code>
1005
</pre>
1006
1007
NB : dis_tiers.sh crée un fichier texte contenant la liste des modules tiers qui étaient activés sur le site. Il faut donc :
1008 3 Julien Enselme
* Avoir des droits d'écriture sur le dossier du site pour l'exécuter
1009
* Penser à supprimer ce fichier et à remettre les droits correctement (par exemple en lançant le script [[Scripts_et_taches_planifiees#ch_mdp|ch_mdp ]]) après.
1010 1 Julien Enselme
1011
h2. drushall and co
1012
1013
Pour administrer tous les sites du multi-site en une seule fois, nous avons créé un script à partir de drush.
1014
Il s'utilise comme drush, mais effectue la commande drush tapée sur tous les sites de l'installation un par un.
1015
1016
h3. Comment on le lance ?
1017
1018
Sur l'installation d6, on lance <code>drushall</code> n'importe où.
1019
1020
Sur l'installation d7, on lance <code>drushall_atest</code> n'importe où.
1021
1022
h3. À quoi ça ressemble ?
1023
1024
<pre>
1025
<code class="bash">
1026
#~/bin/sh
1027
# si pas d'arguments :
1028
if [ $# -lt 1 ]; then
1029
  echo "usage: $0 <drush args>"
1030
  exit 1
1031
fi
1032
1033
cd [drupal directory]/sites
1034
1035
for x in $(ls -1 | grep -v 'all'); do
1036
  if [ -d $x -a ! -L $x ]; then
1037
    cd $x;
1038
    echo $x
1039
    drush $*
1040
    cd -;
1041
  fi
1042
done
1043
</code>
1044
</pre>
1045
1046
h2. drushcronone
1047
1048
h3. Histoire
1049
1050 3 Julien Enselme
Ce script a été introduit pour la version 6 du projet essentiellement pour améliorer les performances : au lieu de faire un wget sur le cron.php d'un site, valait mieux exécuter le script _en interne_.
1051 1 Julien Enselme
1052
h3. Besoin
1053
1054
La version 7 du projet en a besoin plus que jamais ! puisque le cron.php n'est plus 'wget'able sans une chaîne de codes à ajouter à l'url publique, sinon il faut avoir les droits nécessaires.
1055
1056
h3. Usage
1057
1058
Donc pour exécuter le cron pour un seul site, il suffit de donner le nom du répertoire.
1059 3 Julien Enselme
Exemple : <code>drushcronone assos.centrale-marseille.fr.cac13</code>
1060 1 Julien Enselme
1061
Q : Où est ce que ce script est le plus utilisé ?
1062
1063
R : Dans les tâches planifiés (crontab) bien sûr !
1064
1065 8 Julien Enselme
h2. dump.sh and co
1066 1 Julien Enselme
1067 8 Julien Enselme
Tous ces scripts se lancent n'importe où.
1068 1 Julien Enselme
1069 8 Julien Enselme
h3. Dump pour drupal 6
1070 3 Julien Enselme
1071 8 Julien Enselme
h4. Sauvegarder uniquement les tables d'un site
1072
1073 1 Julien Enselme
On a créé des scripts qui permettent de sauvegarder uniquement les tables associés à un site (et non toute la base).
1074 3 Julien Enselme
1075
Ils se lancent n'importe où (mais attention, la sauvegarde est effectuée là où il est lancé, donc à ne pas lancer dans dossier accessible par n'importe qui !) en tapant <code>dump_site nom_de_site</code> (d6) ou <code>dump_site_atest nom_du_site</code> (d7). Le nom du site à fournir est le préfixe utilisé dans la base de données.
1076
1077
Ils **ressemblent** à :
1078 1 Julien Enselme
<pre>
1079
<code class="bash">
1080
#récupération des tables du site dans le fichier liste_tables.temp
1081
tables='_%'
1082
liste="$1$tables"
1083
1084
mysql -h serveur -u utilisateur --password=super_mot-de-passe -BNe "show tables like '"$liste"'" base_de_données | tr '\r\n' ' ' > liste_tables.temp
1085
1086
#transformation de cette liste en une variable
1087
var=$(cat liste_tables.temp)
1088
1089
#sauvegarde de toutes ces tables
1090
suffixe="_dump.sql"
1091
fichier="$1$suffixe"
1092
1093
mysqldump base_de_données -h serveur -u utilisateur --password=super_mot-de-passe $var > $fichier
1094
1095
#suppression du fichier temporaire utilisé
1096
rm liste_tables.temp
1097
</code>
1098
</pre>
1099
1100 8 Julien Enselme
h4. Tout sauvegarder
1101 1 Julien Enselme
1102 3 Julien Enselme
Pour drupal 6, on a un script qui réalise la sauvegarde de toute la base en une seule fois : <code> dump.sh</code>. Il **ressemble** à ça :
1103 1 Julien Enselme
<pre>
1104
<code class="bash">
1105
mysqldump nom_de_la_base -h serveur -u utilisateur --password=super_mot_de_passe_trop_bien > ~/chemin_vers_la/sauvegarde.dump.sql
1106
</code>
1107
</pre>
1108
1109 8 Julien Enselme
h3. Dump pour drupal 7
1110 1 Julien Enselme
1111 8 Julien Enselme
Pour drupal 7, on a un script plus complet : <code>dump_site_atest_all</code> qui repose sur @drush sql-dump@ :
1112 1 Julien Enselme
1113 8 Julien Enselme
<pre>
1114
<code class="bash">
1115
#!/bin/sh
1116
PATH=/usr/local/bin:/usr/bin:/bin:/users/guest/assos/bin
1117
1118
sites_dir=~/htmltest/sites
1119
backup_dir=~/Desktop/dump_d7
1120
date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
1121
1122
cd $sites_dir
1123
1124
#Cherche dans le sous répertoire du répertoire courant sauf dans le sous répertoire
1125
# all et dans les liens.
1126
for dir in $(find . -maxdepth 1 -mindepth 1 -type d ! -name all )
1127
do
1128
    cd $dir
1129
    drush sql-dump --result-file="$backup_dir/$dir.dump$date.sql"
1130
    cd -
1131
done
1132
</code>
1133
</pre>
1134
1135
Ce script s’exécute une fois par semaine.
1136 1 Julien Enselme
1137
h2. maj.sh
1138
1139 3 Julien Enselme
Ce script est principalement constitué d'une suite de commandes drush et d'appels à d'autres scripts du projet.
1140 1 Julien Enselme
1141 3 Julien Enselme
Plus d'info sur les étapes précises dans les commentaires du script lui-même et dans le [[Scripts_et_taches_planifiees#la_mise_à_jour_des_projets|paragraphe suivant]].
1142 1 Julien Enselme
1143
h3. Comment le lancer ?
1144
1145
<code>maj.sh</code> ou <code>maj_d7.sh</code>, n'importe où.
1146
1147 3 Julien Enselme
NB : il faut que le module _update_ soit activé sur tous les sites de l'installation pour que ce script fonctionne.
1148 1 Julien Enselme
1149
h2. usep
1150
1151 3 Julien Enselme
Ce script a été créé dans le cadre de la [[De_Drupal6_vers_Drupal7|migration de drupal 6 à drupal 7]] mais peut être utilisé pour des tas de choses : il permet de savoir quels sont les sites qui utilisent (c'est-à-dire qui ont activé) un projet donné.
1152 1 Julien Enselme
1153 3 Julien Enselme
Pour le moment, il n'est fonctionnel que pour drupal 6, mais peut être adapté sans mal à drupal 7.
1154
1155 1 Julien Enselme
h3. Comment le lancer ?
1156
1157
Taper <code>usep projet</code> dans n'importe quel dossier de site de l'installation drupal 6.
1158
1159
h3. À quoi ça ressemble ?
1160
1161
(quelques  commentaires sont également dispo directement dans le script pour mieux comprendre son fonctionnement)
1162
<pre>
1163
<code class="bash">
1164
#si pas d'argument donnés :
1165
if [ $# -lt 1 ]; then
1166
  echo "usage: $0 <drush args>"
1167
  exit 1
1168
fi
1169
1170
1171
cd [drupal_directory]/sites
1172
1173
1174
for x in $(ls -1 | grep -v 'all' | grep -v file-*); do
1175
  if [ -d $x -a ! -L $x ]; then
1176
    cd $x;
1177
    if [ 1 = `drush pml --no-core --status=enabled | grep $1 | wc -l` ]; then
1178
             echo $x; 
1179
            fi
1180
    cd -;
1181
  fi
1182
done
1183
</code>
1184
</pre>
1185
1186 3 Julien Enselme
h2. Taille.sh
1187 1 Julien Enselme
1188
Ce script utilise la commande <code>du -hcs</code> pour retourner l'espace disque utilisé sur le compte assos, ainsi que sa répartition dans les différents répertoires des sites).
1189
1190
Ce script est notamment utilisé à la fin du script de mise à jour de projet ; son résultat est envoyé par mail au club drupal pour vérification.
1191
1192
h2. init_var.sh
1193
1194
Ce script permet d'initialiser des configurations et variables dangereuses, pour l'installation drupal 7. Il faut le lancer après chaque installation de sous-site.
1195
1196
h3. Comment le lancer ?
1197
1198
Taper <code>init_var.sh</code> (ou <code>drush init</code>) dans le dossier du site.
1199
1200
h3. À quoi ça ressemble ?
1201
1202
<pre>
1203
<code class="bash">
1204
drush vset error_level 0 --yes
1205
</code>
1206
</pre>
1207
1208
Cette commande permet de ne pas afficher les messages d'erreurs aux utilisateurs autre que les administrateurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulguées à n'importe qui.
1209
1210
<pre>
1211
<code class="php">
1212
drush php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\; 
1213
</code>
1214
</pre>
1215
1216
Cette commande  permet de ne pas autoriser les utilisateurs à installer et mettre à jour des modules via l'interface du site (fonctionnalité introduite dans drupal7). En effet, seul le club Drupal maintient les codes des projet, afin d'en garantir la pérennité.
1217
1218
<pre>
1219
<code class="bash">
1220
drush vset --always-set reverse_proxy TRUE
1221
drush vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
1222
</code>
1223
</pre>
1224
1225
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 sus-cités serveurs. Pour plus d'info, voir le mail de dgeo du 15 mai 2012.
1226
<pre>
1227 4 Julien Enselme
<code>
1228 1 Julien Enselme
drush ev "variable_set('update_notify_emails', array('coucouuu@example.com'));"
1229
</code>
1230
</pre>
1231
1232 3 Julien Enselme
Cette commande permet de modifier l'adresse de la personne qui recevra des notifications lorsqu'une nouvelle mise à jour (projet ou noyau drupal) est disponible (NB : c'est le module (du noyau) _update_ qui gère ces envois, s'il est désactivé, aucune vérification des versions n'est effectuée)
1233 1 Julien Enselme
Pour ne pas déranger les webmasters avec ceci, il faut mettre l'adresse du club drupal.
1234
1235
h2. reinit_var.sh
1236
1237
Ce script est utilisé pour réinitialiser des configurations et variables dangereuses sur tous les sites.
1238
1239 3 Julien Enselme
Des informations détaillées sont disponibles dans [[Scripts_et_taches_planifiees#la_réinitialisation_des_variables_dangeureuses|ce paragraphe]].
1240
1241 1 Julien Enselme
h3. Comment le lancer ?
1242
1243
Taper <code>reinit_var.sh</code> n'importe où.
1244
1245
h2. purge_des_sauvegardes.sh
1246
1247
Ce script permet de supprimer les vieilles sauvegardes de base de données, afin de libérer de l'espace disque.
1248
1249
Le script nettoie les sauvegardes de sites individuels et les sauvegardes des bases de données complètes d6 et d7.
1250
1251
h3. Comment le lancer ?
1252
1253 3 Julien Enselme
Il suffit de taper <code>purge_des_sauvegardes.sh</code> n'importe où dans le compte assos.
1254 1 Julien Enselme
1255
h3. À quoi ça ressemble ?
1256
1257
<pre>
1258
<code class="bash">
1259
cd [dump directory]
1260
1261
if [ $(ls -l | wc -l)  -gt YY ] ; then # s'il y a plus de YY fichiers alors
1262
1263
ls -tr | head -XX | xargs rm; #supprime les XX fichiers les plus vieux
1264
1265
else # sinon, alerte
1266
1267
echo "mon message d'erreur" | mail -s "[dump assos] mon message d'erreur" assos@centrale-marseille.fr ;
1268
1269
fi
1270
</code>
1271
</pre>
1272
1273 7 Julien Enselme
{{important(Ce script supprime les x sauvegardes les plus vieilles de chaque catégorie (sites d7, tout d6, tout d7), sans aucune notion de temps. Cela implique que si des sauvegardes ont été faites manuellement, des sauvegardes automatiques plus vieilles seront supprimées (alors qu'elles ne sont pas nécessairement périmées !))}}
1274 1 Julien Enselme
1275 10 Florent Torregrosa
h2. drushall_atest_logged
1276 9 Florent Torregrosa
1277
Pour faire des commandes drush et quelles soient logguées par site dans le dossier Desktop/log/d7/nom_du_site.log
1278
1279 14 Julien Enselme
h1. Anciennes entrées du crontab
1280
1281
Ces entrées ne sont plus nécessaires mais conservées pour archive :
1282
1283 16 Julien Enselme
* 03 03 * * *     /users/guest/assos/bin/drushall cron
1284
* * */23 * * * echo "le crontab sas1 fonctionne, supprimer celui de scylla mnt !" | mail -s "sas1 is talking to you" assos