Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 23

Florent Torregrosa, 04/08/2013 16:22
enleve des parties pour les mettre aux archives

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 réinitialisation des variables dangeureuses
17 1 Julien Enselme
18 3 Julien Enselme
Sur l'installation d7 principalement : une fois par semaine
19 1 Julien Enselme
20 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 :
21 1 Julien Enselme
<pre>
22 1 Julien Enselme
<code class="bash">
23 1 Julien Enselme
drushall_atest vset error_level 0 --yes
24 1 Julien Enselme
</code>
25 1 Julien Enselme
</pre>
26 1 Julien Enselme
27 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.
28 1 Julien Enselme
<pre>
29 1 Julien Enselme
<code class="php">
30 1 Julien Enselme
drushall_atest php-eval variable_set\(\'allow_authorize_operations\',FALSE\)\;
31 1 Julien Enselme
</code>
32 1 Julien Enselme
</pre>
33 1 Julien Enselme
34 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é.
35 1 Julien Enselme
36 21 Florent Torregrosa
<pre
37 1 Julien Enselme
<code class="php">
38 1 Julien Enselme
drushall_atest vset --always-set reverse_proxy TRUE
39 1 Julien Enselme
drushall_atest vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
40 1 Julien Enselme
</code>
41 1 Julien Enselme
</pre>
42 21 Florent Torregrosa
43 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**
44 1 Julien Enselme
45 3 Julien Enselme
46 1 Julien Enselme
h3. Comment le lancer ?
47 1 Julien Enselme
48 3 Julien Enselme
N'importe où, taper <code>reinit_var.sh</code>.
49 1 Julien Enselme
50 3 Julien Enselme
h2. La sauvegarde des bases de données
51 1 Julien Enselme
52 3 Julien Enselme
Sur les installations d6 et d7 : une fois par semaine
53 1 Julien Enselme
54 6 Julien Enselme
On utilise les [[Scripts_et_taches_planifiees#Tout-sauvegarder|scripts de sauvegarde créés par le club Drupal]].
55 1 Julien Enselme
56 3 Julien Enselme
h2. La purge des sauvegardes de bdd
57 1 Julien Enselme
58 3 Julien Enselme
Sur les installations d6 et d7 : toutes les semaines
59 1 Julien Enselme
60 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.
61 1 Julien Enselme
62 1 Julien Enselme
h1. Liste des scripts à disposition
63 1 Julien Enselme
64 1 Julien Enselme
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos.
65 1 Julien Enselme
66 1 Julien Enselme
h2. all-reset-permissions.sh
67 21 Florent Torregrosa
68 21 Florent Torregrosa
<pre>
69 21 Florent Torregrosa
<code class="php">
70 21 Florent Torregrosa
#!/bin/sh
71 21 Florent Torregrosa
72 21 Florent Torregrosa
. scripts-config.sh
73 21 Florent Torregrosa
74 21 Florent Torregrosa
# This script puts the correct permissions to sites folders, settings.php and scripts.
75 21 Florent Torregrosa
76 21 Florent Torregrosa
######### drupal 6
77 21 Florent Torregrosa
for dir in `find $d6_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all ! -name images ! -name languages` ; do
78 21 Florent Torregrosa
    chmod 755 $dir
79 21 Florent Torregrosa
    chmod 400 $dir/settings.php
80 21 Florent Torregrosa
done
81 21 Florent Torregrosa
82 21 Florent Torregrosa
######### drupal 7
83 21 Florent Torregrosa
for dir in `find $d7_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all` ; do
84 21 Florent Torregrosa
    chmod 755 $dir
85 21 Florent Torregrosa
    chmod 400 $dir/settings.php
86 21 Florent Torregrosa
done
87 21 Florent Torregrosa
88 21 Florent Torregrosa
####### bin
89 21 Florent Torregrosa
chmod -R 700 $dir_scripts
90 21 Florent Torregrosa
</code>
91 21 Florent Torregrosa
</pre>
92 21 Florent Torregrosa
93 1 Julien Enselme
h2. contrib-usage.sh
94 21 Florent Torregrosa
95 21 Florent Torregrosa
<pre>
96 21 Florent Torregrosa
<code class="php">
97 21 Florent Torregrosa
#!/bin/sh
98 21 Florent Torregrosa
99 21 Florent Torregrosa
. scripts-config.sh
100 21 Florent Torregrosa
. scripts-utils.sh
101 21 Florent Torregrosa
102 21 Florent Torregrosa
# ARGS: Drupal_version, project_status, project_name
103 21 Florent Torregrosa
# List sites that have the project_name with the corresponding project_status.
104 21 Florent Torregrosa
105 21 Florent Torregrosa
check_arguments $# 3
106 21 Florent Torregrosa
107 21 Florent Torregrosa
if [ $1 = d6 ] ; then
108 21 Florent Torregrosa
    cd $d6_dir_sites
109 21 Florent Torregrosa
else
110 21 Florent Torregrosa
    cd $d7_dir_sites
111 21 Florent Torregrosa
fi
112 21 Florent Torregrosa
113 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images` ; do
114 21 Florent Torregrosa
    # List non-core projects that correspond to the status.
115 21 Florent Torregrosa
    # Keep project_name if listed.
116 21 Florent Torregrosa
    # Count line result. 0 if not listed or 1 if listed.
117 21 Florent Torregrosa
	# Print site_dir if listed.
118 21 Florent Torregrosa
119 21 Florent Torregrosa
    cd $dir;
120 21 Florent Torregrosa
	if [ 1 -eq `drush pml --no-core --status=$2 | grep $3 | wc -l` ] ; then
121 21 Florent Torregrosa
        echo $dir; 
122 21 Florent Torregrosa
    fi
123 21 Florent Torregrosa
done
124 21 Florent Torregrosa
</code>
125 21 Florent Torregrosa
</pre>
126 21 Florent Torregrosa
127 1 Julien Enselme
h2. d6-all-drush.sh
128 21 Florent Torregrosa
129 21 Florent Torregrosa
<pre>
130 21 Florent Torregrosa
<code class="php">
131 21 Florent Torregrosa
#!/bin/sh
132 21 Florent Torregrosa
133 21 Florent Torregrosa
. scripts-config.sh
134 21 Florent Torregrosa
. scripts-utils.sh
135 21 Florent Torregrosa
136 21 Florent Torregrosa
# ARGS: drush_command
137 21 Florent Torregrosa
138 21 Florent Torregrosa
check_arguments $# 1
139 21 Florent Torregrosa
140 21 Florent Torregrosa
for dir in `find $d6_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images` ; do
141 21 Florent Torregrosa
    cd $dir
142 21 Florent Torregrosa
    echo $dir
143 21 Florent Torregrosa
    drush $*
144 21 Florent Torregrosa
done
145 21 Florent Torregrosa
</code>
146 21 Florent Torregrosa
</pre>
147 21 Florent Torregrosa
148 1 Julien Enselme
h2. d6-all-dump-full.sh
149 21 Florent Torregrosa
150 21 Florent Torregrosa
<pre>
151 21 Florent Torregrosa
<code class="php">
152 21 Florent Torregrosa
#!/bin/sh
153 21 Florent Torregrosa
154 21 Florent Torregrosa
. scripts-config.sh
155 21 Florent Torregrosa
156 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
157 21 Florent Torregrosa
158 21 Florent Torregrosa
# Dump D6 database with webassos user.
159 21 Florent Torregrosa
mysqldump --single-transaction webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY > $d6_dir_full_backup/webassos/$current_date.webassos.sql
160 21 Florent Torregrosa
161 21 Florent Torregrosa
# Dump D6 form database with forum user.
162 21 Florent Torregrosa
mysqldump forum -h myweb.serv.int -u forum --password=dtcAltF12 > $d6_dir_full_backup/forum/$current_date.forum.sql
163 21 Florent Torregrosa
</code>
164 21 Florent Torregrosa
</pre>
165 21 Florent Torregrosa
166 1 Julien Enselme
h2. d6-all-update-contrib.sh
167 21 Florent Torregrosa
168 21 Florent Torregrosa
<pre>
169 21 Florent Torregrosa
<code class="php">
170 21 Florent Torregrosa
#!/bin/sh
171 21 Florent Torregrosa
172 21 Florent Torregrosa
. scripts-config.sh
173 21 Florent Torregrosa
174 21 Florent Torregrosa
d6-all-drush.sh -y en update
175 21 Florent Torregrosa
# Launch cron to check for updates.
176 21 Florent Torregrosa
d6-all-drush.sh -q cron
177 21 Florent Torregrosa
178 21 Florent Torregrosa
d6-all-drush.sh cc all
179 21 Florent Torregrosa
d6-all-dump-full.sh
180 21 Florent Torregrosa
181 21 Florent Torregrosa
d6-all-drush.sh -y upc --no-core
182 21 Florent Torregrosa
d6-all-drush.sh -y updb
183 21 Florent Torregrosa
184 21 Florent Torregrosa
d6-all-drush.sh -y dis update
185 21 Florent Torregrosa
186 21 Florent Torregrosa
# Cron report.
187 21 Florent Torregrosa
d6-all-drush.sh cron
188 21 Florent Torregrosa
</code>
189 21 Florent Torregrosa
</pre>
190 21 Florent Torregrosa
191 1 Julien Enselme
h2. d6-dump-individual.sh
192 21 Florent Torregrosa
193 21 Florent Torregrosa
<pre>
194 21 Florent Torregrosa
<code class="php">
195 21 Florent Torregrosa
#!/bin/sh
196 21 Florent Torregrosa
197 21 Florent Torregrosa
. scripts-config.sh
198 21 Florent Torregrosa
199 21 Florent Torregrosa
# ARGS: auto or manual, site_prefix
200 21 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
201 21 Florent Torregrosa
202 21 Florent Torregrosa
cd $dir_individual_backup
203 21 Florent Torregrosa
204 21 Florent Torregrosa
#récupération des tables du site dans le fichier liste_tables.temp
205 21 Florent Torregrosa
tables='_%'
206 21 Florent Torregrosa
liste="$1$tables"
207 21 Florent Torregrosa
208 21 Florent Torregrosa
mysql -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY -BNe "show tables like '"$liste"'" webassos | tr '\r\n' ' ' > liste_tables.temp
209 21 Florent Torregrosa
210 21 Florent Torregrosa
#transformation de cette liste en une variable
211 21 Florent Torregrosa
var=$(cat liste_tables.temp)
212 21 Florent Torregrosa
213 21 Florent Torregrosa
#sauvegarde de toutes ces tables
214 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
215 21 Florent Torregrosa
suffixe="_dump$current_date.sql"
216 21 Florent Torregrosa
fichier="$1$suffixe"
217 21 Florent Torregrosa
218 21 Florent Torregrosa
if [ $1 = 'auto' ] ; then
219 21 Florent Torregrosa
        mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_auto_backup/$fichier
220 21 Florent Torregrosa
    else
221 21 Florent Torregrosa
        mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_manual_backup/$fichier
222 21 Florent Torregrosa
    fi
223 21 Florent Torregrosa
224 21 Florent Torregrosa
#suppression du fichier temporaire utilisé
225 21 Florent Torregrosa
rm liste_tables.temp
226 21 Florent Torregrosa
</code>
227 21 Florent Torregrosa
</pre>
228 21 Florent Torregrosa
229 1 Julien Enselme
h2. d6-reset-variables.sh
230 21 Florent Torregrosa
231 21 Florent Torregrosa
<pre>
232 21 Florent Torregrosa
<code class="php">
233 21 Florent Torregrosa
#!/bin/sh
234 21 Florent Torregrosa
235 21 Florent Torregrosa
. scripts-config.sh
236 21 Florent Torregrosa
237 21 Florent Torregrosa
cd $d6_dir_sites
238 21 Florent Torregrosa
d6-all-drush.sh vset --always-set reverse_proxy TRUE
239 21 Florent Torregrosa
d6-all-drush.sh vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
240 21 Florent Torregrosa
drush @sites ev "variable_set('update_notify_emails', array($email_multi_assos));" --yes
241 21 Florent Torregrosa
</code>
242 21 Florent Torregrosa
</pre>
243 21 Florent Torregrosa
244 1 Julien Enselme
h2. d7-all-drush-logged.sh
245 21 Florent Torregrosa
246 21 Florent Torregrosa
<pre>
247 21 Florent Torregrosa
<code class="php">
248 21 Florent Torregrosa
#!/bin/sh
249 21 Florent Torregrosa
250 21 Florent Torregrosa
. scripts-config.sh
251 21 Florent Torregrosa
. scripts-utils.sh
252 21 Florent Torregrosa
253 21 Florent Torregrosa
# ARGS: drush_command
254 21 Florent Torregrosa
255 21 Florent Torregrosa
check_arguments $# 1
256 21 Florent Torregrosa
257 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
258 21 Florent Torregrosa
    cd $dir
259 21 Florent Torregrosa
    current_date=`date "+%Y-%m-%d_%Hh:%Mm"`
260 21 Florent Torregrosa
    echo "======$current_date======" >> $d7_dir_log/$x.log
261 21 Florent Torregrosa
    echo "Arguments are: $* " >> $d7_dir_log/$x.log
262 21 Florent Torregrosa
    drush $* >> $d7_dir_log/$x.log
263 21 Florent Torregrosa
    #To have the same caracters limit we needed 'end' that have 4 caracters, we used the Croate language for this ! LOL 
264 21 Florent Torregrosa
    echo -e "=============KRAJ=============\n" >> $d7_dir_log/$x.log
265 21 Florent Torregrosa
done
266 21 Florent Torregrosa
</code>
267 21 Florent Torregrosa
</pre>
268 21 Florent Torregrosa
269 1 Julien Enselme
h2. d7-all-drush.sh
270 21 Florent Torregrosa
271 21 Florent Torregrosa
<pre>
272 21 Florent Torregrosa
<code class="php">
273 21 Florent Torregrosa
#!/bin/sh
274 21 Florent Torregrosa
275 21 Florent Torregrosa
. scripts-config.sh
276 21 Florent Torregrosa
. scripts-utils.sh
277 21 Florent Torregrosa
278 21 Florent Torregrosa
# ARGS: drush_command
279 21 Florent Torregrosa
280 21 Florent Torregrosa
check_arguments $# 1
281 21 Florent Torregrosa
282 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
283 21 Florent Torregrosa
    cd $dir
284 21 Florent Torregrosa
    echo $dir
285 21 Florent Torregrosa
    drush $*
286 21 Florent Torregrosa
done
287 21 Florent Torregrosa
</code>
288 21 Florent Torregrosa
</pre>
289 21 Florent Torregrosa
290 1 Julien Enselme
h2. d7-all-dump-full.sh
291 21 Florent Torregrosa
292 21 Florent Torregrosa
<pre>
293 21 Florent Torregrosa
<code class="php">
294 21 Florent Torregrosa
#!/bin/sh
295 21 Florent Torregrosa
296 21 Florent Torregrosa
. scripts-config.sh
297 21 Florent Torregrosa
298 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
299 21 Florent Torregrosa
300 21 Florent Torregrosa
# Dump D7 databases at once.
301 21 Florent Torregrosa
mysqldump -h $db_server -u $db_user -pNoNo82jJ --all-databases > $d7_dir_full_backup/myassos/$current_date.d7_full.sql
302 21 Florent Torregrosa
</code>
303 21 Florent Torregrosa
</pre>
304 21 Florent Torregrosa
305 1 Julien Enselme
h2. d7-all-dump-individual.sh
306 21 Florent Torregrosa
307 21 Florent Torregrosa
<pre>
308 21 Florent Torregrosa
<code class="php">
309 21 Florent Torregrosa
#!/bin/sh
310 21 Florent Torregrosa
311 21 Florent Torregrosa
. scripts-config.sh
312 21 Florent Torregrosa
313 21 Florent Torregrosa
# ARGS: auto or manual
314 21 Florent Torregrosa
315 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
316 21 Florent Torregrosa
317 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
318 21 Florent Torregrosa
    cd $dir
319 21 Florent Torregrosa
    drush cc all
320 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
321 21 Florent Torregrosa
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
322 21 Florent Torregrosa
    else
323 21 Florent Torregrosa
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
324 21 Florent Torregrosa
    fi
325 21 Florent Torregrosa
done
326 21 Florent Torregrosa
</code>
327 21 Florent Torregrosa
</pre>
328 21 Florent Torregrosa
329 1 Julien Enselme
h2. d7-all-releases-info.sh
330 21 Florent Torregrosa
331 21 Florent Torregrosa
<pre>
332 21 Florent Torregrosa
<code class="php">
333 21 Florent Torregrosa
#!/bin/sh
334 21 Florent Torregrosa
335 21 Florent Torregrosa
. scripts-config.sh
336 21 Florent Torregrosa
337 21 Florent Torregrosa
# List version of a module or theme that exists in sites/all/*
338 21 Florent Torregrosa
# and all versions that are available for same project on drupal.org
339 21 Florent Torregrosa
340 21 Florent Torregrosa
# modules
341 21 Florent Torregrosa
for dir in `find $d7_dir_sites/all/modules -maxdepth 1 -mindepth 1 -type d` ; do
342 21 Florent Torregrosa
    drush pm-releases $dir
343 21 Florent Torregrosa
done
344 21 Florent Torregrosa
345 21 Florent Torregrosa
# themes
346 21 Florent Torregrosa
for dir in `find $d7_dir_sites/all/themes -maxdepth 1 -mindepth 1 -type d` ; do
347 21 Florent Torregrosa
    drush pm-releases $dir
348 21 Florent Torregrosa
done
349 21 Florent Torregrosa
</code>
350 21 Florent Torregrosa
</pre>
351 21 Florent Torregrosa
352 1 Julien Enselme
h2. d7-all-reset-variables.sh
353 21 Florent Torregrosa
354 21 Florent Torregrosa
<pre>
355 21 Florent Torregrosa
<code class="php">
356 21 Florent Torregrosa
#!/bin/sh
357 21 Florent Torregrosa
358 21 Florent Torregrosa
. scripts-config.sh
359 21 Florent Torregrosa
360 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all` ; do
361 21 Florent Torregrosa
    cd $dir
362 21 Florent Torregrosa
    echo $dir
363 21 Florent Torregrosa
    d7-reset-variables.sh
364 21 Florent Torregrosa
done
365 21 Florent Torregrosa
</code>
366 21 Florent Torregrosa
</pre>
367 21 Florent Torregrosa
368 1 Julien Enselme
h2. d7-all-security-review.sh
369 21 Florent Torregrosa
370 21 Florent Torregrosa
<pre>
371 21 Florent Torregrosa
<code class="php">
372 21 Florent Torregrosa
#!/bin/sh
373 21 Florent Torregrosa
374 21 Florent Torregrosa
. scripts-config.sh
375 21 Florent Torregrosa
376 21 Florent Torregrosa
# grep -v success to keep site_name and error lines.
377 21 Florent Torregrosa
bash -c 'd7-all-drush.sh security-review |& grep -v success | mail -s "Security review" $email_multi_assos'
378 21 Florent Torregrosa
</code>
379 21 Florent Torregrosa
</pre>
380 21 Florent Torregrosa
381 1 Julien Enselme
h2. d7-all-update-contrib.sh
382 21 Florent Torregrosa
383 21 Florent Torregrosa
<pre>
384 21 Florent Torregrosa
<code class="php">
385 21 Florent Torregrosa
#!/bin/sh
386 21 Florent Torregrosa
387 21 Florent Torregrosa
. scripts-config.sh
388 21 Florent Torregrosa
389 21 Florent Torregrosa
d7-all-drush.sh -y en update
390 21 Florent Torregrosa
# Launch cron to check for updates.
391 21 Florent Torregrosa
d7-all-drush.sh -q cron
392 21 Florent Torregrosa
393 21 Florent Torregrosa
d7-all-drush.sh cc all
394 21 Florent Torregrosa
d7-all-dump-individual.sh
395 21 Florent Torregrosa
396 21 Florent Torregrosa
d7-all-drush-logged.sh -y upc --no-core
397 21 Florent Torregrosa
d7-all-drush.sh -y updb
398 21 Florent Torregrosa
399 21 Florent Torregrosa
d7-all-drush.sh -y dis update
400 21 Florent Torregrosa
401 21 Florent Torregrosa
# Cron report.
402 21 Florent Torregrosa
d7-all-drush.sh cron | mail -s "Cron report: d7-all-update-contrib.sh" $email_multi_assos
403 21 Florent Torregrosa
</code>
404 21 Florent Torregrosa
</pre>
405 21 Florent Torregrosa
406 1 Julien Enselme
h2. d7-all-update-localisation.sh
407 21 Florent Torregrosa
408 21 Florent Torregrosa
<pre>
409 21 Florent Torregrosa
<code class="php">
410 21 Florent Torregrosa
#!/bin/sh
411 21 Florent Torregrosa
412 21 Florent Torregrosa
. scripts-config.sh
413 21 Florent Torregrosa
414 21 Florent Torregrosa
d7-all-drush.sh -y en l10n_update
415 21 Florent Torregrosa
d7-all-drush.sh l10n-update-refresh
416 21 Florent Torregrosa
d7-all-drush.sh l10n-update
417 21 Florent Torregrosa
d7-all-drush.sh -y dis l10n_update
418 21 Florent Torregrosa
</code>
419 21 Florent Torregrosa
</pre>
420 21 Florent Torregrosa
421 1 Julien Enselme
h2. d7-create-site.sh
422 21 Florent Torregrosa
423 21 Florent Torregrosa
<pre>
424 21 Florent Torregrosa
<code class="php">
425 21 Florent Torregrosa
#!/bin/sh
426 21 Florent Torregrosa
427 21 Florent Torregrosa
. scripts-config.sh
428 21 Florent Torregrosa
. scripts-config-site.sh $1
429 21 Florent Torregrosa
. scripts-utils.sh
430 21 Florent Torregrosa
431 21 Florent Torregrosa
# ARGS: site name
432 21 Florent Torregrosa
433 21 Florent Torregrosa
######## Exceptions
434 21 Florent Torregrosa
check_arguments $# 1
435 21 Florent Torregrosa
436 21 Florent Torregrosa
# "-" is forbidden because it provokes database error.
437 21 Florent Torregrosa
if `echo $1 | grep -` ; then
438 21 Florent Torregrosa
    echo '"-" is forbidden in the site name'
439 21 Florent Torregrosa
    exit 1
440 21 Florent Torregrosa
fi
441 21 Florent Torregrosa
442 21 Florent Torregrosa
# Site name length must be lower or equal to 16 due to database limitations.
443 21 Florent Torregrosa
if [ $(echo $1 | wc -n) -le 16 ] ; then
444 21 Florent Torregrosa
    echo "site name can't have more than 16 characters"
445 21 Florent Torregrosa
    exit 1
446 21 Florent Torregrosa
fi
447 21 Florent Torregrosa
448 21 Florent Torregrosa
###### Initialisation
449 21 Florent Torregrosa
cd $d7_dir
450 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
451 21 Florent Torregrosa
site_password=`gen_password`
452 21 Florent Torregrosa
453 21 Florent Torregrosa
# Check if site database already exists.
454 21 Florent Torregrosa
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
455 21 Florent Torregrosa
    echo "Database $d7_site_name already exists"
456 21 Florent Torregrosa
    exit 1
457 21 Florent Torregrosa
fi
458 21 Florent Torregrosa
459 21 Florent Torregrosa
# Check if site folder already exists.
460 21 Florent Torregrosa
if [ -d $d7_site_dir ] ; then
461 21 Florent Torregrosa
    echo "Folder $d7_site_dir already exists"
462 21 Florent Torregrosa
    exit 1
463 21 Florent Torregrosa
fi
464 21 Florent Torregrosa
465 21 Florent Torregrosa
###### Main
466 21 Florent Torregrosa
mkdir $d7_site_dir
467 21 Florent Torregrosa
468 21 Florent Torregrosa
# Backup requirements
469 21 Florent Torregrosa
mkdir $d7_dir_individual_auto_backup/$d7_site_name
470 21 Florent Torregrosa
mkdir $d7_dir_individual_manual_backup/$d7_site_name
471 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
472 21 Florent Torregrosa
473 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
474 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
475 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$d7_site_name/$current_date.sql
476 21 Florent Torregrosa
477 21 Florent Torregrosa
# Create and grant privileges on database
478 21 Florent Torregrosa
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
479 21 Florent Torregrosa
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
480 21 Florent Torregrosa
481 21 Florent Torregrosa
# Create settings.php
482 21 Florent Torregrosa
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
483 21 Florent Torregrosa
484 21 Florent Torregrosa
# Create symbolic link
485 21 Florent Torregrosa
cd $d7_dir
486 21 Florent Torregrosa
ln -s . $d7_site_name
487 21 Florent Torregrosa
488 21 Florent Torregrosa
# Next Instructions
489 21 Florent Torregrosa
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
490 21 Florent Torregrosa
echo "Press enter when ready to go on."
491 21 Florent Torregrosa
read key
492 21 Florent Torregrosa
493 21 Florent Torregrosa
# Init variables
494 21 Florent Torregrosa
d7-reset-variables.sh $d7_site_name
495 21 Florent Torregrosa
496 21 Florent Torregrosa
# Permissions
497 21 Florent Torregrosa
chmod -R 755 $d7_site_dir
498 21 Florent Torregrosa
chmod 400 $d7_site_settings
499 21 Florent Torregrosa
500 21 Florent Torregrosa
# Last instructions
501 21 Florent Torregrosa
echo "Last instructions:"
502 21 Florent Torregrosa
echo "- Advice the webmaster to close account creation on the website"
503 21 Florent Torregrosa
echo "- Give the webmaster a link to the club Drupal's tutorials "
504 21 Florent Torregrosa
echo "- Create a node of type \"Site\" on default"
505 21 Florent Torregrosa
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
506 21 Florent Torregrosa
</code>
507 21 Florent Torregrosa
</pre>
508 21 Florent Torregrosa
509 1 Julien Enselme
h2. d7-delete-site.sh
510 21 Florent Torregrosa
511 21 Florent Torregrosa
<pre>
512 21 Florent Torregrosa
<code class="php">
513 21 Florent Torregrosa
#!/bin/sh
514 21 Florent Torregrosa
515 21 Florent Torregrosa
. scripts-config.sh
516 21 Florent Torregrosa
. scripts-config-site.sh $1
517 21 Florent Torregrosa
. scripts-utils.sh
518 21 Florent Torregrosa
519 21 Florent Torregrosa
# ARGS: site name.
520 21 Florent Torregrosa
521 21 Florent Torregrosa
check_arguments $# 1
522 21 Florent Torregrosa
523 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
524 21 Florent Torregrosa
525 21 Florent Torregrosa
# Delete database.
526 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "IF EXISTS DROP DATABASE $d7_site_name"
527 21 Florent Torregrosa
528 21 Florent Torregrosa
# Delete MYSQL user.
529 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
530 21 Florent Torregrosa
531 21 Florent Torregrosa
# Delete site's folder.
532 21 Florent Torregrosa
chmod -R 700 $d7_site_dir
533 21 Florent Torregrosa
rm -r $d7_site_dir
534 21 Florent Torregrosa
535 21 Florent Torregrosa
# Delete symbolic link.
536 21 Florent Torregrosa
rm $d7_dir/$d7_site_name
537 21 Florent Torregrosa
538 21 Florent Torregrosa
# Delete database backups.
539 21 Florent Torregrosa
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
540 21 Florent Torregrosa
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
541 21 Florent Torregrosa
542 21 Florent Torregrosa
echo "Don't forget to:"
543 21 Florent Torregrosa
echo "- Refresh node site on default"
544 21 Florent Torregrosa
echo "- Check particular behavior (normally detailed on site node)"
545 21 Florent Torregrosa
</code>
546 21 Florent Torregrosa
</pre>
547 21 Florent Torregrosa
548 1 Julien Enselme
h2. d7-reset-variables.sh
549 21 Florent Torregrosa
550 21 Florent Torregrosa
<pre>
551 21 Florent Torregrosa
<code class="php">
552 21 Florent Torregrosa
#!/bin/sh
553 21 Florent Torregrosa
554 21 Florent Torregrosa
. scripts-config.sh
555 21 Florent Torregrosa
556 21 Florent Torregrosa
# ARGS: [site_name]
557 21 Florent Torregrosa
558 21 Florent Torregrosa
if [ ! -z $1 ] ; then
559 21 Florent Torregrosa
    . scripts-config-site.sh $1
560 21 Florent Torregrosa
    cd $d7_site_dir
561 21 Florent Torregrosa
fi
562 21 Florent Torregrosa
563 21 Florent Torregrosa
current_timestamp=`date "+%s"`
564 21 Florent Torregrosa
565 21 Florent Torregrosa
####### General variables
566 21 Florent Torregrosa
drush -y vset --always-set reverse_proxy TRUE
567 21 Florent Torregrosa
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
568 21 Florent Torregrosa
drush -y ev "variable_set('update_notify_emails', array($email_multi_assos));"
569 21 Florent Torregrosa
drush -y vset error_level 0
570 21 Florent Torregrosa
571 21 Florent Torregrosa
###### Hidden captcha
572 21 Florent Torregrosa
drush -y en hidden_captcha
573 21 Florent Torregrosa
# Log wrong answers.
574 21 Florent Torregrosa
drush -y vset captcha_log_wrong_responses 1
575 21 Florent Torregrosa
# Use hidden captcha for all forms.
576 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
577 21 Florent Torregrosa
# Flush captcha cache.
578 21 Florent Torregrosa
drush -y vdel captcha_placement_map_cache
579 21 Florent Torregrosa
# Randomely generate a math question as the label of the hidden captcha field.
580 21 Florent Torregrosa
drush -y vset hidden_captcha_label "$RANDOM + $RANDOM"
581 21 Florent Torregrosa
582 21 Florent Torregrosa
583 21 Florent Torregrosa
####### Piwik
584 21 Florent Torregrosa
drush -y en piwik
585 21 Florent Torregrosa
drush -y vset piwik_site_id "101"
586 21 Florent Torregrosa
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
587 21 Florent Torregrosa
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
588 21 Florent Torregrosa
# Piwik cache.
589 21 Florent Torregrosa
drush -y vset piwik_cache 1
590 21 Florent Torregrosa
drush -y vset piwik_visibility_roles "1"
591 21 Florent Torregrosa
# Anonymous and authenticated statistics.
592 21 Florent Torregrosa
drush -y vset --format=json piwik_roles '{"1":0,"2":0}'
593 21 Florent Torregrosa
drush -y vset piwik_page_title_hierarchy 1
594 21 Florent Torregrosa
# Activate local search.
595 21 Florent Torregrosa
drush -y vset piwik_site_search 1
596 21 Florent Torregrosa
597 21 Florent Torregrosa
598 21 Florent Torregrosa
###### Security review
599 21 Florent Torregrosa
# For untrusted roles:
600 21 Florent Torregrosa
# 1 : anonymous user
601 21 Florent Torregrosa
# 2 : authenticated user
602 21 Florent Torregrosa
# 3 : administrator
603 21 Florent Torregrosa
drush -y en security_review
604 21 Florent Torregrosa
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
605 21 Florent Torregrosa
# Security review can't check for files permissions on multi_assos.
606 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid= '1' WHERE reviewcheck IN ('file_perms');"
607 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = 0, skipuid= NULL WHERE reviewcheck NOT IN ('file_perms');"
608 21 Florent Torregrosa
</code>
609 21 Florent Torregrosa
</pre>
610 21 Florent Torregrosa
611 1 Julien Enselme
h2. delete-temporary-files.sh
612 21 Florent Torregrosa
613 21 Florent Torregrosa
<pre>
614 21 Florent Torregrosa
<code class="php">
615 21 Florent Torregrosa
#!/bin/sh
616 21 Florent Torregrosa
617 21 Florent Torregrosa
. scripts-config.sh
618 21 Florent Torregrosa
619 21 Florent Torregrosa
find $dir_multi_assos -name '*~' -delete
620 21 Florent Torregrosa
</code>
621 21 Florent Torregrosa
</pre>
622 21 Florent Torregrosa
623 1 Julien Enselme
h2. disk-usage.sh
624 21 Florent Torregrosa
625 21 Florent Torregrosa
<pre>
626 21 Florent Torregrosa
<code class="php">
627 21 Florent Torregrosa
#!/bin/sh
628 21 Florent Torregrosa
629 21 Florent Torregrosa
. scripts-config.sh
630 21 Florent Torregrosa
631 21 Florent Torregrosa
echo -e "Quotas: 9.1 GB\n"
632 21 Florent Torregrosa
633 21 Florent Torregrosa
echo "Assos:"
634 21 Florent Torregrosa
du -hcs $dir_multi_assos | grep total
635 21 Florent Torregrosa
echo -e "\n"
636 21 Florent Torregrosa
637 21 Florent Torregrosa
echo "D6:"
638 21 Florent Torregrosa
cd $d6_dir_sites
639 21 Florent Torregrosa
du -h -d 1
640 21 Florent Torregrosa
echo -e "\n"
641 21 Florent Torregrosa
642 21 Florent Torregrosa
echo "D7:"
643 21 Florent Torregrosa
cd $d7_dir_sites
644 21 Florent Torregrosa
du -h -d 1
645 21 Florent Torregrosa
echo -e "\n"
646 21 Florent Torregrosa
647 21 Florent Torregrosa
echo "Logs:"
648 21 Florent Torregrosa
du -hcs $dir_log | grep total
649 21 Florent Torregrosa
echo -e "\n"
650 21 Florent Torregrosa
651 21 Florent Torregrosa
echo "Backups:"
652 21 Florent Torregrosa
cd $dir_backup
653 21 Florent Torregrosa
du -h -d 2
654 21 Florent Torregrosa
</code>
655 21 Florent Torregrosa
</pre>
656 21 Florent Torregrosa
657 1 Julien Enselme
h2. flush-files.sh
658 21 Florent Torregrosa
659 21 Florent Torregrosa
<pre>
660 21 Florent Torregrosa
<code class="php">
661 21 Florent Torregrosa
#!/bin/sh
662 21 Florent Torregrosa
663 21 Florent Torregrosa
# ARGS: number of files to keep, email address
664 21 Florent Torregrosa
# usage: flush files from a folder except a number equal to argument.
665 21 Florent Torregrosa
666 21 Florent Torregrosa
# Check if scripts-config.sh is imported.
667 21 Florent Torregrosa
if [ -z $scripts_utils ] ; then
668 21 Florent Torregrosa
    echo "Import of scripts-utils.sh required."
669 21 Florent Torregrosa
    exit 1
670 21 Florent Torregrosa
fi
671 21 Florent Torregrosa
672 21 Florent Torregrosa
check_arguments $# 2
673 21 Florent Torregrosa
674 21 Florent Torregrosa
backups_number=`ls | wc -l`
675 21 Florent Torregrosa
let "number_of_backups_to_delete = backups_number - $1"
676 21 Florent Torregrosa
677 21 Florent Torregrosa
if [ $number_of_backups_to_delete -gt 0 ] ; then
678 21 Florent Torregrosa
    ls | head -$number_of_backups_to_delete | xargs rm
679 21 Florent Torregrosa
else
680 21 Florent Torregrosa
    dir=`pwd`
681 21 Florent Torregrosa
    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
682 21 Florent Torregrosa
fi
683 21 Florent Torregrosa
</code>
684 21 Florent Torregrosa
</pre>
685 21 Florent Torregrosa
686 1 Julien Enselme
h2. flush-full-databases-backups.sh
687 21 Florent Torregrosa
688 21 Florent Torregrosa
<pre>
689 21 Florent Torregrosa
<code class="php">
690 21 Florent Torregrosa
#!/bin/sh
691 21 Florent Torregrosa
692 21 Florent Torregrosa
. scripts-config.sh
693 21 Florent Torregrosa
694 21 Florent Torregrosa
# ARGS: Drupal version
695 21 Florent Torregrosa
696 21 Florent Torregrosa
cd $dir_full_backup/$1
697 21 Florent Torregrosa
698 21 Florent Torregrosa
for dir in `ls` ; do
699 21 Florent Torregrosa
    cd $dir
700 21 Florent Torregrosa
    flush-files.sh $db_full_backup_number $email_multi_assos
701 21 Florent Torregrosa
done
702 21 Florent Torregrosa
</code>
703 21 Florent Torregrosa
</pre>
704 21 Florent Torregrosa
705 1 Julien Enselme
h2. flush-individual-databases-backups.sh
706 21 Florent Torregrosa
707 21 Florent Torregrosa
<pre>
708 21 Florent Torregrosa
<code class="php">
709 21 Florent Torregrosa
#!/bin/sh
710 21 Florent Torregrosa
711 21 Florent Torregrosa
. scripts-config.sh
712 21 Florent Torregrosa
713 21 Florent Torregrosa
# ARGS: manual or auto, Drupal version
714 21 Florent Torregrosa
715 21 Florent Torregrosa
cd $dir_individual_backup/$1/$2
716 21 Florent Torregrosa
717 21 Florent Torregrosa
for dir in `ls` ; do
718 21 Florent Torregrosa
    cd $dir
719 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
720 21 Florent Torregrosa
        flush-files.sh $db_individual_auto_backup_number $email_multi_assos
721 21 Florent Torregrosa
    else
722 21 Florent Torregrosa
        flush-files.sh $db_individual_manual_backup_number $email_multi_assos
723 21 Florent Torregrosa
    fi
724 21 Florent Torregrosa
done
725 21 Florent Torregrosa
</code>
726 21 Florent Torregrosa
</pre>
727 21 Florent Torregrosa
728 1 Julien Enselme
h2. scripts-config-site.sh
729 21 Florent Torregrosa
730 21 Florent Torregrosa
<pre>
731 21 Florent Torregrosa
<code class="php">
732 21 Florent Torregrosa
#!/bin/sh
733 21 Florent Torregrosa
734 21 Florent Torregrosa
# Sets useful variables of a site.
735 21 Florent Torregrosa
# ARGS: site_name
736 21 Florent Torregrosa
# Requires scripts-config.sh
737 21 Florent Torregrosa
738 21 Florent Torregrosa
# Check if scripts-config.sh is imported.
739 21 Florent Torregrosa
if [ -z $scripts_config ] ; then
740 21 Florent Torregrosa
    echo "Import of scripts-config.sh required."
741 21 Florent Torregrosa
    exit 1
742 21 Florent Torregrosa
fi
743 21 Florent Torregrosa
744 21 Florent Torregrosa
if [ -z $1 ] ; then
745 21 Florent Torregrosa
    echo "This script needs a site name as argument."
746 21 Florent Torregrosa
    exit 1
747 21 Florent Torregrosa
fi
748 21 Florent Torregrosa
749 21 Florent Torregrosa
scripts_config_site='imported'
750 21 Florent Torregrosa
751 21 Florent Torregrosa
d7_site_name=$1
752 21 Florent Torregrosa
d7_site_dir="$d7_dir_sites/assos.centrale-marseille.fr.$d7_site_name"
753 21 Florent Torregrosa
d7_site_settings="$d7_site_dir/settings.php"
754 21 Florent Torregrosa
</code>
755 21 Florent Torregrosa
</pre>
756 21 Florent Torregrosa
757 1 Julien Enselme
h2. scripts-config.sh
758 21 Florent Torregrosa
759 21 Florent Torregrosa
<pre>
760 21 Florent Torregrosa
<code class="php">
761 21 Florent Torregrosa
#!/bin/sh
762 21 Florent Torregrosa
763 21 Florent Torregrosa
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/users/guest/assos/bin
764 21 Florent Torregrosa
PATH=$PATH:/usr/guest/assos/bin
765 21 Florent Torregrosa
766 21 Florent Torregrosa
scripts_config='imported'
767 21 Florent Torregrosa
768 21 Florent Torregrosa
email_multi_assos="assos@centrale-marseille.fr"
769 21 Florent Torregrosa
770 21 Florent Torregrosa
dir_multi_assos='/users/guest/assos'
771 21 Florent Torregrosa
dir_scripts="$dir_multi_assos/bin"
772 21 Florent Torregrosa
dir_template="$dir_multi_assos/Desktop"
773 21 Florent Torregrosa
774 21 Florent Torregrosa
###### Database
775 21 Florent Torregrosa
db_server="myassos.serv.int"
776 21 Florent Torregrosa
db_user="assos"
777 21 Florent Torregrosa
dir_log="$dir_multi_assos/log"
778 21 Florent Torregrosa
779 21 Florent Torregrosa
###### Backup
780 21 Florent Torregrosa
db_full_backup_number=3
781 21 Florent Torregrosa
db_individual_manual_backup_number=3
782 21 Florent Torregrosa
db_individual_auto_backup_number=3
783 21 Florent Torregrosa
784 21 Florent Torregrosa
dir_backup="$dir_multi_assos/backup"
785 21 Florent Torregrosa
dir_full_backup="$dir_backup/full"
786 21 Florent Torregrosa
dir_individual_backup="$dir_backup/individual"
787 21 Florent Torregrosa
dir_individual_manual_backup="$dir_individual_backup/manual"
788 21 Florent Torregrosa
dir_individual_auto_backup="$dir_individual_backup/auto"
789 21 Florent Torregrosa
790 21 Florent Torregrosa
791 21 Florent Torregrosa
###### D7 variables
792 21 Florent Torregrosa
d7_dir="$dir_multi_assos/htmltest"
793 21 Florent Torregrosa
d7_dir_sites="$d7_dir/sites"
794 21 Florent Torregrosa
795 21 Florent Torregrosa
### Log
796 21 Florent Torregrosa
d7_dir_log="$dir_log/d7"
797 21 Florent Torregrosa
798 21 Florent Torregrosa
### Backup
799 21 Florent Torregrosa
d7_dir_full_backup="$dir_full_backup/d7"
800 21 Florent Torregrosa
d7_dir_individual_manual_backup="$dir_individual_manual_backup/d7"
801 21 Florent Torregrosa
d7_dir_individual_auto_backup="$dir_individual_auto_backup/d7"
802 21 Florent Torregrosa
803 21 Florent Torregrosa
### Template
804 21 Florent Torregrosa
d7_settings_template_name="settings-D7-bddinde-template.php"
805 21 Florent Torregrosa
d7_settings_template="$dir_template/$d7_settings_template_name"
806 21 Florent Torregrosa
807 21 Florent Torregrosa
808 21 Florent Torregrosa
###### D6 variables
809 21 Florent Torregrosa
d6_dir="$dir_multi_assos/html"
810 21 Florent Torregrosa
d6_dir_sites="$d6_dir/sites"
811 21 Florent Torregrosa
812 21 Florent Torregrosa
### Backup
813 21 Florent Torregrosa
d6_dir_full_backup="$dir_full_backup/d6"
814 21 Florent Torregrosa
d6_dir_individual_manual_backup="$dir_individual_manual_backup/d6"
815 21 Florent Torregrosa
d6_dir_individual_auto_backup="$dir_individual_auto_backup/d6"
816 21 Florent Torregrosa
</code>
817 21 Florent Torregrosa
</pre>
818 21 Florent Torregrosa
819 1 Julien Enselme
h2. scripts-utils.sh
820 21 Florent Torregrosa
821 21 Florent Torregrosa
<pre>
822 21 Florent Torregrosa
<code class="php">
823 21 Florent Torregrosa
#!/bin/sh
824 21 Florent Torregrosa
825 21 Florent Torregrosa
# This script contains useful functions for other scripts.
826 21 Florent Torregrosa
827 21 Florent Torregrosa
# Check if scripts-config.sh is imported.
828 21 Florent Torregrosa
if [ -z $scripts_config ] ; then
829 21 Florent Torregrosa
    echo "Import of scripts-config.sh required."
830 21 Florent Torregrosa
    exit 1
831 21 Florent Torregrosa
fi
832 21 Florent Torregrosa
833 21 Florent Torregrosa
scripts_utils='imported'
834 21 Florent Torregrosa
835 21 Florent Torregrosa
ask_password() {
836 21 Florent Torregrosa
    # read -s doesn't work with sh.
837 21 Florent Torregrosa
    # usage: pass=`ask_password "password please:"`
838 21 Florent Torregrosa
    echo $1 >&2
839 21 Florent Torregrosa
    echo -n ">" >&2
840 21 Florent Torregrosa
    stty_avant=`stty -g`
841 21 Florent Torregrosa
    stty -echo
842 21 Florent Torregrosa
    read p
843 21 Florent Torregrosa
    stty $stty_avant
844 21 Florent Torregrosa
    echo "$p"
845 21 Florent Torregrosa
    unset p
846 21 Florent Torregrosa
}
847 21 Florent Torregrosa
848 21 Florent Torregrosa
ask_password_db() {
849 21 Florent Torregrosa
    # ARGS: server_name, user_name
850 21 Florent Torregrosa
    local db_password="pour_boucler"
851 21 Florent Torregrosa
    # empty db request to validate password
852 21 Florent Torregrosa
    while ! mysql -h $1 -u $2 -p$db_password -e "" 2>/dev/null ; do
853 21 Florent Torregrosa
        db_password=`ask_password "database password:"`
854 21 Florent Torregrosa
        echo ""
855 21 Florent Torregrosa
    done
856 21 Florent Torregrosa
}
857 21 Florent Torregrosa
858 21 Florent Torregrosa
generate_password(){
859 21 Florent Torregrosa
    # ARGS: [password_length]
860 21 Florent Torregrosa
    # The password contains special characters. '/' must be excluded to avoid sed malfunction.
861 21 Florent Torregrosa
862 21 Florent Torregrosa
    local site_password='/'
863 21 Florent Torregrosa
864 21 Florent Torregrosa
    if [ -z $1 ] ; then
865 21 Florent Torregrosa
        local password_length=20
866 21 Florent Torregrosa
    else
867 21 Florent Torregrosa
        local password_length=$1
868 21 Florent Torregrosa
    fi
869 21 Florent Torregrosa
    
870 21 Florent Torregrosa
    while echo "$site_password" | grep -Fq '/' ; do
871 21 Florent Torregrosa
        site_password=`dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-$password_length`
872 21 Florent Torregrosa
    done
873 21 Florent Torregrosa
874 21 Florent Torregrosa
    echo $site_password
875 21 Florent Torregrosa
}
876 21 Florent Torregrosa
877 21 Florent Torregrosa
count_d7_sites(){
878 21 Florent Torregrosa
    find $d7_dir_sites -type d ! -name all -maxdepth 1 | wc -l
879 21 Florent Torregrosa
}
880 21 Florent Torregrosa
881 21 Florent Torregrosa
check_arguments() {
882 21 Florent Torregrosa
    # ARGS: number of arguments passed to script, number of arguments required
883 21 Florent Torregrosa
    if [ $1 -le $2  ] ; then
884 21 Florent Torregrosa
        echo "Number of arguments insuffisant."
885 21 Florent Torregrosa
        exit 1
886 21 Florent Torregrosa
    fi
887 21 Florent Torregrosa
}
888 11 Julien Enselme
</code>
889 11 Julien Enselme
</pre>