Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 74

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