Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 32

Julien Enselme, 04/08/2013 19:01
d7-reset-variables.sh : piwik correction

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