Inhaltsverzeichnis
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).