Projet

Général

Profil

Scripts archives » Historique » Version 1

Florent Torregrosa, 04/08/2013 16:06

1 1 Florent Torregrosa
h2. chk_perm
2
3
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.
4
5
Il ressemble à ça :
6
<pre>
7
<code class="bash">
8
cd [drupal directory]/sites
9
10
for dir in $(find . -type d -maxdepth 1 ! -name all)
11
do
12
    chmod 755 $dir
13
    cd $dir
14
    chmod 400 settings.php
15
    cd -
16
done
17
</code>
18
</pre>
19
20
h2. dis_tiers.sh et en_tiers.sh
21
22
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).
23
24
En effet, il s'agit de deux étapes indipensables pour la migration d'un site.
25
26
h3. Comment les lancer ?
27
28
Il suffit de taper "dis_tiers.sh" ou "en_tiers.sh" dans le dossier du site en question.
29
30
h3. À quoi ça ressemble ?
31
32
<pre>
33
<code class="bash">
34
##dis_tiers.sh
35
#écrire le nom des modules non core dans un fichier
36
drush pml |grep -v Core* | grep Module | grep Enabled > fichier.temp
37
sed -e 's/\(.*(\)\(.*\)\().*\)/\2/' fichier.temp > modules_tiers.txt
38
#désactiver ces modules
39
for line in $(cat modules_tiers.txt); do drush dis -y "$line" ; done  
40
#effacer les fichiers créés
41
rm fichier.temp
42
43
##en_tiers.sh
44
#activer ces modules du fichier texte
45
for line in $(cat modules_tiers.txt); do drush en -y "$line" ; done 
46
</code>
47
</pre>
48
49
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 :
50
* Avoir des droits d'écriture sur le dossier du site pour l'exécuter
51
* 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.
52
53
h2. drushall and co
54
55
Pour administrer tous les sites du multi-site en une seule fois, nous avons créé un script à partir de drush.
56
Il s'utilise comme drush, mais effectue la commande drush tapée sur tous les sites de l'installation un par un.
57
58
h3. Comment on le lance ?
59
60
Sur l'installation d6, on lance <code>drushall</code> n'importe où.
61
62
Sur l'installation d7, on lance <code>drushall_atest</code> n'importe où.
63
64
h3. À quoi ça ressemble ?
65
66
<pre>
67
<code class="bash">
68
#~/bin/sh
69
# si pas d'arguments :
70
if [ $# -lt 1 ]; then
71
  echo "usage: $0 <drush args>"
72
  exit 1
73
fi
74
75
cd [drupal directory]/sites
76
77
for x in $(ls -1 | grep -v 'all'); do
78
  if [ -d $x -a ! -L $x ]; then
79
    cd $x;
80
    echo $x
81
    drush $*
82
    cd -;
83
  fi
84
done
85
</code>
86
</pre>
87
88
h2. drushcronone
89
90
h3. Histoire
91
92
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_.
93
94
h3. Besoin
95
96
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.
97
98
h3. Usage
99
100
Donc pour exécuter le cron pour un seul site, il suffit de donner le nom du répertoire.
101
Exemple : <code>drushcronone assos.centrale-marseille.fr.cac13</code>
102
103
Q : Où est ce que ce script est le plus utilisé ?
104
105
R : Dans les tâches planifiés (crontab) bien sûr !
106
107
h2. dump.sh and co
108
109
Tous ces scripts se lancent n'importe où.
110
111
h3. Dump pour drupal 6
112
113
h4. Sauvegarder uniquement les tables d'un site
114
115
On a créé des scripts qui permettent de sauvegarder uniquement les tables associés à un site (et non toute la base).
116
117
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.
118
119
Ils **ressemblent** à :
120
<pre>
121
<code class="bash">
122
#récupération des tables du site dans le fichier liste_tables.temp
123
tables='_%'
124
liste="$1$tables"
125
126
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
127
128
#transformation de cette liste en une variable
129
var=$(cat liste_tables.temp)
130
131
#sauvegarde de toutes ces tables
132
suffixe="_dump.sql"
133
fichier="$1$suffixe"
134
135
mysqldump base_de_données -h serveur -u utilisateur --password=super_mot-de-passe $var > $fichier
136
137
#suppression du fichier temporaire utilisé
138
rm liste_tables.temp
139
</code>
140
</pre>
141
142
h4. Tout sauvegarder
143
144
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 :
145
<pre>
146
<code class="bash">
147
mysqldump nom_de_la_base -h serveur -u utilisateur --password=super_mot_de_passe_trop_bien > ~/chemin_vers_la/sauvegarde.dump.sql
148
</code>
149
</pre>
150
151
h3. Dump pour drupal 7
152
153
Pour drupal 7, on a un script plus complet : <code>dump_site_atest_all</code> qui repose sur @drush sql-dump@ :
154
155
<pre>
156
<code class="bash">
157
#!/bin/sh
158
PATH=/usr/local/bin:/usr/bin:/bin:/users/guest/assos/bin
159
160
sites_dir=~/htmltest/sites
161
backup_dir=~/Desktop/dump_d7
162
date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
163
164
cd $sites_dir
165
166
#Cherche dans le sous répertoire du répertoire courant sauf dans le sous répertoire
167
# all et dans les liens.
168
for dir in $(find . -maxdepth 1 -mindepth 1 -type d ! -name all )
169
do
170
    cd $dir
171
    drush sql-dump --result-file="$backup_dir/$dir.dump$date.sql"
172
    cd -
173
done
174
</code>
175
</pre>
176
177
Ce script s’exécute une fois par semaine.
178
179
h2. maj.sh
180
181
Ce script est principalement constitué d'une suite de commandes drush et d'appels à d'autres scripts du projet.
182
183
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]].
184
185
h3. Comment le lancer ?
186
187
<code>maj.sh</code> ou <code>maj_d7.sh</code>, n'importe où.
188
189
NB : il faut que le module _update_ soit activé sur tous les sites de l'installation pour que ce script fonctionne.
190
191
h2. usep
192
193
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é.
194
195
Pour le moment, il n'est fonctionnel que pour drupal 6, mais peut être adapté sans mal à drupal 7.
196
197
h3. Comment le lancer ?
198
199
Taper <code>usep projet</code> dans n'importe quel dossier de site de l'installation drupal 6.
200
201
h3. À quoi ça ressemble ?
202
203
(quelques  commentaires sont également dispo directement dans le script pour mieux comprendre son fonctionnement)
204
<pre>
205
<code class="bash">
206
#si pas d'argument donnés :
207
if [ $# -lt 1 ]; then
208
  echo "usage: $0 <drush args>"
209
  exit 1
210
fi
211
212
213
cd [drupal_directory]/sites
214
215
216
for x in $(ls -1 | grep -v 'all' | grep -v file-*); do
217
  if [ -d $x -a ! -L $x ]; then
218
    cd $x;
219
    if [ 1 = `drush pml --no-core --status=enabled | grep $1 | wc -l` ]; then
220
             echo $x; 
221
            fi
222
    cd -;
223
  fi
224
done
225
</code>
226
</pre>
227
228
h2. Taille.sh
229
230
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).
231
232
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.
233
234
h2. init_var.sh
235
236
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.
237
238
h3. Comment le lancer ?
239
240
Taper <code>init_var.sh</code> (ou <code>drush init</code>) dans le dossier du site.
241
242
h3. À quoi ça ressemble ?
243
244
<pre>
245
<code class="bash">
246
drush vset error_level 0 --yes
247
</code>
248
</pre>
249
250
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.
251
252
<pre>
253
<code class="php">
254
drush php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\; 
255
</code>
256
</pre>
257
258
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é.
259
260
<pre>
261
<code class="bash">
262
drush vset --always-set reverse_proxy TRUE
263
drush vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
264
</code>
265
</pre>
266
267
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.
268
<pre>
269
<code>
270
drush ev "variable_set('update_notify_emails', array('coucouuu@example.com'));"
271
</code>
272
</pre>
273
274
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)
275
Pour ne pas déranger les webmasters avec ceci, il faut mettre l'adresse du club drupal.
276
277
h2. reinit_var.sh
278
279
Ce script est utilisé pour réinitialiser des configurations et variables dangereuses sur tous les sites.
280
281
Des informations détaillées sont disponibles dans [[Scripts_et_taches_planifiees#la_réinitialisation_des_variables_dangeureuses|ce paragraphe]].
282
283
h3. Comment le lancer ?
284
285
Taper <code>reinit_var.sh</code> n'importe où.
286
287
h2. purge_des_sauvegardes.sh
288
289
Ce script permet de supprimer les vieilles sauvegardes de base de données, afin de libérer de l'espace disque.
290
291
Le script nettoie les sauvegardes de sites individuels et les sauvegardes des bases de données complètes d6 et d7.
292
293
h3. Comment le lancer ?
294
295
Il suffit de taper <code>purge_des_sauvegardes.sh</code> n'importe où dans le compte assos.
296
297
h3. À quoi ça ressemble ?
298
299
<pre>
300
<code class="bash">
301
cd [dump directory]
302
303
if [ $(ls -l | wc -l)  -gt YY ] ; then # s'il y a plus de YY fichiers alors
304
305
ls -tr | head -XX | xargs rm; #supprime les XX fichiers les plus vieux
306
307
else # sinon, alerte
308
309
echo "mon message d'erreur" | mail -s "[dump assos] mon message d'erreur" assos@centrale-marseille.fr ;
310
311
fi
312
</code>
313
</pre>
314
315
{{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 !))}}
316
317
h2. drushall_atest_logged
318
319
Pour faire des commandes drush et quelles soient logguées par site dans le dossier Desktop/log/d7/nom_du_site.log
320
321
h1. Anciennes entrées du crontab
322
323
Ces entrées ne sont plus nécessaires mais conservées pour archive :
324
325
* 03 03 * * *     /users/guest/assos/bin/drushall cron
326
* * */23 * * * echo "le crontab sas1 fonctionne, supprimer celui de scylla mnt !" | mail -s "sas1 is talking to you" assos