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 |