Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 65

Julien Enselme, 05/08/2013 19:01
scripts-utils.sh : check_arguments can display an help message

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