Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 75

Julien Enselme, 06/08/2013 13:38
Explication sur ~/bin et sur PATH

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