Ergebnis 1 bis 10 von 10

Thema: Email mit Ergebnissen

  1. #1
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard Email mit Ergebnissen

    Ich habe folgende Frage:

    ich arbeite mit der auf dem Server liegenden DB, auf die ich wia Internet und mit Hilfe OpenVPN-Klient zugreife.
    Am Server wird eine Funktion ausgeführt.
    Nach ihrer Ausführung, die eine Weile dauern kann, würde ich gerne eine Email mit Ergebnissen erhalten.
    zB:

    Es wurden A Zeilen bearbeitet.
    B Zeilen wurden aktualisiert.
    C Zeilen wurden eingefügt.

    Wo A, B und C - Zähler, die einen Bestimmten Wert nach der Funktionsausführung haben werden.

    PS Bitte wenn möglich ganz einfach erklären, ich habe nicht lange mit plpgsql zu tun.

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen
    Am Server wird eine Funktion ausgeführt.
    Nach ihrer Ausführung, die eine Weile dauern kann, würde ich gerne eine Email mit Ergebnissen erhalten.
    zB:

    Es wurden A Zeilen bearbeitet.
    B Zeilen wurden aktualisiert.
    C Zeilen wurden eingefügt.

    Wo A, B und C - Zähler, die einen Bestimmten Wert nach der Funktionsausführung haben werden.

    PS Bitte wenn möglich ganz einfach erklären, ich habe nicht lange mit plpgsql zu tun.
    Du kannst das z.B. via einer Function in einer untrusted language (pl/perlU, pl/sh, ...) machen. Oder Du rufst dort in der Shell Deine Funktionen auf und pipest die Ausgabe in ein Mailprogramm, Beispiel:

    Code:
    psql test -c "select version();" | muttng -s "Ausgabe der DB" kretschmer@localhost -
    Musst halt dafür sogen, daß das, was Du sehen willst, ausgegeben wird.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard

    Ok, ich glaube ich habe die Frage doof gestellt.
    Es ist jetzt so bei mir:

    funktion1 (integer, text)

    Also wenn ich die Funktion ausführen lasse, sage ich ihr also:
    funktion1 (1, ''email@web.de'').
    Am Ende der Funktion:

    IF want_mail = 1 THEN

    PERFORM notify_me(''Import der Linienbelastung beendet.'',address);

    END IF;

    Funktion notifi_me, die jemand anderes geschrieben hat sieht so aus, funktioniert mittlerweile aber nicht:

    CREATE OR REPLACE FUNCTION notify_me(text, text)
    RETURNS text AS
    '#!/bin/sh
    echo "$1" | /usr/bin/mail -s $2
    EOF'
    LANGUAGE 'plsh' VOLATILE;

    Also ich möchte jetzt
    1) dass notifi_me mir doch die Email schickt
    2) Anstatt ''Import der Linienbelastung beendet.'' schreibt mir "A Zeilen wurden bearbeitet ...". (wie soll es aussehen: PERFORM notify_me(A+"Zeilen wurden bearbeitet."+B+" Zeilen wurden aktualisiert. "+C+" Zeilen wurden eingefügt.",address); oder so??)

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen

    Funktion notifi_me, die jemand anderes geschrieben hat sieht so aus, funktioniert mittlerweile aber nicht:
    'Funktioniert nicht', oft gepaart mit 'Fehlermeldung ungelesen wechgeklickt', ist so in etwas das häufigste, was man als Admin von 7-16:30 werktags zu hören bekommt. Ich brauch das einklich nicht auch noch in der Freizeit. Was man braucht, sind konkrete Fehlermeldungen.

    Also ich möchte jetzt
    1) dass notifi_me mir doch die Email schickt
    2) Anstatt ''Import der Linienbelastung beendet.'' schreibt mir "A Zeilen wurden bearbeitet ...". (wie soll es aussehen: PERFORM notify_me(A+"Zeilen wurden bearbeitet."+B+" Zeilen wurden aktualisiert. "+C+" Zeilen wurden eingefügt.",address); oder so??)
    Um Zeichenketten und Variablen zu konkatieren, verwendet man nicht +, sondern ||.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard

    Hallo,

    Mir fehlt es an der elementaren Syntaxkentnis.

    wie lass ich eine Funktion ausführen?:

    testdb=# notify_me('text','email@web.de')

    oder

    testdb=# \g notify_me('text','email@web.de')

    anscheinend weder noch.

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen
    Hallo,

    Wie lass ich eine Funktion ausführen?:

    testdb=# notify_me('text','email@web.de')
    select notify_me('text','email@web.de');

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard

    Hallo Andreas,

    hier ist "die konkrete" Fehlermeldung, die ich bekomme.

    ERROR: notify_me: mail: You must specify direct recipients with -s, -c, or -b
    /tmp/.pgplsh-8tEARh: EOF: command not found

    Anja.

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen
    Hallo Andreas,

    hier ist "die konkrete" Fehlermeldung, die ich bekomme.

    ERROR: notify_me: mail: You must specify direct recipients with -s, -c, or -b
    /tmp/.pgplsh-8tEARh: EOF: command not found

    Anja.
    Gruß aus einem INET-Kaffee ;-)

    erste Zeile: das mail-kommando erwartet als Parameter einen Empfänger
    zweite zeile: lösche mal das EOF

    Ich hab hier nur eine Sinnlos eXPerimental-Kiste ohne OS...

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Gruß aus einem INET-Kaffee ;-)
    Allgemein:

    PL/sh ist nix weiter als ein Interface zur Shell. Alles, was dort funktioniert,
    kannst Du dann als PL/sh - Funktion aus PG heraus aufrufen, du mußt nur den Inhalt der Funktion in die passende Syntax kapseln.

    Ich vermute mal, Dein 'mail' hat sich in der Syntax wie und warum auch immer verändert. Prüf das mal. Alternativ: ich verwende als Mailprogramm 'mutt' bzw. 'muttng'. Das kann man auch im Batch-Mode nutzen und das kann da auch z.B. Anhänge mitschicken. Daher hatte ich das auch in meinem Beispiel.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  10. #10
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard

    Hallo Andreas!

    Vielen Dank!
    Die Emails verschickende Funktion sieht jetzt also folgendermaßer aus:

    CREATE OR REPLACE FUNCTION notify_me(text, text)
    RETURNS text AS
    '#!/bin/sh
    echo $1 | /usr/bin/mail -s "Regiosustain Benachrichtigung" $2'
    LANGUAGE 'plsh' VOLATILE;

    Das Problem bestand darin, dass die Funktion nur von den Uni-Domains aus nicht funktioniert hat.

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 03.05.2010, 14:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum