Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 27

Florent Torregrosa, 04/08/2013 17:20
remove h3

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