Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 38

Julien Enselme, 04/08/2013 20:51
d7-delete-site.sh : code après test

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