Project

General

Profile

Scripts et taches planifiees » History » Version 89

Julien Enselme, 09/12/2013 11:13 AM
Cront : on reset les variables avant toute chose

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