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