Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 42

Florent Torregrosa, 04/08/2013 23:18
put the current crontab

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