Browse Source

modifié le chef_d_orchestre pour faire du mailing automatique.
ajout mail/cmd pour se rappeler à quoi ressemble une commande de mail avec sendemail

Citnop 3 years ago
parent
commit
af56ad4621
2 changed files with 148 additions and 14 deletions
  1. 147 14
      chef/chef_d_orchestre.sh
  2. 1 0
      mail/cmd

+ 147 - 14
chef/chef_d_orchestre.sh

@@ -1,13 +1,32 @@
1 1
 #!/bin/bash
2
+#-------------------------------------------------------------------------------
2 3
 RS=/usr/bin/rsync # better copy
3 4
 NBCPU=4 # nombre de threads à lancer. correspond au nombre de CPU/cœurs. pair de préférence.
4 5
 res=0 # cmd ok/nok ?
5
-DEBUG=0 # 0 : affiche des messages de débug.  
6
+DEBUG=0 # 0 : affiche des messages de débug, 1 : stdout = logfile, 2 quiet
6 7
 DIR1=`grep 1000 /etc/passwd | cut -d':' -f1` # répertoire utilisateur
7 8
 DIR2="prod" # répertoire pour les programmes
8 9
 DIR3="sandbox" # répertoire de travail
10
+AJD=`date +"%Y-%m-%d"` # ex: 2016-09-18...
11
+LOGIN="yaplog" # login for mail for SMTP server
12
+NDD="example.org" # domain name
13
+MDPMAIL="MyVerySecureChain" # passwd
14
+SMTPSERVER="smtp.example.org" # where ? gmail/yahoo/outlook
15
+SMTPPORT=587 # which port?
16
+DSTMAIL="yaplogreports" # dstmail@ndd
17
+MAILOBJ="[YaPLog]: Reporting done ${AJD}" # Subject of mail
18
+MAILMSG="Bonjour,\n\nYaPLog a fini de tourner.\nLes logs sont disponibles dans /var/log/yaplog/ et en PJ\nCordialement,\n\nYaPLog." # Body of mail
19
+ERR=0 # y a-t-il eu une erreur
20
+#-------------------------------------------------------------------------------
21
+serr () # nok, always defined
22
+{
23
+	/bin/echo -n -e "\e[31m" # color red
24
+	/bin/echo ${1} # argv[1]
25
+	/bin/echo -n -e "\e[0m" # color none
26
+}
9 27
 if [ "${DEBUG}" = "0" ]
10 28
 then
29
+	# show output
11 30
 	sout () # info
12 31
 	{
13 32
 		/bin/echo -n -e "\e[33m"
@@ -26,26 +45,77 @@ then
26 45
 		/bin/echo ${1}
27 46
 		/bin/echo -n -e "\e[0m"
28 47
 	}
48
+elif [ "${DEBUG}" = "1" ]
49
+then
50
+	# redirect output to logfile
51
+	sout () 
52
+	{
53
+		/bin/echo -n -e "\e[33m" >> ${LOGFILE}
54
+		/bin/echo ${1} >> ${LOGFILE}
55
+		/bin/echo -n -e "\e[0m" >> ${LOGFILE}
56
+	}
57
+	sok () 
58
+	{
59
+		/bin/echo -n -e "\e[32m" >> ${LOGFILE}
60
+		/bin/echo ${1} >> ${LOGFILE}
61
+		/bin/echo -n -e "\e[0m" >> ${LOGFILE}
62
+	}
63
+	sunk () 
64
+	{
65
+		/bin/echo -n -e "\e[34m" >> ${LOGFILE}
66
+		/bin/echo ${1} >> ${LOGFILE}
67
+		/bin/echo -n -e "\e[0m" >> ${LOGFILE}
68
+	}
69
+	serr () 
70
+	{
71
+		/bin/echo -n -e "\e[31m" >> ${LOGFILE}
72
+		/bin/echo ${1} >> ${LOGFILE}
73
+		/bin/echo -n -e "\e[0m" >> ${LOGFILE}
74
+	}
29 75
 else
76
+	# eliminate most of output
30 77
 	sout () 
31 78
 	{
32 79
 		: # None
33 80
 	}
34 81
 	sok () 
35 82
 	{
36
-		:
83
+		: # None
37 84
 	}
38 85
 	sunk () 
39 86
 	{
40
-		:
87
+		: # None
41 88
 	}
42 89
 fi
43
-serr () # nok
44
-{
45
-	/bin/echo -n -e "\e[31m"
46
-	/bin/echo ${1}
47
-	/bin/echo -n -e "\e[0m"
48
-}
90
+#-------------------------------------------------------------------------------
91
+
92
+
93
+# teste si fichier de log ajd existe
94
+NRUNAJD=0
95
+ENDLOOP=0
96
+LOGFILE=0
97
+while :
98
+do
99
+	if [ "${ENDLOOP}" = "1" ]
100
+	then
101
+		# has it been executed today?
102
+		if [ "${NRUNAJD}" = "0" ]
103
+		then 
104
+			sok "OK: YaPLog n'a pas encore tourné aujourd'hui" # pas exécuté
105
+		else
106
+			sunk "Warn: YaPLog a déjà été exécuté aujourd'hui : ${NRUNAJD}" # au moins une fois
107
+		fi	
108
+		break # "while 1"
109
+	fi
110
+	if [ -f /var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log ]
111
+	then
112
+		NRUNAJD=$(($NRUNAJD + 1))
113
+	else
114
+		touch "/var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log"
115
+		LOGFILE="/var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log"
116
+		ENDLOOP=1
117
+	fi
118
+done
49 119
 #-------------------------------------------------------------------------------
50 120
 
51 121
 
@@ -54,9 +124,9 @@ NBENTDIR=`ls -lA /home/${DIR1}/${DIR2}/${DIR3} | wc -l` # nombre d'entrées dans
54 124
 if [ "${NBENTDIR}" = "1" ]
55 125
 then
56 126
 	:
57
-	sok "Ok, la sandbox est vide."
127
+	sok "Ok, la sandbox est vide." # ok, rien dans le répertoire de travail.
58 128
 else
59
-	serr "Le répertoire de travail 'sandbox' n'est pas vide"
129
+	serr "Le répertoire de travail 'sandbox' n'est pas vide" # répertoire de travail non vide. arrêt.
60 130
 	exit 1
61 131
 fi
62 132
 #-------------------------------------------------------------------------------
@@ -66,8 +136,18 @@ fi
66 136
 res=0
67 137
 sout "Copy..."
68 138
 ${RS} -Phavuz /home/sewan/archive/*.zip /home/administrateur/prod/sandbox/
69
-sok "Copy ok."
139
+res=$(($res + $?))
140
+if [ "$res" = "0" ]
141
+then
142
+	sok "Copy ok."
143
+else
144
+	serr "Copy NOK: $res"
145
+	serr "1 : les permission sur les archives sont-elles ok ? : \$ ls -lrthp --color=always --time-style=long-iso # pour s'en assurer"
146
+	serr "2 : le disque est-il plein ? : \$ df -h --si | grep -e Size -e /home # pour s'en assurer"
147
+	exit 1 
148
+fi
70 149
 exit 1
150
+ERR=$(($ERR + $res))
71 151
 #-------------------------------------------------------------------------------
72 152
 
73 153
 
@@ -90,6 +170,7 @@ then
90 170
 else
91 171
 	serr "Mov NOK: $res"
92 172
 fi
173
+ERR=$(($ERR + $res))
93 174
 #-------------------------------------------------------------------------------
94 175
 
95 176
 
@@ -116,6 +197,7 @@ then
116 197
 else
117 198
 	serr "Unzip NOK: $res"
118 199
 fi
200
+ERR=$(($ERR + $res))
119 201
 #-------------------------------------------------------------------------------
120 202
 
121 203
 
@@ -141,6 +223,7 @@ then
141 223
 else
142 224
 	serr "Bin2ASCII NOK: $res"
143 225
 fi
226
+ERR=$(($ERR + $res))
144 227
 #-------------------------------------------------------------------------------
145 228
 
146 229
 
@@ -173,6 +256,7 @@ then
173 256
 else
174 257
 	serr "Ccat NOK: $res"
175 258
 fi
259
+ERR=$(($ERR + $res))
176 260
 #-------------------------------------------------------------------------------
177 261
 
178 262
 
@@ -198,6 +282,7 @@ then
198 282
 else
199 283
 	serr "ASCII2csv NOK: $res"
200 284
 fi
285
+ERR=$(($ERR + $res))
201 286
 #-------------------------------------------------------------------------------
202 287
 
203 288
 
@@ -239,8 +324,16 @@ do
239 324
 	if [ -d "/home/administrateur/prod/sandbox/site${i}" ] 
240 325
 	then
241 326
 		sok "${i}"
242
-		/home/administrateur/prod/parser/graphEchantTabl.out ${NBCPU} "/home/administrateur/prod/sandbox/site${i}/site${i}.csv" ${j} "/home/administrateur/prod/sandbox/site${i}/res${i}.csv" 
243
-		res=$((res + $?))
327
+		if [ "${DEBUG}" = "1" ]
328
+		then
329
+			# redirect to logfile
330
+			/home/administrateur/prod/parser/graphEchantTabl.out ${NBCPU} "/home/administrateur/prod/sandbox/site${i}/site${i}.csv" ${j} "/home/administrateur/prod/sandbox/site${i}/res${i}.csv" >> ${LOGFILE} 
331
+			res=$((res + $?))
332
+		else
333
+			# show output on stdout
334
+			/home/administrateur/prod/parser/graphEchantTabl.out ${NBCPU} "/home/administrateur/prod/sandbox/site${i}/site${i}.csv" ${j} "/home/administrateur/prod/sandbox/site${i}/res${i}.csv" 
335
+			res=$((res + $?))
336
+		fi
244 337
 		rm -f /home/administrateur/prod/sandbox/site${i}/site${i}.csv
245 338
 	else
246 339
 		:
@@ -253,6 +346,7 @@ then
253 346
 else
254 347
 	serr "csv2res NOK: $res"
255 348
 fi
349
+ERR=$(($ERR + $res))
256 350
 #-------------------------------------------------------------------------------
257 351
 
258 352
 
@@ -281,8 +375,47 @@ then
281 375
 else
282 376
 	serr "graphs NOK: $res"
283 377
 fi
378
+ERR=$(($ERR + $res))
284 379
 #-------------------------------------------------------------------------------
285 380
 
381
+
382
+# \n --> \r\n
383
+res=0
384
+/home/administrateur/prod/postparser/n2rn.out < "/var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log" > "/var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log.tmp" # tmp file for mail to windows
385
+res=$(($res + $?)) # success ?
386
+if [ "$res" = "0" ]
387
+then
388
+        sok "n2rn ok."
389
+else
390
+        serr "n2rn NOK: $res"
391
+fi
392
+ERR=$(($ERR + $res))
393
+#-------------------------------------------------------------------------------
394
+
395
+
396
+# send report
397
+res=0
398
+/usr/bin/sendemail -xu ${LOGIN}"@"${NDD} -xp ${MDPMAIL} -s ${SMTPSERVER}":"${SMTPPORT} -f ${LOGIN}"@"${NDD} -t ${DSTMAIL}"@"${NDD} -u ${MAILOBJ} -m ${MAILMSG} -a ${LOGFILE}".tmp" > /dev/null # send mail & shut up about it
399
+res=$(($res + $?)) # success ?
400
+rm -f "/var/log/yaplog/yaplog.${AJD}.${NRUNAJD}.log.tmp" # delete temporary windows file
401
+if [ "$res" = "0" ] 
402
+then
403
+	sok "Mail ok."
404
+else
405
+	serr "Mail NOK: $res"
406
+fi
407
+ERR=$(($ERR + $res))
408
+#-------------------------------------------------------------------------------
409
+
410
+
411
+# if errors have happened
412
+if [ "$ERR" = "0" ] 
413
+then
414
+	sok "Mail ok."
415
+else
416
+	serr "Mail NOK: $res"
417
+fi
418
+#-------------------------------------------------------------------------------
286 419
 #############
287 420
 sok "Done." #
288 421
 #############

+ 1 - 0
mail/cmd

@@ -0,0 +1 @@
1
+sendemail -xu user@ndd.tld -xp mdp -s smtp.nddmail.tld:587 -f user@ndd.tld -t destinataire@ndd.tld -u "Mon sujet" -m "Mon Message" -a /path/file