Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 77

Julien Enselme, 06/08/2013 21:15
scripts-config-site.sh : description

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