Dag allen,
ik probeer een door een cronjob aangeroepen bash script te maken die een query op een database loslaat en deze naar een email adres mailt. Daarvoor heb ik de volgende code geschreven:
Deze code werkt wel wanneer ik deze als shell user aanroep. Ik krijg dan een email met de juiste entries uit de database. Als het script door de cronjob wordt aangeroepen, krijg ik wel een email, maar staan hier niet de database entries in.
Ik heb een soortgelijke script draaien voor logbestanden,. waarin regel 6 vervangen is door de volgende code:
En dit werkt prima.
Ik weet dat een cronjob en shell user niet geheel gelijk zijn. Zo moet je in een cronjob volledige paden gebruiken. Maar ik begrijp niet wat een cronjob anders met een database output zou doen dan een shell user. Iemand een idee?
ik probeer een door een cronjob aangeroepen bash script te maken die een query op een database loslaat en deze naar een email adres mailt. Daarvoor heb ik de volgende code geschreven:
code:
1
2
3
4
5
6
7
| ( source '/root/db.cfg' echo To: bug@me.not echo From: info@spammer.com echo Subject: EMAILTITLE /usr/bin/mysql -s -uroot -p$dbpwd myDatabase -e 'SELECT * FROM table WHERE 1;' ) | /usr/sbin/sendmail -t |
Deze code werkt wel wanneer ik deze als shell user aanroep. Ik krijg dan een email met de juiste entries uit de database. Als het script door de cronjob wordt aangeroepen, krijg ik wel een email, maar staan hier niet de database entries in.
Ik heb een soortgelijke script draaien voor logbestanden,. waarin regel 6 vervangen is door de volgende code:
code:
1
| cat /var/log/apache2/error.log | grep "$(date -d '1 day ago' "+%b %d")" |
En dit werkt prima.
Ik weet dat een cronjob en shell user niet geheel gelijk zijn. Zo moet je in een cronjob volledige paden gebruiken. Maar ik begrijp niet wat een cronjob anders met een database output zou doen dan een shell user. Iemand een idee?