Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 25

Florent Torregrosa, 04/08/2013 17:16
actualisation du paragraphe réinitialisation des variables

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