Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 41

Florent Torregrosa, 04/08/2013 23:15
maj de code des cripts après tests

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