Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 24

Florent Torregrosa, 04/08/2013 16:27
ajout tip pour editeur du crontab

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