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