Project

General

Profile

Scripts et taches planifiees » History » Version 18

Julien Enselme, 08/04/2013 11:59 AM
Tout est dans le script

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 1 Julien Enselme
3 13 Florent Torregrosa
{{>toc}}
4 1 Julien Enselme
5 1 Julien Enselme
h1. Les tâches planifiées
6 1 Julien Enselme
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 3 Julien Enselme
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
11 3 Julien Enselme
# taper la commande pour voir le crontab <code>crontab -l</code>
12 3 Julien Enselme
# 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 3 Julien Enselme
14 1 Julien Enselme
Voici la liste des tâches effectuées régulièrement.
15 1 Julien Enselme
16 3 Julien Enselme
h2. La mise à jour des projets
17 1 Julien Enselme
18 1 Julien Enselme
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 3 Julien Enselme
# 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 1 Julien Enselme
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 3 Julien Enselme
# Vérifier s'il y a des nouvelles chaînes traduites disponibles
37 3 Julien Enselme
# Ajouter les nouvelles traductions disponibles
38 3 Julien Enselme
# 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 3 Julien Enselme
* les dossiers des sites
48 1 Julien Enselme
* les settings.php des sites
49 1 Julien Enselme
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 1 Julien Enselme
<code class="bash">
57 1 Julien Enselme
drushall_atest vset error_level 0 --yes
58 1 Julien Enselme
</code>
59 1 Julien Enselme
</pre>
60 1 Julien Enselme
61 1 Julien Enselme
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 1 Julien Enselme
<pre>
63 1 Julien Enselme
<code class="php">
64 1 Julien Enselme
drushall_atest php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\;
65 1 Julien Enselme
</code>
66 1 Julien Enselme
</pre>
67 1 Julien Enselme
68 1 Julien Enselme
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 1 Julien Enselme
70 1 Julien Enselme
<pre>
71 1 Julien Enselme
<code class="php">
72 1 Julien Enselme
drushall_atest vset --always-set reverse_proxy TRUE
73 1 Julien Enselme
drushall_atest vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
74 1 Julien Enselme
</code>
75 1 Julien Enselme
</pre>
76 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**
77 1 Julien Enselme
78 3 Julien Enselme
79 1 Julien Enselme
h3. Comment le lancer ?
80 1 Julien Enselme
81 3 Julien Enselme
N'importe où, taper <code>reinit_var.sh</code>.
82 1 Julien Enselme
83 3 Julien Enselme
h2. La sauvegarde des bases de données
84 1 Julien Enselme
85 3 Julien Enselme
Sur les installations d6 et d7 : une fois par semaine
86 1 Julien Enselme
87 6 Julien Enselme
On utilise les [[Scripts_et_taches_planifiees#Tout-sauvegarder|scripts de sauvegarde créés par le club Drupal]].
88 1 Julien Enselme
89 3 Julien Enselme
h2. La purge des sauvegardes de bdd
90 1 Julien Enselme
91 3 Julien Enselme
Sur les installations d6 et d7 : toutes les semaines
92 1 Julien Enselme
93 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.
94 1 Julien Enselme
95 1 Julien Enselme
h1. Liste des scripts à disposition
96 1 Julien Enselme
97 1 Julien Enselme
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos.
98 1 Julien Enselme
99 1 Julien Enselme
h2. ch_mdp
100 1 Julien Enselme
101 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).
102 1 Julien Enselme
103 11 Julien Enselme
Pour effectuer cette action, il faut donner l'ancien et le nouveau mot de passe en argument puis lancer le script.
104 1 Julien Enselme
105 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.
106 1 Julien Enselme
107 1 Julien Enselme
h3. Comment le lancer ?
108 1 Julien Enselme
109 3 Julien Enselme
Il suffit de taper <code>ch_mdp</code> n'importe où dans le compte assos.
110 1 Julien Enselme
111 1 Julien Enselme
h3. À quoi ça ressemble ?
112 1 Julien Enselme
113 1 Julien Enselme
<pre>
114 1 Julien Enselme
<code class="bash">
115 1 Julien Enselme
cd [drupal directory]/sites
116 1 Julien Enselme
117 3 Julien Enselme
for x in $(ls -1 | grep -v 'all'); do
118 3 Julien Enselme
	cd $x;
119 3 Julien Enselme
	fichier="settings.php" 
120 1 Julien Enselme
	chmod 600 $fichier
121 1 Julien Enselme
	mv $fichier $fichier.old
122 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
123 11 Julien Enselme
	sed "s/$1/$2/g" < $fichier.old > $fichier
124 1 Julien Enselme
	chmod 400 $fichier
125 15 Julien Enselme
	echo "Verifier que le site fonctionne et appuyer sur la touche Entree pour continuer"
126 15 Julien Enselme
	read fake_variable
127 1 Julien Enselme
	rm $fichier.old
128 1 Julien Enselme
	cd ..
129 15 Julien Enselme
done
130 11 Julien Enselme
</code>
131 11 Julien Enselme
</pre>
132 11 Julien Enselme
133 11 Julien Enselme
h2. chk_perm
134 11 Julien Enselme
135 11 Julien Enselme
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.
136 11 Julien Enselme
137 11 Julien Enselme
Il ressemble à ça :
138 11 Julien Enselme
<pre>
139 11 Julien Enselme
<code class="bash">
140 11 Julien Enselme
cd [drupal directory]/sites
141 11 Julien Enselme
142 11 Julien Enselme
for dir in $(find . -type d -maxdepth 1 ! -name all)
143 11 Julien Enselme
do
144 11 Julien Enselme
    chmod 755 $dir
145 11 Julien Enselme
    cd $dir
146 11 Julien Enselme
    chmod 400 settings.php
147 11 Julien Enselme
    cd -
148 11 Julien Enselme
done
149 1 Julien Enselme
</code>
150 1 Julien Enselme
</pre>
151 1 Julien Enselme
152 1 Julien Enselme
h2. dis_tiers.sh et en_tiers.sh
153 1 Julien Enselme
154 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).
155 1 Julien Enselme
156 1 Julien Enselme
En effet, il s'agit de deux étapes indipensables pour la migration d'un site.
157 1 Julien Enselme
158 1 Julien Enselme
h3. Comment les lancer ?
159 1 Julien Enselme
160 1 Julien Enselme
Il suffit de taper "dis_tiers.sh" ou "en_tiers.sh" dans le dossier du site en question.
161 1 Julien Enselme
162 1 Julien Enselme
h3. À quoi ça ressemble ?
163 1 Julien Enselme
164 1 Julien Enselme
<pre>
165 1 Julien Enselme
<code class="bash">
166 1 Julien Enselme
##dis_tiers.sh
167 1 Julien Enselme
#écrire le nom des modules non core dans un fichier
168 1 Julien Enselme
drush pml |grep -v Core* | grep Module | grep Enabled > fichier.temp
169 1 Julien Enselme
sed -e 's/\(.*(\)\(.*\)\().*\)/\2/' fichier.temp > modules_tiers.txt
170 1 Julien Enselme
#désactiver ces modules
171 1 Julien Enselme
for line in $(cat modules_tiers.txt); do drush dis -y "$line" ; done  
172 1 Julien Enselme
#effacer les fichiers créés
173 1 Julien Enselme
rm fichier.temp
174 1 Julien Enselme
175 1 Julien Enselme
##en_tiers.sh
176 1 Julien Enselme
#activer ces modules du fichier texte
177 1 Julien Enselme
for line in $(cat modules_tiers.txt); do drush en -y "$line" ; done 
178 1 Julien Enselme
</code>
179 1 Julien Enselme
</pre>
180 1 Julien Enselme
181 1 Julien Enselme
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 :
182 3 Julien Enselme
* Avoir des droits d'écriture sur le dossier du site pour l'exécuter
183 3 Julien Enselme
* 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.
184 1 Julien Enselme
185 1 Julien Enselme
h2. drushall and co
186 1 Julien Enselme
187 1 Julien Enselme
Pour administrer tous les sites du multi-site en une seule fois, nous avons créé un script à partir de drush.
188 1 Julien Enselme
Il s'utilise comme drush, mais effectue la commande drush tapée sur tous les sites de l'installation un par un.
189 1 Julien Enselme
190 1 Julien Enselme
h3. Comment on le lance ?
191 1 Julien Enselme
192 1 Julien Enselme
Sur l'installation d6, on lance <code>drushall</code> n'importe où.
193 1 Julien Enselme
194 1 Julien Enselme
Sur l'installation d7, on lance <code>drushall_atest</code> n'importe où.
195 1 Julien Enselme
196 1 Julien Enselme
h3. À quoi ça ressemble ?
197 1 Julien Enselme
198 1 Julien Enselme
<pre>
199 1 Julien Enselme
<code class="bash">
200 1 Julien Enselme
#~/bin/sh
201 1 Julien Enselme
# si pas d'arguments :
202 1 Julien Enselme
if [ $# -lt 1 ]; then
203 1 Julien Enselme
  echo "usage: $0 <drush args>"
204 1 Julien Enselme
  exit 1
205 1 Julien Enselme
fi
206 1 Julien Enselme
207 1 Julien Enselme
cd [drupal directory]/sites
208 1 Julien Enselme
209 1 Julien Enselme
for x in $(ls -1 | grep -v 'all'); do
210 1 Julien Enselme
  if [ -d $x -a ! -L $x ]; then
211 1 Julien Enselme
    cd $x;
212 1 Julien Enselme
    echo $x
213 1 Julien Enselme
    drush $*
214 1 Julien Enselme
    cd -;
215 1 Julien Enselme
  fi
216 1 Julien Enselme
done
217 1 Julien Enselme
</code>
218 1 Julien Enselme
</pre>
219 1 Julien Enselme
220 1 Julien Enselme
h2. drushcronone
221 1 Julien Enselme
222 1 Julien Enselme
h3. Histoire
223 1 Julien Enselme
224 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_.
225 1 Julien Enselme
226 1 Julien Enselme
h3. Besoin
227 1 Julien Enselme
228 1 Julien Enselme
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.
229 1 Julien Enselme
230 1 Julien Enselme
h3. Usage
231 1 Julien Enselme
232 1 Julien Enselme
Donc pour exécuter le cron pour un seul site, il suffit de donner le nom du répertoire.
233 3 Julien Enselme
Exemple : <code>drushcronone assos.centrale-marseille.fr.cac13</code>
234 1 Julien Enselme
235 1 Julien Enselme
Q : Où est ce que ce script est le plus utilisé ?
236 1 Julien Enselme
237 1 Julien Enselme
R : Dans les tâches planifiés (crontab) bien sûr !
238 1 Julien Enselme
239 8 Julien Enselme
h2. dump.sh and co
240 1 Julien Enselme
241 8 Julien Enselme
Tous ces scripts se lancent n'importe où.
242 1 Julien Enselme
243 8 Julien Enselme
h3. Dump pour drupal 6
244 3 Julien Enselme
245 8 Julien Enselme
h4. Sauvegarder uniquement les tables d'un site
246 8 Julien Enselme
247 1 Julien Enselme
On a créé des scripts qui permettent de sauvegarder uniquement les tables associés à un site (et non toute la base).
248 3 Julien Enselme
249 3 Julien Enselme
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.
250 3 Julien Enselme
251 3 Julien Enselme
Ils **ressemblent** à :
252 1 Julien Enselme
<pre>
253 1 Julien Enselme
<code class="bash">
254 1 Julien Enselme
#récupération des tables du site dans le fichier liste_tables.temp
255 1 Julien Enselme
tables='_%'
256 1 Julien Enselme
liste="$1$tables"
257 1 Julien Enselme
258 1 Julien Enselme
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
259 1 Julien Enselme
260 1 Julien Enselme
#transformation de cette liste en une variable
261 1 Julien Enselme
var=$(cat liste_tables.temp)
262 1 Julien Enselme
263 1 Julien Enselme
#sauvegarde de toutes ces tables
264 1 Julien Enselme
suffixe="_dump.sql"
265 1 Julien Enselme
fichier="$1$suffixe"
266 1 Julien Enselme
267 1 Julien Enselme
mysqldump base_de_données -h serveur -u utilisateur --password=super_mot-de-passe $var > $fichier
268 1 Julien Enselme
269 1 Julien Enselme
#suppression du fichier temporaire utilisé
270 1 Julien Enselme
rm liste_tables.temp
271 1 Julien Enselme
</code>
272 1 Julien Enselme
</pre>
273 1 Julien Enselme
274 8 Julien Enselme
h4. Tout sauvegarder
275 1 Julien Enselme
276 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 :
277 1 Julien Enselme
<pre>
278 1 Julien Enselme
<code class="bash">
279 1 Julien Enselme
mysqldump nom_de_la_base -h serveur -u utilisateur --password=super_mot_de_passe_trop_bien > ~/chemin_vers_la/sauvegarde.dump.sql
280 1 Julien Enselme
</code>
281 1 Julien Enselme
</pre>
282 1 Julien Enselme
283 8 Julien Enselme
h3. Dump pour drupal 7
284 1 Julien Enselme
285 8 Julien Enselme
Pour drupal 7, on a un script plus complet : <code>dump_site_atest_all</code> qui repose sur @drush sql-dump@ :
286 1 Julien Enselme
287 8 Julien Enselme
<pre>
288 8 Julien Enselme
<code class="bash">
289 8 Julien Enselme
#!/bin/sh
290 8 Julien Enselme
PATH=/usr/local/bin:/usr/bin:/bin:/users/guest/assos/bin
291 8 Julien Enselme
292 8 Julien Enselme
sites_dir=~/htmltest/sites
293 8 Julien Enselme
backup_dir=~/Desktop/dump_d7
294 8 Julien Enselme
date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
295 8 Julien Enselme
296 8 Julien Enselme
cd $sites_dir
297 8 Julien Enselme
298 8 Julien Enselme
#Cherche dans le sous répertoire du répertoire courant sauf dans le sous répertoire
299 8 Julien Enselme
# all et dans les liens.
300 8 Julien Enselme
for dir in $(find . -maxdepth 1 -mindepth 1 -type d ! -name all )
301 8 Julien Enselme
do
302 8 Julien Enselme
    cd $dir
303 8 Julien Enselme
    drush sql-dump --result-file="$backup_dir/$dir.dump$date.sql"
304 8 Julien Enselme
    cd -
305 8 Julien Enselme
done
306 8 Julien Enselme
</code>
307 8 Julien Enselme
</pre>
308 8 Julien Enselme
309 8 Julien Enselme
Ce script s’exécute une fois par semaine.
310 1 Julien Enselme
311 1 Julien Enselme
h2. maj.sh
312 1 Julien Enselme
313 3 Julien Enselme
Ce script est principalement constitué d'une suite de commandes drush et d'appels à d'autres scripts du projet.
314 1 Julien Enselme
315 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]].
316 1 Julien Enselme
317 1 Julien Enselme
h3. Comment le lancer ?
318 1 Julien Enselme
319 1 Julien Enselme
<code>maj.sh</code> ou <code>maj_d7.sh</code>, n'importe où.
320 1 Julien Enselme
321 3 Julien Enselme
NB : il faut que le module _update_ soit activé sur tous les sites de l'installation pour que ce script fonctionne.
322 1 Julien Enselme
323 1 Julien Enselme
h2. usep
324 1 Julien Enselme
325 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é.
326 1 Julien Enselme
327 3 Julien Enselme
Pour le moment, il n'est fonctionnel que pour drupal 6, mais peut être adapté sans mal à drupal 7.
328 3 Julien Enselme
329 1 Julien Enselme
h3. Comment le lancer ?
330 1 Julien Enselme
331 1 Julien Enselme
Taper <code>usep projet</code> dans n'importe quel dossier de site de l'installation drupal 6.
332 1 Julien Enselme
333 1 Julien Enselme
h3. À quoi ça ressemble ?
334 1 Julien Enselme
335 1 Julien Enselme
(quelques  commentaires sont également dispo directement dans le script pour mieux comprendre son fonctionnement)
336 1 Julien Enselme
<pre>
337 1 Julien Enselme
<code class="bash">
338 1 Julien Enselme
#si pas d'argument donnés :
339 1 Julien Enselme
if [ $# -lt 1 ]; then
340 1 Julien Enselme
  echo "usage: $0 <drush args>"
341 1 Julien Enselme
  exit 1
342 1 Julien Enselme
fi
343 1 Julien Enselme
344 1 Julien Enselme
345 1 Julien Enselme
cd [drupal_directory]/sites
346 1 Julien Enselme
347 1 Julien Enselme
348 1 Julien Enselme
for x in $(ls -1 | grep -v 'all' | grep -v file-*); do
349 1 Julien Enselme
  if [ -d $x -a ! -L $x ]; then
350 1 Julien Enselme
    cd $x;
351 1 Julien Enselme
    if [ 1 = `drush pml --no-core --status=enabled | grep $1 | wc -l` ]; then
352 1 Julien Enselme
             echo $x; 
353 1 Julien Enselme
            fi
354 1 Julien Enselme
    cd -;
355 1 Julien Enselme
  fi
356 1 Julien Enselme
done
357 1 Julien Enselme
</code>
358 1 Julien Enselme
</pre>
359 1 Julien Enselme
360 3 Julien Enselme
h2. Taille.sh
361 1 Julien Enselme
362 1 Julien Enselme
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).
363 1 Julien Enselme
364 1 Julien Enselme
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.
365 1 Julien Enselme
366 1 Julien Enselme
h2. init_var.sh
367 1 Julien Enselme
368 1 Julien Enselme
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.
369 1 Julien Enselme
370 1 Julien Enselme
h3. Comment le lancer ?
371 1 Julien Enselme
372 1 Julien Enselme
Taper <code>init_var.sh</code> (ou <code>drush init</code>) dans le dossier du site.
373 1 Julien Enselme
374 1 Julien Enselme
h3. À quoi ça ressemble ?
375 1 Julien Enselme
376 1 Julien Enselme
<pre>
377 1 Julien Enselme
<code class="bash">
378 1 Julien Enselme
drush vset error_level 0 --yes
379 1 Julien Enselme
</code>
380 1 Julien Enselme
</pre>
381 1 Julien Enselme
382 1 Julien Enselme
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.
383 1 Julien Enselme
384 1 Julien Enselme
<pre>
385 1 Julien Enselme
<code class="php">
386 1 Julien Enselme
drush php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\; 
387 1 Julien Enselme
</code>
388 1 Julien Enselme
</pre>
389 1 Julien Enselme
390 1 Julien Enselme
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é.
391 1 Julien Enselme
392 1 Julien Enselme
<pre>
393 1 Julien Enselme
<code class="bash">
394 1 Julien Enselme
drush vset --always-set reverse_proxy TRUE
395 1 Julien Enselme
drush vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
396 1 Julien Enselme
</code>
397 1 Julien Enselme
</pre>
398 1 Julien Enselme
399 1 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. Pour plus d'info, voir le mail de dgeo du 15 mai 2012.
400 1 Julien Enselme
<pre>
401 4 Julien Enselme
<code>
402 1 Julien Enselme
drush ev "variable_set('update_notify_emails', array('coucouuu@example.com'));"
403 1 Julien Enselme
</code>
404 1 Julien Enselme
</pre>
405 1 Julien Enselme
406 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)
407 1 Julien Enselme
Pour ne pas déranger les webmasters avec ceci, il faut mettre l'adresse du club drupal.
408 1 Julien Enselme
409 1 Julien Enselme
h2. reinit_var.sh
410 1 Julien Enselme
411 1 Julien Enselme
Ce script est utilisé pour réinitialiser des configurations et variables dangereuses sur tous les sites.
412 1 Julien Enselme
413 3 Julien Enselme
Des informations détaillées sont disponibles dans [[Scripts_et_taches_planifiees#la_réinitialisation_des_variables_dangeureuses|ce paragraphe]].
414 3 Julien Enselme
415 1 Julien Enselme
h3. Comment le lancer ?
416 1 Julien Enselme
417 1 Julien Enselme
Taper <code>reinit_var.sh</code> n'importe où.
418 1 Julien Enselme
419 1 Julien Enselme
h2. purge_des_sauvegardes.sh
420 1 Julien Enselme
421 1 Julien Enselme
Ce script permet de supprimer les vieilles sauvegardes de base de données, afin de libérer de l'espace disque.
422 1 Julien Enselme
423 1 Julien Enselme
Le script nettoie les sauvegardes de sites individuels et les sauvegardes des bases de données complètes d6 et d7.
424 1 Julien Enselme
425 1 Julien Enselme
h3. Comment le lancer ?
426 1 Julien Enselme
427 3 Julien Enselme
Il suffit de taper <code>purge_des_sauvegardes.sh</code> n'importe où dans le compte assos.
428 1 Julien Enselme
429 1 Julien Enselme
h3. À quoi ça ressemble ?
430 1 Julien Enselme
431 1 Julien Enselme
<pre>
432 1 Julien Enselme
<code class="bash">
433 1 Julien Enselme
cd [dump directory]
434 1 Julien Enselme
435 1 Julien Enselme
if [ $(ls -l | wc -l)  -gt YY ] ; then # s'il y a plus de YY fichiers alors
436 1 Julien Enselme
437 1 Julien Enselme
ls -tr | head -XX | xargs rm; #supprime les XX fichiers les plus vieux
438 1 Julien Enselme
439 1 Julien Enselme
else # sinon, alerte
440 1 Julien Enselme
441 1 Julien Enselme
echo "mon message d'erreur" | mail -s "[dump assos] mon message d'erreur" assos@centrale-marseille.fr ;
442 1 Julien Enselme
443 1 Julien Enselme
fi
444 1 Julien Enselme
</code>
445 1 Julien Enselme
</pre>
446 1 Julien Enselme
447 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 !))}}
448 1 Julien Enselme
449 10 Florent Torregrosa
h2. drushall_atest_logged
450 9 Florent Torregrosa
451 9 Florent Torregrosa
Pour faire des commandes drush et quelles soient logguées par site dans le dossier Desktop/log/d7/nom_du_site.log
452 9 Florent Torregrosa
453 1 Julien Enselme
h1. Liste des alias drush à disposition
454 1 Julien Enselme
455 12 Florent Torregrosa
{{warning(à ne plus utiliser : passer par les scripts)}}
456 12 Florent Torregrosa
457 1 Julien Enselme
Les alias drush sont hébergés dans le fichier drushrc.php du .drush du compte assos.
458 1 Julien Enselme
459 1 Julien Enselme
h2. drush init
460 1 Julien Enselme
461 1 Julien Enselme
h3. À quoi ça sert ?
462 1 Julien Enselme
463 3 Julien Enselme
Ce script initialise les variables dangereuses, en faisant appel au scrit [[Scripts_et_taches_planifiees#init_var.sh|init_var.sh]]. Les deux peuvent s'utiliser indifféremment.
464 1 Julien Enselme
465 1 Julien Enselme
h3. Comment l'utiliser ?
466 1 Julien Enselme
467 1 Julien Enselme
Dans le dossier d'un site (drupal 7 uniquement), taper <code>drush init</code> (ou <code>init_var.sh</code>).
468 1 Julien Enselme
469 1 Julien Enselme
Pour initialiser les variables de tous les sites (drupal 7 uniquement), dans le dossier sites, taper <code>drushall_atest init</code>
470 1 Julien Enselme
471 1 Julien Enselme
h2. drush maj_trad
472 1 Julien Enselme
473 1 Julien Enselme
h3. À quoi ça sert ?
474 1 Julien Enselme
475 3 Julien Enselme
Ce script met à jour les traductions, en suivant [[Scripts_et_taches_planifiees#la_mise_à_jour_des_traductions|la procédure décrite ici]].
476 1 Julien Enselme
477 1 Julien Enselme
h3. Comment l'utiliser ?
478 1 Julien Enselme
479 1 Julien Enselme
Dans le dossier d'un site (drupal 6 ou 7), taper <code>drush maj_trad</code>.
480 1 Julien Enselme
481 2 Julien Enselme
Pour mettre à jour les traductions de tous les sites (drupal 7 ou 6), dans le dossier sites, taper <code>drushall maj_trad</code> (ou <code>drushall_atest maj_trad</code> selon le cas).
482 14 Julien Enselme
483 14 Julien Enselme
h1. Anciennes entrées du crontab
484 14 Julien Enselme
485 14 Julien Enselme
Ces entrées ne sont plus nécessaires mais conservées pour archive :
486 14 Julien Enselme
487 16 Julien Enselme
* 03 03 * * *     /users/guest/assos/bin/drushall cron
488 16 Julien Enselme
* * */23 * * * echo "le crontab sas1 fonctionne, supprimer celui de scylla mnt !" | mail -s "sas1 is talking to you" assos