Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 35

Florent Torregrosa, 04/08/2013 19:43
ajout backup et log all-reset-permissions.sh

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