Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 26

Florent Torregrosa, 04/08/2013 17:19
prepare crontab section

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