====== Automatisierte Berichte ======
Diese Seite beschreibt wie man einen automatisiertes Bericht mithilfe Cronjobs und CSV-Export.
===== Befehl =====
55 19 * * 5 /opt/mercaware/mx023/src/mod_csvexport/bin/psql2xls -c "SELECT journal.zuordopnr, rek.rdat, ROUND(CAST(SUM(journal.saldowertmw) AS numeric), 2) AS wert FROM journal INNER JOIN rek ON journal.zuordopnr = rek.renr WHERE journal.kontokorrent = '100003' AND rek.lfd IN (SELECT rek.lfd FROM rek WHERE to_date(rek.rdat, 'YYYY-MM-DD') <= (current_date - 40)) GROUP BY journal.zuordopnr,rek.rdat HAVING (ROUND(CAST(SUM(journal.saldowertmw) AS numeric),2) <> 0) ORDER BY rek.rdat;" --from 'berichte@mercaware.de' --to 'stojicevic@mercaware.de' --subject 'Automasierter Bericht - Offene Posten' --output '/tmp/Offene Posten.xls' --host 'localhost' --user 'pg_mx007' --port '51007' --database 'MXDBS'
Die Hauptbefehl um eine XLS-Datei zu erstellen befindet sich im mod_csvexport: /opt/mercaware/mx023/src/mod_csvexport/bin/psql2xls
Dieses Befehl ermöglicht die Erstellung eine XLS-Datei aus eine SQL-Abfrage, und als E-Mail schicken.
===== Parameter =====
* -c : Bezeichnet die SQL-Abfrage die für den Bericht benutzt wird.
* --from: Die Absenderadresse (E-Mail)
* --to: Die Empfangeradresse (E-Mail)
* --subject: Betreff des E-Mails
* --output: Der Pfad, wo den Bericht gespeichert wird (auf dem Server)
* --host: Datenbank-Parameter bezeichnet wo der Datenbank erstellt ist.
* --user: Datenbank-Parameter bezeichnet der Datenbank Benutzer.
* --port: Datenbank-Parameter bezeichnet der Datenbank Port.
* --database: Datenbank-Paramter bezeichnet die Datenbankname.
===== Erstellen ein Cronjob =====
Um einen Bericht automatisch zu erstellen, benötigt man eine Cronjob. Die wurden normalerweise in der /etc/crontab Datei gespeichert. Allerdings, weil dieses Befehl als der Mandant-Benutzer ausgeführt werden soll, können wir nicht einfach uns als "root" anmelden, und die Datei im "vi" öffnen, um die Job einzurichten. Es muss so gemacht werden:
- SSH Verbindung mit dem Server erstellen.
- Sich als Mandant-Benutzer anmelden. Beispiel: su - mx001
- Folgende Kommando ausführen: crontab -e
Da landet man im "vi" für die "crontab" Datei dieses Benutzer.
- Befehl wie unten (oder oben im Beispiel) schreiben.
- Speichern und schließen mit :wq
# ┌───────────── min (0 - 59)
# │ ┌────────────── hour (0 - 23)
# │ │ ┌─────────────── day of month (1 - 31)
# │ │ │ ┌──────────────── month (1 - 12)
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
Wie oben angezeigt, um einen Befehl im crontab anzulegen, benutzt man die vorgegebene Format.
* Platz 1: Minuten (Welche Minute in der Stunde sollte die Job ausgeführt werden).
* Platz 2: Stunden (Welche Stunde im Tag sollte die Job ausgeführt werden).
* Platz 3: Monatstag (Welcher Tag im Monat sollte die Job ausgeführt werden).
* Platz 4: Monat (Welcher Monat im Jahr sollte die Job ausgeführt werden).
* Platz 5: Wochentag (Welcher Tag der Woche sollte die Job ausgeführt werden).