Ik ben bezig een klein bash scriptje te schrijven. Doel is dat ik een mailtje krijg wanneer er berichten door onze applicatie gaan (messages != 0).
Dit lukt aardig, maar nu wil ik het scriptje d.m.v. cron laten draaien, ieder uur. Het script moet dus de log doorwerken en alleen kijken naar het voorgaande uur.
Hoe krijg ik nu die variabele (die het uur bevat waarop gezocht moet worden) in de reguliere expressie die grep gebruikt? Ik gebruik al double quotes maar als ik de variabele erin plaats werkt het niet, ook niet als ik het escape. Ik heb het gevoel dat de nesting van double quotes (grep expressie), back quotes (date in de expressie) en dan ook nog single quotes (argument voor date) niet wil meewerken om de shell variabele te parsen.
Alvast bedankt.
script:
Dit lukt aardig, maar nu wil ik het scriptje d.m.v. cron laten draaien, ieder uur. Het script moet dus de log doorwerken en alleen kijken naar het voorgaande uur.
Hoe krijg ik nu die variabele (die het uur bevat waarop gezocht moet worden) in de reguliere expressie die grep gebruikt? Ik gebruik al double quotes maar als ik de variabele erin plaats werkt het niet, ook niet als ik het escape. Ik heb het gevoel dat de nesting van double quotes (grep expressie), back quotes (date in de expressie) en dan ook nog single quotes (argument voor date) niet wil meewerken om de shell variabele te parsen.
Alvast bedankt.
script:
code:
1
2
3
4
5
6
7
8
9
10
| #!/bin/sh
huidig_uur=`date '+%l'`
vorig_uur=`expr $huidig_uur - 1`
cat domain/RAM-IA/RAM-IAServer/logs/weblogic.log | grep "`date '+%b%e, %Y$vorig_uur:[0-9][0-9]:[0-9][0-9] %p'`.*messages=[1-9][0-9]*" > activity.log
if [ -s activity.log ]
then
mail -s "RIF activiteit" user@domain.nl < activity.log
fi
rm activity.log |
[ Voor 3% gewijzigd door Arnout op 06-04-2005 15:55 ]