Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 39

Florent Torregrosa, 04/08/2013 20:51
forget a linebreak

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