Zum Inhalt springen

Veeam Agent for Linux – mit E-Mail Bericht versehen

Der Windows Agent von Veeam liefert nach dem Backup einen recht netten Bericht mit dem Status der gerade durchgeführten Sicherung:

Selbige Funktion fehlt dem Linux Agent leider, dem kann man zwar durch manuelles Aufrufen der Console ähnliche Daten entlocken – wirklich praktisch ist das allerdings nicht…

Als alter Bash Liebhaber findet sich aber fast immer für jedes Problem eine Lösung, ich habe ein kleines Bash Script gebaut welches die Werte vom letzten Veeam Backup Job ausliest und mittels Template File aufbereitet und per Mail versendet.

Das Ergebnis sieht dann wie folgt aus:

Die Unterschiede sind relativ gering, mit den Daten kann man aber auf jeden Fall was anfangen!

Hier gibt es das kleine Script zum Herunterladen:

https://github.com/grufocom/vee-mail

Ich habe die beiden Datein auf meinem Linux System unter /usr/local/sbin/ abgelegt, der Pfad zur Template Datei ist entpsrechend im Script anzupassen – ebenso wie Absender und Empfänger Mail Adresse und der Name des Backup Jobs.

Man kann das Script als Post-Job Script beim Veeam Job mit angeben, sollte der letzte Job noch nicht fertig sein beendet sich das Script ohne weitere Meldungen.

Fehler werden auch entsprechend farblich gekennzeichnet und mit den Error Meldungen aus dem Logfile versehen:

Mir fehlt im Moment noch eine „Warning“ Mail vom Windows Agent damit ich die auch noch entsprechend anpassen kann, dürfte aber nur eine Frage der Zeit sein.

Ich hoffe ich kann mit dem kleinen Script auch anderen Veeam Nutzern eine Freude bereiten – positives Feedback ist willkommen! 😉

27.09.2017 – Update:

Ein paar kosmetische Änderungen habe ich noch vorgenommen, die Details kommen jetzt mit Zeilenschaltungen daher und nicht mehr in einer Wurst, die Agent Version vom Linux wird mit angegeben und Warnings erscheinen in orange.

2018.01.30 – Update Version 0.4: Nachdem das Script als Post-Script nicht funktionierte (siehe Kommentare) habe ich es ein wenig modifiziert, es forkt sich jetzt selbst und läuft verzögert im Postscript durch. Voraussetzung dass es überhaupt läuft es ein dummy-Pre-Script, ohne dieses kommt es vor dass veeam kein Post Script startet – ein Bug der wohl mit der nächsten Version behoben sein wird. Danke an Jens, Jan und Peter für’s Testen und Bugfixen! 😉

2019.04.25 – Update Version 0.5: Ich habe die Bugfixes der letzten Monate und ein paar Anregungen einfließen lassen und mich entschlossen die Version 0.5 frei zu geben. Die wichtigsten Änderungen in Kürze – Auslagerung der Config-Variablen in eine eigene Datei (veeam_mail.config), damit Updates einfach installiert werden können ohne Anpassung irgendwelcher Werte. Anzeige des Pfades auf welchem die Sicherung zuletzt gesichert wurde. Und eine Funktion die (falls aktiviert – SKIPUPGRADECHECK in der Config Datei) prüft ob eine neue Programmversion existiert und gegebenenfalls im Mail eine Info mit ausgibt.

https://github.com/grufocom/vee-mail

Für die nächste Version hätte ich dann geplant dass ich die Mails am Mailserver per Script auswerte und die Daten in einer Datenbank sammle. Diese sollen dann via PHP Script grafisch aufbereitet werden so dass man auf einer Übersichtsseite sofort alle Sicherungen im Blick hat.

Wie immer freue ich mich auf euer Feedback! 🙂

 

2019.05.07 Update Version 0.5.3: Damit es nicht langweilig wird habe ich das Tool noch ein wenig erweitert – jetzt erscheinen auch lokal gemountete Laufwerke und es wird versucht den benutzten und zur Verfügung stehenden Platz auch mit ins Mail zu packen. Download – siehe oben.

2019.07.23 Update Version 0.5.5: Zwei neue Config Parameter habe ich in der Datei veeam_mail.config hinzugefügt, sie dienen dazu zuverlässige den freien Platz bei CIFS gemounteten Backup Laufwerken zu ermitteln. SMBUSER und SMBPWD, die Datei sollte anschließend mit passenden Rechten versehen werden (chmod 600 veeam_mail.config) weil das Kennwort darin im Klartext angegeben werden muss. Sicher nicht die perfekte Lösung, aber sie funktioniert und jemand der so weit ins System eingedrungen ist dass er hier lesen kann dürfte sowieso schon genügend Schaden anrichten können. Wer eine andere einfach umzusetzende Idee hat – nur her damit!

2020.02.04 Update Version 0.5.9: Neue Config Option „DEBUG=1“ welche beim Aufruf von „veeam_mail.sh –bg“ direkt ein paar Debug Ausgaben liefert. Version 0.5.6 bis 0.5.8 haben ein paar kleine Fehler bei der Darstellung behoben.

2020.02.07 Update Version 0.5.10: Ich habe das Script umbenannt und auf Github angesiedelt, davon verspreche ich mir eine bessere Dokumentation bei Updates und Fehlern. Zu finden auf Github unter https://github.com/grufocom/vee-mail

2023.01.27: Da ich auf meiner Webseite die Dateien entferne (Projekt ja zu Github übersiedelt), habe ich hier die Links entsprechend auf die Projektseite bei Github abgeändert.

159 Gedanken zu „Veeam Agent for Linux – mit E-Mail Bericht versehen“

  1. Hallo!
    Bei mir bringt sqlite3 diese Fehlermeldung, wenn ich den Select ausführe.

    Error: file is encrypted or is not a database

    Hast du eine Idee dazu?

    Viele Dank!

    1. Hallo Marcel,

      welche Version von Veeam hast du installiert?
      Was liefert der Befehl:
      sqlite3 /var/lib/veeam/veeam_db.sqlite „select start_time, end_time, state, progress_details from JobSessions order by start_time DESC limit 1;“

      Wenn du ihn manuell startest?

      Schöne Grüße
      Manfred

  2. [root@server /]# sqlite3 /var/lib/veeam/veeam_db.sqlite „select start_time, end_time, state, progress_details from JobSessions order by start_time DESC limit 1;“
    Error: file is encrypted or is not a database

    [root@server /]# veeamconfig -v
    v1.0.1.364

    1. Hallo Marcel,

      was liefert dir denn:
      file /var/lib/veeam/veeam_db.sqlite
      bei mir kommt:
      /var/lib/veeam/veeam_db.sqlite: SQLite 3.x database, user version 6

      Ich kann jetzt nicht ausschließen dass veeam gelegentlich die Datenbank verschlüsselt anlegt, wüsste jetzt aber keine Grund dafür – da müsstest du mal bei deren Support anfragen!

      Schöne Grüße
      Manfred

      1. Hallo Manfred,

        die Datenbank ist nicht verschlüsselt, die Fehlermeldung ist nur irreführend. Der Fehler tritt bei mir auch auf – aber nur unter Cloudlinux. Mit sqlite3 kann man die DB nicht bearbeiten, was möglicherweise an der Implementierung in CentOS basierten Linuxversionen beruht.

        Unter Debian funktioniert es einwandfrei.

        Grüsse

        Micha
        .

  3. Super Script! Danke dafür!
    Habe Zeile 39 so angepasst, dass auch bei erfolgreichen Jobs das Skript sofort aussteigt. Identisch zu laufenden Skripten.
    Somit bekomme ich nur eine Meldung wenn es einen Warning oder einen Fehler gab. Das hält den Blick scharf 🙂

    1. Hallo Tobias,

      ich habe mit Absicht die Meldung im Erfolgsfall aktiv gelassen damit ich sehe dass das Backup auch wirklich läuft. Mal angenommen es wird nicht gestartet, dann sieht man auch keine Fehler oder Warnmeldung in seinem Postfach – mit auskommentierter Erfolgsmeldung würde das dann dem Status gleich kommen den man hat wenn das Backup funktionierend durchgelaufen ist.

      Aus meiner Sicht daher eher kontraproduktiv! 🙂

      Schöne Grüße
      Manfred

  4. Toll, vielen Dank!

    In der aktuellen Version v2.0.0.400 des Veeam Agent gibt es in der veeamconfig-Ausgabe am Ende eine weitere Zeile mit der Anzahl der Sessions. Damit das abgefangen wird:

    Zeile 27:
    SESSID=$($VC session list|tail -1|awk ‚{print $3}‘)

    Ersetzen durch:
    if [ „${AGENT:0:2}“ == „v2“ ]; then
    SESSID=$($VC session list|tail -2|head -n 1|awk ‚{print $3}‘)
    else
    SESSID=$($VC session list|tail -1|awk ‚{print $3}‘)
    fi

    1. Hallo Karsten,

      vielen Dank für den Hinweis – ich hab’s angepasst.
      Ich habe einfach ein „grep -v ‚Total amount'“ mit eingebaut – das wäre dann versionsunabhängig.

      Schöne Grüße
      Manfred

    1. hat evtl. noch jemand das Problem, dass das Script nicht als Postscript im Veeam läuft?
      Erst hatte ich auch Probleme das Script per Cronjob aufzurufen, da gab es den Fehler „sendmail nicht gefunden“, das habe ich erfolgreich durch das Ergänzen des kompletten Pfades um Script behoben.
      Mir gelingt es trotzdem nicht das Script als Postscript laufen zu lassen, Fehlermeldungen gibt es keine und es kommt auch keine Mail an. Manuell und per Cronjob läuft alles….

      Grüße Jens

      1. Hallo Jens,

        das klingt irgendwie als würden irgendwelche environment Variablen fehlen die benötigt werden.

        Zu dem von dir im Kontaktformular übermittelten Link – das könnte auch ein anderes Problem sein, eventuell fehlende Ausführungsrechte vom Script oder so… Die Frage dort ist eher ob’s überhaupt ausgeführt wird oder nicht.

        Schöne Grüße
        Manfred

        1. Hallo Manfred,

          ich habe mich jetzt mal ein wenig mit dem Script befasst.
          Als erstes habe ich herausgefunden, dass das Post-Script ausgeführt wird.
          Dann habe ich mir die Variablen angeschaut, hier scheint es ein Problem zu geben, wenn das Script als Post-Script läuft, dann wird nämlich die Variable $STATE immer mit „1“ befüllt und damit das Script beendet. Ich denke, es ist damit zu erklären, das das Backup noch nicht beendet ist.

          Lasse ich das Script per Cronjob nach dem Backup laufen funktioniert die Erkennung.

          Grüße Jens

          1. Du hast Recht es hängt mit dem STATE zusammen, das Script prüft ja ob noch ein Job läuft weil eigentlich erst nach beendetem Job sicher ist wie er abgelaufen ist! 😉
            Es ist so also als Post-Script nicht wirklich geeignet, es sei denn veeam beschließt das Post-Script erst zu starten wenn der eigentliche Backup Job schon beendet wurde.

          2. Eine Möglichkeit wäre ein Post-Script einzusetzen, welches dein Script aufruft.
            In Deinem Script eine kurze Zeitschleife rein und es sollte funktionieren, weil das Backup dann fertig sein sollte.

            1. Die Möglichkeit habe ich mir auch mal überlegt, ganz optimal scheint sie mir aber nicht. 🙂
              Ich würde die Verzögerung aber wenn dann in’s aufrufende Script einbauen, so in etwa:

              #!/bin/bash

              sleep 5 && echo „OK“ &

              exit 0

              Einfach den Scriptaufruf statt echo „OK“ rein und schon sollte es 5 Sekunden verzögert starten.

    2. Hallo,

      danke für das hilfreiche Script. Es hat bei mir initial einmal funktioniert, danach aber leider nicht mehr.
      Ich hatte den ersten Job nochmal entfernt und einen neuen angelegt, seither klappt etwas nicht mehr. Obwohl das letzte Backup erfolgreich war (https://pasteboard.co/H3WSdQO6.png) kommt das Script zum Ergebnis, das Backup sei noch im Gange:

      > echo $STATE
      1

      Allerdings stimmt die Session-ID auch nicht mir jener überein, die im Log-Ordner auftaucht:

      echo $SESSID
      142b0f01-abab-4de4-b580-ff9f7c2ccd0f

      > ls /var/log/veeam/Backup/Full
      Session_20180121_121415_{3892a52e-41c9-44c5-ba08-5800f6fc740b}

      Ist etwas durcheinander gekommen? Wäre dankbar für einen Hinweis.

      Danke & Gruß
      Jan

      1. Hallo Jan,

        ich würde nicht allzu lange suchen und einfach veeam noch einmal deinstallieren, anschließend /etc/veeam und /var/lib/veeam löschen und dann veeam erneut installieren und die Sicherung frisch einrichten.
        Das dürfte vermutlich schneller gehen als den Fehler zu suchen! 😉

        Schöne Grüße
        Manfred

        1. Hallo Manfred,

          Danke für den Hinweis. Du hast recht, mit frischer Konfiguration ist der Output des Script korrekt. Allerdings scheint Veeam Agent for Linux in der aktuellen Version einen Bug zu haben, der dazu führt, dass das Post-Job-Script (in bestimmten Situationen – bei vielen von euch scheint es ja zu klappen) gar nicht ausgeführt wird.

          Hier ist das Problem bereits beschrieben: https://forums.veeam.com/veeam-agent-for-linux-f41/post-job-doesn-t-work-t47878.html

          Ich habe daher einen Fall bei Veeam geöffnet.

          Gruß
          Jan

          1. Hallo Jan,

            wie du oben lesen kannst, ist das „Problem“ mit dem STATE gelöst.
            Wie ich jetzt aber mehrfach feststellen musste, ist es scheinbar Glückssache ob das post-script vom Veeam überhaupt gestartet wird. Ich habe es mit einem einfachen Script welches das Datum in ein File schreibt getestet. Momentan wird es gar nicht mehr gestartet….
            Es wäre nett, wenn du uns hier auf dem Laufenden halten würdest, bzw. uns einen Link zu dem gemeldeten Fall posten könntest.

            Danke Jens

            1. Hallo Jens,

              genau – ich lasse auch zu Beginn ein Datum schreiben und das passiert bei mir nie.

              Der Fall ist bei Veeam nicht öffentlich einsehbar, sondern an meinen Account gebunden. Ich poste aber gerne was, wenn ich eine zielführende Antwort habe.

              Grüße
              Jan

    3. Antwort von Veeam (Workaround noch nicht von mir validiert):

      ————————
      I’ve discussed your question, and it seems to be a known issue, which will be fixed in the next update of Veeam Agent.

      As a workaround please create additional dummy „pre-job“ script for example:

      #!/bin/bash
      exit 0
      ————————

    4. Hallo Jan,

      danke für die Info. Ja, das könnte passen, als ich getestet habe, hatte ich auch ein pre-script eingerichtet und da lief der Job.
      So, eingerichtet… und es funktioniert!!
      Im Backupfenster wird jetzt auch angezeigt, dass die Scripts ausgeführt wurden.
      Ich habe natürlich das oben angesprochene Hilfsscript (Zeitschleife) verwendet.

      Danke
      Jens

    5. Hallo, leider habe ich das Problem das, das Script nicht nach dem Backup ausgeführt wird – von Hand startet es jedoch. Ich habe die Scripte als root mit wget runterladen in /etc/veeam/scripts und editiert. Danach dann in den Jobeigenschaften dann zuregordnet (mit Browser, Datei wurde gefunden).

      Den Scripten habe ich mit chmod 755 und noch mit chgrp veeam angepasst.

      Mit Tail kann ich sehen das wenn ich manuel starte Mails versendet werden, nach dem Jobs passiert jedoch nichts.

      Muss ich noch was ändern (Rechte anpassen oder ähnliches)?

      Danke für das tolle Scipt und die Unterstützung.

      1. Hallo Peter,

        lies dir bitte die Kommentare von Jens und Jan durch, das ist ein Bug im Veeam und mit dem Workaround „pre-script“ sollte es gehen!

        Schöne Grüße
        Manfred

    6. Hallo Manfred, danke für deine schnelle Antwort – dank dem Pre-Script kommt nun zumindest die Meldung das es ausgeführt wurde – aber es kommt nichts an. Auch mit einem tail /var/log/exim4/mainlog sehe ich nur meine manuel ausgeführten Versuche, keine der zum Script passt.

      In dem Job.log wird folgendes geschrieben:

      [25.01.2018 14:54:15] lpbcore| Executing custom script: [/etc/veeam/scripts/veeam_mail.sh]. Arguments: []
      [25.01.2018 14:54:15] lpbcore| Executing custom script: [/etc/veeam/scripts/veeam_mail.sh]. Arguments: []
      [25.01.2018 14:54:15] | Thread started. Thread id: 140418414360320, parent id: 140418431145728, role: script output redirector to log
      [25.01.2018 14:54:15] | Thread started. Thread id: 140418405967616, parent id: 140418431145728, role: script output redirector to buffer
      [25.01.2018 14:54:15] | Thread started. Thread id: 140418395965184, parent id: 140418431145728, role: Pid waiter. timeout: 600
      [25.01.2018 14:54:15] | Thread finished. Role: ’script output redirector to buffer‘.
      [25.01.2018 14:54:15] | Thread finished. Role: ’script output redirector to log‘.
      [25.01.2018 14:54:15] | Thread finished. Role: ‚Pid waiter. timeout: 600‘.
      [25.01.2018 14:54:15] lpbcore| Executing custom script: [/etc/veeam/scripts/veeam_mail.sh]. Arguments: [] ok.
      [25.01.2018 14:54:15] lpbcore| Executing custom script: [/etc/veeam/scripts/veeam_mail.sh]. Arguments: [] ok.
      [25.01.2018 14:54:15] vmb | [SessionLog][info] Post-job script has been executed successfully.
      [25.01.2018 14:54:15] vmb | [SessionLog][info] Processing finished at 2018-01-25 14:54:15 CET.

      Auf der Firewall sehe ich im SMTP des Relays nichts einkommen – auch nur hier meine manuellen Teste.

      Hättest du eine weitere Idee?

      Danke für deine Mühen.

      1. Hallo Peter,

        wenn du das Script manuell ausführst dann bekommst du das Mail ganz normal zugestellt – nur wenn du es als Post-Script starten lässt dann klappt es nicht. Richtig?
        Das klingt für mich nach dem unten beschriebenen Problem dass der veeam Job noch läuft und der Start vom veeam_mail.sh durch ein weiteres Script verzögert erfolgen muss!
        So lange der Backup Job noch rennt kann das Script nicht auf den endgültigen Status zugreifen, erst wenn der Job beendet ist.

        Schöne Grüße
        Manfred

    7. Hallo Manfred, ich bin leider immer noch mit meinem Problem dran. Wenn ich per root das Script von Hand starte, dann läuft das durch.

      Wenn ich es jedoch per Cron startete bekam ich den folgenden Fehler:

      /etc/veeam/scripts/veeam_mail.sh: Zeile 104: sendmail: Kommando nicht gefunden.

      Das Problem konnte ich lösen in dem ich in Zeile 104 sendmail gegen /usr/sbin/exim ausgetauscht habe.

      Ich könnte zwar jetzt einfach nach der Sicherung irgendwann mit Cron mir den Bericht senden lasse – wäre aber nicht schön.

      Du schriebst das es daran lag, das der Job noch läuft – die Sicherung läuft bei mir ca. 40 Sekunden (sind nicht viele Daten die gesichert werden), deshalb habe ich ich direkt oben in deinem Script ein sleep 120 eingebaut, dann sollte dicke die Sicherung durch sein.

      Jedoch nach der Sicherung passiert nichts, es wird zwar im Veeam angezeigt das Post Script abgearbeitet wurden, jedoch sehe ich mit einem tail /var/log/exim4/mainlog das nichts passiert ist – dort sehe ich nur meine manuellen Teste.

      Langsam bin ich ratlos.

      1. Hallo Peter,

        nachdem das wohl öfter vorkommt werde ich mir eine Lösung für das Problem überlegen und einbauen. Ich hoffe ich komme in den nächsten Tagen dazu etwas zu basteln! 🙂

        Schöne Grüße
        Manfred

      2. Es bringt nichts, in das Script ein Sleep einzubauen, da die Sicherung erst beendet ist, wenn das Pos-Script beendet ist. Daher hatte Manfred und auch ich weiter oben schon die Lösung dazu aufgezeigt. Im Post-script das eigentliche Script mit einer Zeitverzögerung aufrufen und das Post-script sofort beenden.

        Auch das Problem „sendmail nicht gefunden“ habe ich weiter oben schon angesprochen, einfach im Script den vollen Pfadnamen zu sendmail eintrage, dann klappt das auch.

        Grüße Jens

        1. Hallo Jens,

          genau so ist es – ich werde das Script so modifizieren dass es sich selbst forkt und beendet sobald es erkennt dass die Session noch läuft. Das mit einer Verzögerung im geforkten Script sollte die Sache vernünftig zum Laufen bringen! 🙂

          Schöne Grüße
          Manfred

    8. Ok, nun habe ich auch auch verstanden – ich dachte, das es nur eine Weile dauerte bis der Job tatsächlich beendet ist – und nicht das der Job erst nach dem Post-Script beendet ist.

      Das mit dem ganzen Pfad war nicht mein eigentliches Problem – das eigentliche Problem war, das ich Exim nutze und unter root wo ich manuel getestet hatte, war wahrscheinlich ein Alias dafür da, der nicht beim Cron griff – erst als ich dann Exim mit ganzen Pfad verwendetet lief das Script bei mir.

      Ich nutze so lange erst mal die Cron Lösung und warte dann sehnsüchtig auf die Anpassung. Auf jeden Fall habe ich dank deinem Script Manfred endlich mal eine schicke Email mit dem Status :).

      Danke für eure Mühen :).

      1. Guten Morgen,

        ich habe gerade Version 0.4 des Scripts online gestellt – diese Version löst das Problem mit dem Post-Script! 🙂

        Schöne Grüße
        Manfred

    9. Hallo zusammen,

      zunächst einmal vielen Dank für dieses Skript, super Arbeit! Leider bin ich noch kein all zu großer Linux Feak und bringe mir das alles erst seit kurzer Zeit bei. Da ich bei mir alle Sicherung der Linux Maschinen auch mit dem Veeam Agent mache bin ich hier über den Beitrag gestolpert und prinzipiell bekomme ich das Skript zum laufen aber leider nicht als post-script. Ich hatte zunächst sendmail verwendet aber bin dann auf postfix gewechselt. Ich kann das Skript direkt aufrufen und die Mails kommen auch an, nur nicht durch den Veeam Agent. Bevor ich postfix installiert habe konnte ich im unkonfigurierten sendmail auch den Fehler sehen, dass ich noch kein Relay eingerichtet habe (als post-script). Nun passiert überhaupt nichts und ich finde auch keinen Eintrag im mail.log oder im Veeam Agent. Der sendmail Befehl funktioniert mit postfix und ich habe auch schon absolute Pfade angegeben aber leider wieder nichts. Muss ich hier noch irgendetwas beachten?

      1. Hallo Timo,

        hast du dir die Kommentare schon durchgelesen?
        Da wird genau das Thema behandelt – am besten du liest von unten nach oben, dann dürftest du am schnellsten fündig werden! 🙂

        Schöne Grüße
        Manfred

    10. Das mit dem pre-job Skript hatte ich einfach völlig ignoriert ….. 🙂 Nachdem ich dann auch noch das Notepad++ Problem gelöst habe funktioniert nun alles. Vielen Dank!

    11. Ich habe noch ein kleines Problem mit dem Skript wenn das Backup fehlschlägt. Habe zu Testzwecken einfach mal die Sicherung abgebrochen und in der Mail die dann gesendet wird fehlen die meisten Informationen wie z.B. der Status, Endzeit und einige Details. Führe ich das Skript danach manuell aus kommt die E-Mail korrekt an mit alles Informationen. Tritt wie gesagt nur bei dem State Failed auf, Warning müsste ich noch mal testen.

      1. Wenn du den Veeam Backup Job abbrichst, dann dürfte der vermutlich auch den Post Job nicht mehr starten und somit keine Meldung kommen.
        Wenn du auf eine externe Platte sicherst, dann könntest du das testen indem du die Platte während der Sicherung einfach absteckst – dann sollte eine entsprechende Meldung verschickt werden.
        Wie hast du denn die Sicherung abgebrochen?

    12. Das Skript wird definitiv ausgeführt, in der Mail sind nur nicht alle Informationen vorhanden. Ich kann gerne mal die Mail weiterleiten damit das klarer wird. Abgebrochen habe ich den Job einfach per Stop Befehl in Veeam.

      1. Hallo Timo,

        ich konnte das Problem bei mir nachvollziehen und es liegt daran dass beim „stop“ Veeam wohl das Post Script ausführt bevor es den eigentlich Job beendet hat. Ich gehe jetzt einfach her und verzögere die Ausführung des Scripts immer ein wenig, damit gehe ich dann auf Nummer Sicher und der Job ist abgeschlossen wenn das Mail verschickt wird.

        Die neue Version ist online!

        sg
        Manfred

    13. Hallo Manfred,

      die neue Version funktioniert nun auch wenn ich den Job abbreche. Wenn ich das Skript aber manuell aufrufe bekomme ich die Meldung „nohup: redirecting stderr to stdout“ und bleibe einfach in der Shell hängen. Scheint dennoch alles normal abzulaufen und die Mails kommen auch alle an.

      Falls Interesse besteht, ich habe die Vorlage noch ein ganz klein wenig angepasst, sodass die Mail jetzt exakt so aussieht wie beim Veeam Agent für Windows. Wirklich nur minimal

    14. Thank’s for script ! It’s works amazing on Debian systems.
      But i cannot send e-mail from CentOS. I use pre-job scrips of course.
      I checked sqlite and bc it’s installed.
      Any ideas ?

    15. Hallo, nachdem die Datensicherung so Probleme machte, das ich diese komplett deinstallieren und neu installieren musste habe ich auch wieder die Emailinfo eingerichtet.

      Jedoch habe ich mal wieder Probleme.

      Wenn ich aktuelle Version einrichte, dann wird als Pre-Job keine Mail versendet. Starte ich das Script von Hand, bekomme ich folgende Meldung:

      root@web:/usr/local/sbin# nohup: leite Standardfehlerausgabe auf Standardausgabe um

      Das Script endet nicht, Mail kommt dann jedoch an (zumindest beim starten von Hand).

      1. Super, freut mich zu hören!
        Wenn veeam korrekt installiert wurde dann wird es automatisch mit dem Klassiker „apt-get update;apt-get dist-ugprade“ aktualisiert.
        Bei der 3’er Version muss man nur beachten dass man vor dem ersten Sichern unbedingt „veeam“ starten und die beiden Lizenzen abnicken muss!
        Schöne Grüße
        Manfred

    16. Hallo Manfred,
      herzlichen Dank für Teilen des Skript und ich möchte Dir gerade noch ein virtuelles Kränzchen dafür binden! Ich benutze das Skript mit Veeam 3.x Linux Agent auf einem Open Media Vault (OMV) Version 4.x Server. Ich habe das Skript heruntergeladen, die Anpassungen im Header gemacht (Job Name etc) und dann hat es einfach funktioniert, dies gerade schon beim ersten Mal. Ich dachte noch es gibt Probleme, da OMV mit postfix anstatt sendmail kommt aber , wie gesagt alles gut , schön und farbig 🙂

    17. Hey Manfred,
      Ich bin krass erstaunt. Die Email sieht aus, wie von Herr VEEAM persönlich. Danke! Ich habe beim Einrichten ein paar Problemchen gehabt und gelöst:
      Fehler1: …database encrypted…
      Auf dem Scientific Linux (Rehat-Ableger) war übers Repository sqllite3 in der Version 3.6.xx installiert. Nach ein bisschen Rumforscherei habe ich stumpf das Binary ersetzt mit einer aktuellen Version 3.7.xx von der sqllite-Webseite. Schon lief es.
      Fehler2: Mail mit leerem Inhalt
      Ich habe nach ein wenig debuggen die Zeile 91 „TEMPFILE=$(tempfile)“ geändert in TEMPFILE=$(mktemp)

      Vielen Dank noch mal!
      Stefan

      1. Hallo Stefan,

        danke für die Info – tempfile scheit bei Scientific Linux wohl nicht per Default installiert zu sein, mktemp macht aber eh praktisch genau das gleiche. 🙂
        Der Hinweis mit der sqlite Version wird sich dem einen oder anderen weiterhelfen – Danke!

        Schöne Grüße
        Manfred

    18. Hab auch das nohub Problem allerdings hab ich die aktuellste Version schon. Version: veeam 3.0.1.1046
      /usr/local/sbin# nohup: leite Standardfehlerausgabe auf Standardausgabe um

    19. Hab hinter /dev/null noch das hinzugefügt: 2>&1

      Original:
      if [ ! „$1“ == „–bg“ ]; then
      nohup $0 –bg >/dev/null &
      exit

      Änderung:
      if [ ! „$1“ == „–bg“ ]; then
      nohup $0 –bg >/dev/null 2>&1 &
      exit

      Keine nohub Fehlermeldung mehr. Danke für das nette script. ?

    20. Hallo zusammen !

      Endlich habe ich es auch für mich funktionieren lassen, es ist so toll!
      Vielen Dank für das Skript und für alle Kommentare und Fehlerbehebungen, die zur aktuellen Version geführt haben.
      Ich habe jedoch ein kleines Problem, für das ich noch etwas Hilfe anfordern möchte: Ist es nicht möglich, die Quell-IP-Adresse und die IP-Adresse (oder den Pfad) des freigegebenen Zielordners anzuzeigen?

      Aus meiner Sicht scheint es für den Bericht wirklich relevant zu sein …

      Etwas hilfe bitte!

      Vielen Dank

      1. Hallo René,

        ich habe deine Anregung mit dem Pfad in der aktuellen Version eingebaut und noch ein paar andere Kleinigkeiten!
        Die Version 0.5.0 steht zum Download bereit – bitte beachten dass die Konfiguration in eine eigene Datei ausgelagert wurde.

        sg
        Manfred

    21. Hallo Manfred,

      Vielen Dank für Ihre hohe Reaktionsfähigkeit …
      Ich versuche herauszufinden, wie ich die Datenbank verlassen kann, um diesen Zweck zu erreichen …
      Ich gebe zu, dass das Skript alles tut, was es soll, aber ich habe immer noch das gleiche Problem mit Marcel auf einem meiner Server, auf dem veeam agent v2.0.0.400 installiert ist. Dort stecke ich bei der Fehlermeldung fest.

      Fehler: Die Datei ist verschlüsselt oder keine Datenbank

      Auf dem Server läuft Centos 6, und ich habe keine Problemumgehung gefunden, um dieses Problem zu lösen, da ich nicht auf eine andere Linux-Version migrieren kann.
      Ich werde jeden Vorschlag wirklich zu schätzen wissen.

      Grüße
      René

      1. Hallo René,

        wie Stefan etwas früher schreibt hat er das Problem dadurch gelöst dass er sqlite3 durch eine neuere Version 3.7 ersetzt hat – die ältere 3.6 (oder früher) scheint mit dem Format nicht zurecht zu kommen.

        Schöne Grüße
        Manfred

    22. Hallo Manfred

      danke für das tolle Script. Es macht genau das was ich brauche.
      Jedoch erhalte ich das Mail mit leerem Inhalt. Ich habe auch schon mktemp nachinstalliert, hat jedoch nichts gebracht.
      Kannst du mir hier weiterhelfen?
      Danke im Voraus und liebe Grüsse

      Tatiana

      1. Hallo Tatiana,

        wenn du im Script „rm $TEMPFILE“ ganz am Schluss durch „echo $TEMPFILE“ ersetzt sollte ein Aufruf dir den Pfad zur temporären Datei angeben – schau mal nach ob die existiert und befüllt ist!?
        Die aktuellste Version 0.5.4 hast du im Einsatz oder?

    23. Hallo Manfred

      danke für die schnelle Antwort.
      ich erhalte keinen Pfad für „echo $TEMPFILE“. Frage mich ob das überhaupt erzeugt wird.
      Wo kann ich die Version nachsehen? Habe die Files einfach von deiner Webseite heruntergeladen.

      Gruss Tatiana

    24. Version ist 0.5.4
      Befehl liefert die sqlite prompt:

      [root@vwerkpsql02 sbin]# sqlite3 /var/lib/veeam/veeam_db.sqlite
      SQLite version 3.7.17 2013-05-20 00:56:22
      Enter „.help“ for instructions
      Enter SQL statements terminated with a „;“
      sqlite>

      1. Im Grunde geht das Script ja ganz einfach vor und holt sich erst die letzte Veeam Session und anschließend deren Daten aus der SQLite-DB.

        veeamconfig session list|grep -v "Total amount"|tail -1|awk ‚{print $3}‘

        Aus der SQLite-DB werden dann weitere Daten ausgelesen:

        SELECT start_time, end_time, state, progress_details, job_id from JobSessions order by start_time DESC limit 1;

        und

        SELECT a1.options FROM BackupRepositories AS a1 LEFT JOIN BackupJobs AS a2 ON a1.id=a2.repository_id WHERE a2.id=\“$JOBID\“

        Wobei JOBID durch die JOBID der vorherigen Abfrage ersetzt wird.

        Wenn da überall was retour kommt ist der Teil schon mal sauber.

        In Zeile 130 wird das TEMPFILE erzeugt – wenn du hier in Zeile 131 ein

        echo "ABC: $TEMPFILE“

        einfügst, dann sollte auf jeden Fall ein Pfad ausgegeben werden. Ich füge immer noch ein paar Zeichen hinzu damit ich sehe ob die Zeile überhaupt abgearbeitet wird!

        Zur Sicherheit würde ich das Script mit dem Startparameter „–bg“ starten, dann forkt es sich nicht selbst – der Aufruf dauert dann mindestens 30 Sekunden.

    25. Sehr gerne doch! 🙂

      Ich hatte das Script vor einigen Monaten Mal auf einem Testsystem getestet gehabt -> Funktionierte problemlos. Nun wollen wir das Script im großen Stil auf 15 weiteren System implementieren, scheitern jedoch bereits am 1. :-D. Meine Vorgehensweise:

      -> Anpassung des Scripts (.config) in Windows
      -> .zip aller benötigten Dateien
      -> Hochladen in die Cloud
      -> Verbinden mit Zielsystem
      -> WGET und unzip
      -> benötigte Dateien via mv in /usr/local/sbin
      -> umbenennen von veeam_mail.sh.txt in veeam_mail.sh
      -> chmod +x auf veeam_mail.sh.txt
      -> Manuelle Ausführung des Scripts um zu prüfen, ob er nicht bei der apt-get Kontrolle von sqlite etc. hängenbleibt
      -> Integration des Scripts im Veeam Agent als Postscript
      -> Starten des Jobs

      Danach erhalte ich zwar eine E-Mail mit folgendem Betreff:
      [Success] CENSORED – Tuesday, 30 July 2019 10:23:30

      Der Inhalt der E-Mail ist jedoch leer.

      Erkennst du bei meiner Vorgehensweise vielleicht einen Fehler und kannst mir spontan weiterhelfen?

      Vielen lieben Dank vorab und viele Grüße,
      Ralphy

      1. Hallo Ralphy,

        hast du auch das Template File heruntergeladen und mit kopiert?
        Für mich klingt das als würde dieses fehlen.

        Schöne Grüße
        Manfred

    26. Hallo Manfred,

      vielen Dank für die wahnsinnig schnelle Rückmeldung. Das freut mich sehr.

      Da ich sowieso an der Pflege unserer Systeme dran bin, habe ich das Script mit der selben Vorgehensweise auf 3 weiteren Systemen implementiert und anschließend den Veeam Job ausgeführt.

      1 System schickt leere template files (Alle Felder unausgefüllt) und die restlichen 3 Systeme inhaltslose SUCCESS Mails.

      Damit das Ganze ein wenig aussagekräftiger ist, habe ich Screenshots angefertigt und möchte Dir zusätzlich meine configfile zeigen:

      Screenshot:
      https://imgur.com/a/5iufjF3

      JOBNAME=“VEEAMJOBNAME“
      EMAILTO=“backup@xxx.de“
      EMAILFROM=“backup@yyy.it“
      HTMLTEMPLATE=“/usr/local/sbin/veeam_mail_template.html“
      SKIPVERSIONCHECK=0
      SMBUSER=““
      SMBPWD=““

      Viele Grüße,
      Ralphy

      1. Hallo Ralphy,

        vom Screenshot her schaut es gut aus!
        Da vermute ich jetzt mal dass das Editieren unter Windows das Problem verursacht – falls die Datei mit falschen Zeilenumbrüchen gespeichert wird, dann kommt da nix vernünftiges mehr raus.
        Falls du unter Linux das dos2unix Tool installiert hast kannst du damit die Datei in ein kompatibles Format umwandeln.

        Schöne Grüße
        Manfred

      1. Hallo Hansgert,

        vielen Dank – kannst du mir dein geändertes Script zukommen lassen?
        Dann kann ich sehen wie ich’s gleich fix in den Standard einbaue – eine Prüfung ob rpm oder dpkg basierend ist ja keine Hexerei. 🙂

        Schöne Grüße
        Manfred

    27. SQLITE=$(which sqlite3)
      if [ „$SQLITE“ != „/usr/bin/sqlite3“ ]; then
      yum install -y sqlite
      fi

      BC=$(which bc)
      if [ „$BC“ != „/usr/bin/bc“ ]; then
      yum install -y bc
      fi

    28. Hallo Manfred,

      zuerst einmal vielen Dank für die geniale Arbeit.
      Es erleichtert einem soviel.

      Ich habe da nur eine Frage, in der config gibt es die Variable JOBNAME, was soll die denn bewirken?
      Zuerst dachte ich, damit kann ich mir in der Mail einen beliebigen Namen festlegen um bei mehreren Jobs leichter eine Unterscheidung zu erkennen, welcher nun gelaufen ist.

      Habe aber das Gefühl, das diese im Skript überhaupt nicht benutzt wird und stattdessen immer der Hostname gesetzt wird.
      Also ich meine den farblichen Header in der Mail ganz oben, direkt nach Agent Backup job:
      Dort wird bei mir immer der Hostname eingetragen, egal was in der config steht oder wie der Job im Veeam heist.

      Ist das ein normales Verhalten oder stimmt da was bei mir nicht.

      Vielen Dank und beste Grüße
      Manuel

      1. Hallo Manuel,

        das ist korrekt im Template wird nur der Hostname getauscht und eingetragen. Der Jobname steht für den Job der gestartet werden soll. Da ich meist nur einen Job auf jeweils einem Rechner am Laufen habe passt das so für mich recht gut. Könnte man natürlich für eine künftige Version auch anders vorsehen, verwendest du denn verschiedene Backup Jobs?

        Schöne Grüße
        Manfred

    29. Okay, hat sich erledigt.
      War zu doof. Steht natürlich im template drin. Und dort wie vermutet mit der Variable Hostname.
      Habe nun mehrere Templates erstellt und den Hostname mit der Bezeichnung meiner Jobs ersetzt.

      Vielen Dank nochmal für die tolle Arbeit.

      Beste Grüße
      Manuel

    30. Hallo Manfred,
      ich habe die neue Version unter CentOS 7.7.2 getestet und versuchsweise vorher einmal bc deinstalliert.
      bc wurde sauber nachinstalliert und das Script anschließend bis zum Ende ausgeführt.
      Vielen Dank und schöne Feiertage.

    31. Version: Veeam Agent for Linux v3.0.2.1190, Veeam-Mail Version 0.5.8 on Centos 7

      Hi,

      The scripts is work, but on Details its doesnt show Size, Read and Transfered

      Please advice. TQ

    32. Hallo Manfred!
      System: ubuntu 18.04
      Fehler: post-job success aber keine E-Mail bekommen

      Ich habe die Files unter /opt/vee-mail gepackt, das vee-mail.config file mit JobId und sender/reciever E-Mail Adressen versehen, im „vee-mail.sh“ in line 7 anstatt „vee_mail.config“ nun „vee-mail.config“ eingetragen und natürlich chmod +x vee-mail.sh gemacht.
      Leider bekomme ich keine E-Mail. Hast du Ideen wo hier das Problem liegen könnte?

      Viele Grüße
      Felix

      1. Hallo Felix,

        entschuldige die späte Antwort!
        Danke erstmal für die Info bezüglich des Config files, habe ich angepasst.
        Was bekommst du für Meldungen wenn du DEBUG auf 1 setzt und das Script mit –bg startest?

        Schöne Grüße
        Manfred

        1. Hallo Manfred,
          kein Problem.
          Ich habe jetzt DEBUG=1 gesetzt und bekomme nun ein den Fehler „[warn] Failed to execute post-job script“. Was genau meinst du mit -bg? bash -bg vee-mail.sh?
          Ich habe auch mal manuell versucht das Script zu starten (bash vee-mail.sh) und bekomme seltsamerweise den Fehler „No Veeam Agent for Linux installed!“. Da Veeam aber bereits Backups von dem System gezogen hat, bin ich mir eigentlich recht sicher, dass es installiert ist 😉

          Viele Grüße
          Felix

          1. Hallo Felix,
            es gab mal einen Bug im Veeam (welche Version nutzt du?) der verhindert hat dass das Post-Script ausgeführt wurde, Lösung dafür war einfach einen pre-script job zu erstellen.
            Dazu braucht es nur ein kleines Script mit folgendem Inhalt:

            #!/usr/bin/env bash
            exit 0

            Das Script mit „chmod +x scriptname“ ausführbar machen und als pre-job eintragen.
            Aber der Bug sollte schon lange behoben sein.
            Mit manuell starten und –bg meinte ich folgendes:

            /opt/vee-mail/vee_mail.sh –bg

            Die Meldung die du bekommst „No Veeam Agent for Linux installed!“ kommt daher dass der Befehl „which veeamconfig“ kein veeamconfig geliefert bekommt!

            Bei mir sieht das so aus:

            root@sys:~# which veeamconfig
            /usr/bin/veeamconfig
            root@sys:~# dpkg -S /usr/bin/veeamconfig
            veeam: /usr/bin/veeamconfig
            root@sys:~# dpkg -l|grep veeam
            ii veeam 4.0.0.1961 amd64 Veeam Agent for Linux
            ii veeam-release-deb 1.0.7 amd64 Veeam Backup for GNU/Linux repository
            ii veeamsnap 4.0.0.1961 all Veeam Agent for Linux (kernel module)

            Schau dir die Befehle mal an, eventuell fehlt bei dir ja wirklich was!

            Schöne Grüße
            Manfred

            1. Hallo Manfred,
              habe exakt die gleichen Versionen wie du installiert.

              -bg geht nicht, er sagt ‚incorrect path for post-job script‘

              Den Butfix mit dem pre-script habe ich jetzt mal noch nicht getestet, da ich die gleichen veeam Versionen habe wie du.

              Evtl stimmt was in meiner vee-mail.conf nicht? Habe für email to und email from jeweils die gleiche E-Mail angegeben. Ansonsten nur den Jobnamen geändert.

              Viele Grüße
              Felix

              1. Hallo Felix,

                ich meinte das Script direkt auf der Kommando Zeile starten mit “ –bg“ dahinter! Nicht als Post Script. 🙂

                Schöne Grüße
                Manfred

                1. Oh 🙂
                  bash vee-mail.sh -bg ergibt wieder ‚No veeam Agent for Linux installed!‘
                  Bei sudo und obrigen Befehl passiert gar nichts.

                  Viele Grüße
                  Felix

                  1. Hallo Felix,

                    du musst das Script als root user starten – also am besten mit „sudo su“ zum root user wechseln und dann die Befehle eingeben!

                    which veeamconfig
                    Und
                    dpkg -l|grep veeam
                    Und
                    /opt/vee_mail/vee_mail.sh –bg

                    Bin gespannt auf die Ausgabe…

                    Schöne Grüße
                    Manfred

                    1. which veeamconfig
                      Und
                      dpkg -l|grep veeam

                      habe ich bereis als superuser ausgeführt und bekomme genau deine oben genannte Ausgabe siehe unten:

                      root@sys:~# which veeamconfig
                      /usr/bin/veeamconfig

                      root@sys:~# dpkg -S /usr/bin/veeamconfig
                      veeam: /usr/bin/veeamconfig

                      root@sys:~# dpkg -l|grep veeam
                      ii veeam 4.0.0.1961 amd64 Veeam Agent for Linux
                      ii veeam-release-deb 1.0.7 amd64 Veeam Backup for GNU/Linux repository
                      ii veeamsnap 4.0.0.1961 all Veeam Agent for Linux (kernel module)

                      /opt/vee-mail/vee-mail.sh –bg wird einfach ausgeführt, genau wie ohne den -bg Parameter, e-Mail kommt keine.

                      Wobei ich gerade gesehen habe, dass sudo du was anderes ist als, wenn man per sudo -i sich root Rechte verschafft, was ich gemacht habe.
                      sudo du /opt/vee-mail/vee-mail.sh kommt 12 raus und bei sudo du /opt/vee-mail/vee-mail.sh -bg sagt er, dass -g eine ungültige Option sei.

                      Ich weiß also gerade leider nicht was das Problem ist.

                      Viele Grüße
                      Felix

                      1. Sorry, „sudo su“ – am Handy tippen.. tja – Rechtschreibkontrolle 🙂
                        Beim bg bitte zwei Minus davor setzen, nur eines ist zu wenig!
                        Das wird dann wohl auch automatisch ausgetauscht…
                        Wenn ich das Script als nicht Root-User starte, dann bekomme ich die selbe Meldung.
                        Hab da gerade noch einen check eingebaut und auf github rauf geladen…

                        1. Achso „sudo su“! mit –bg kommt raus „Zeile 199: sendmail: Befehl nicht gefunden“. Wenn ich richtig liege ist das im vee-mail.sh File die Zeile „cat $TEMPFILE | sendmail -t“. Klingt für mich als wäre die Funktionalität sendmail nicht installiert?

                          Viele Grüße
                          Felix

                  2. Ich habe mich für ssmtp entschieden und kann manuell per sendmail nun erfolgreich Mails verschicken. Somit sollte nun auch vee-mail die sendmail Funktionalität verwenden können. Leider macht das vee-mail.sh Skript das nicht 🙁 Ich führe das Skript als root aus (deinen Hinweis, dass man es als root starten soll, sehe ich ;-)) und dennoch wird keine E-Mail versendet.

                    Ich bin aber gerade auch etwas irritiert, weil in der vee-mail.conf steht bei „the sender email address“ „EMAILTO“ dabei und bei „reciever email address“ „EMAILFROM“. Das ist doch falsch rum oder steig ich bei der Logik nicht durch?

                    Viele Grüße
                    Felix

                    1. Hallo Felix,

                      kein wunder wenn du verwirrt bis – war auch falsch kommentiert, hab’s umgedreht. 🙂
                      Danke für’s aufmerksam machen…
                      Ich hab’s gerade bei mir mal geprüft, ich verwende das sendmail aus dem postfix Paket – könntest du mal postfix installiern und damit testen, nur damit wir das ausschließen können!? Gut möglich dass ssmtp irgendwas nicht so schluckt wie’s da daher kommt.
                      Hast du in der Config auch mal den DEBUG Wert auf 1 gesetzt?
                      Da müsste beim Ablauf doch einiges an Meldungen daher kommen…

                      Wenn du den Hinweis siehst dass du’s aus root ausführen sollst, dann läuft es nicht als root und bricht an der Stelle ab. Bin jetzt ebenfalls verwirrt – den Hinweis solltest du ja nicht mehr sehen wenn’s als root gestartet wird! 🙂

                      Schöne Grüße
                      Manfred

                      1. Guten Morgen!
                        Also ich habe folgende Infos. ssmtp funktioniert. Das Post-Script wird erfolgreich ausgeführt und versendet tatsächlich eine E-Mail mit Inhalt 🙂 Führe ich das Skript manuell mit sudo aus, passiert gar nichts. Mit den Optionen –bg wird zumindest eine Mail gesendet, ohne –bg passiert nichts.

                        Aktiviere ich den Debugging Mode bekomme ich ohne –bg folgende Ausgabe:
                        „STARTTIME: , ENDTIME: 1582362015, STATE: 6, JOBID: {2bd4dc13-cc28-43cd-ab89-a84d8fc42a65}
                        DETAILS:
                        TARGET: 192.168.178.10/Backup/VeeamBackup/Shinobi, FST: cifs, LOGIN: felix, DOMAIN: local“

                        Mit –bg im Debugging Mode erhalte ich:
                        „STARTTIME: , ENDTIME: 1582362015, STATE: 6, JOBID: {2bd4dc13-cc28-43cd-ab89-a84d8fc42a65}
                        DETAILS:
                        TARGET: 192.168.178.10/Backup/VeeamBackup/Shinobi, FST: cifs, LOGIN: felix, DOMAIN: local
                        PROCESSED: 160.7 GB, READ: .3 GB, TRANSFERRED: 247960609
                        SPEED: 57.2, SOURCELOAD: 86, NETLOAD: 21, TARGETLOAD: 97
                        DURATION: 00:00:36, START: Samstag, 22 Februar 2020 09:59:39, END: Samstag, 22.02.2020 10:00:15, STIME: 09:59:39, ETIME: 10:00:15
                        ERRLOG:
                        HN: UBUNTUSHINOBI
                        STAT: Success
                        BGCOLOR: #00B050
                        START: Samstag, 22 Februar 2020 09:59:39
                        SUCCESS: 1
                        ERROR: 0
                        WARNING: 0
                        STIME: 09:59:39
                        ETIME: 10:00:15
                        READ: .3 GB
                        TRANSFERRED: 236 MB
                        DURATION: 00:00:36
                        PROCESSED: 160.7 GB
                        BOTTLENECK: Target
                        ERRLOG:
                        SPEED: 57.2
                        TARGET: 192.168.178.10/Backup/VeeamBackup/Shinobi
                        FST: cifs
                        LOGIN: felix
                        DOMAIN: local“

                        Für mich ist das Thema jetzt gegessen, die Config klappt und ich werde es so auf meine weitreren VMs ausrollen. Einzig eine kleine Frage hätte ich noch. Beim Backup Target zeigt er mir leider keine Infos an. Liegt das daran dass das ein cifs Share ist?

                        Danke für die Hilfe bisher und viele Grüße
                        Felix

                        1. Hallo Felix,

                          wenn du in der vee-mail.config die Werte für SMBUSER und SMBPWD korrekt gesetzt hast, dann sollte im Mail auch das Backup Target entsprechend aufscheinen und mit Daten versorgt sein!
                          Es wird dafür folgender Befehl verwendet:

                          mount -t cifs -o username=$SMBUSER,password=$SMBPWD,domain=$DOMAIN //$TARGET $MPOINT

                          Wobei entsprechend die Werte für die Variablen einzusetzen sind.
                          Eventuell fehlt dir hier noch das Paket cifs-utils!

                          Schöne Grüße
                          Manfred

                            1. Super, freut mich zu hören! 🙂
                              Am besten Projekt bei GitHub abonnieren, dann bleibst du am laufenden.

                              Schöne Grüße
                              Manfred

                    2. Guten Tag!

                      Nach soetwas habe ich gesucht. Ich habe alles wie oben beschrieben kopiert und konfiguriert. Das Problem ist ich bekomme keine E-Mail. Wenn ich echo „Test“ | mail -s „Test“ email@addresse.de eingebe bekomme ich eine E-Mail. Also müsste postfix richtig konfiguriert sein.
                      Was mache ich falsch?
                      Hoffe kannst mir weiterhelfen.

                      MFG Schmidt

                        1. Hallo Daniel,

                          bei mir sieht die Debug Ausgabe wie folgt aus:

                          STARTTIME: , ENDTIME: 1583622993, STATE: 6, JOBID: {0ede1a62-4470-4348-ab72-3ff62404f334}
                          DETAILS: TARGET: srv/backup, FST: cifs, LOGIN: back, DOMAIN: dom
                          PROCESSED: 208.9 GB, READ: 9.0 GB, TRANSFERRED: 621512848
                          SPEED: 278.8, SOURCELOAD: 87, NETLOAD: 8, TARGETLOAD: 17
                          DURATION: 00:01:31, START: Sonntag, 08 März 2020 00:15:02, END: Sonntag, 08.03.2020 00:16:33, STIME: 00:15:02, ETIME: 00:16:33
                          ERRLOG:

                          Was hier auffällt ist dass bei dir sämtliche Job Details fehlen!
                          Wie schauen denn die Job Details im Veeam direkt aus, wenn du dort auf deinen Job gehst…?

                          Schöne Grüße
                          Manfred

                          1. sorry irgendwie ist etwas schiefgegangen der Debug sieht wie folgt aus:

                            STARTTIME: , ENDTIME: 1583684657, STATE: 6, JOBID: {bf2a67c0-1b90-403e-8017-5558d8e09df7} DETAILS: TARGET: , FST: , LOGIN: , DOMAIN:

                            1. Der Debug Log sieht für mich eigentlich OK aus!
                              Kommentier Mal im veeam_mail.sh Script die vorletzte Zeile mit „rm $TEMPFILE“ und schau dann ob ein solches existiert und wie es aussieht.
                              Du kannst es dann manuell mit „cat Dateiname|sendmail -t“ los schicken.

                        2. PS: kleinen typo bei STARTTIME (hatte STARTIME drinnen stehen) habe ich in der 0.5.12 Version korrigiert. Hat aber keinerlei Auswirkungen auf den Betrieb vom Script.

                          1. irgendwie wenn ich den debug hier einfüge und absende sieht alles anders aus

                            STARTTIME: , ENDTIME: 1583684657, STATE: 6, JOBID: {bf2a67c0-1b90-403e-8017-5558d8e09df7} DETAILS: TARGET: , FST: , LOGIN: , DOMAIN:

                              1. ich weiß nicht warum aber wenn ich das skript in past Job einfüge läuft es nun ohne Probleme.

                                Danke für die prima Arbeit und Hilfe.

                                MFG

                                1. Ok, das ist klar – genau da gehört es hin! 🙂
                                  Es soll ja automatisch am Ende vom Backup Job ausgeführt werden… Dafür steht der past Job.

                        3. Warum auch immer, sed: -e Ausdruck #28, Zeichen 25: Nicht beendeter »s«-Befehl taucht nicht mehr auf, spooky…lande kommentarlos wieder auf der shell…
                          Wahrscheinlich bin ich aber zu dämlich, sendmail einzurichten…muss man mehr tun, als Sender und Empfänger in der config richtig einzutragen?
                          Wie aktiviere ich denn debug bei dem script?
                          OS ist Zorin 16, also Ubuntu 20.04
                          merci

                          1. Debug kannst du einfach einschalten indem du im Script den Wert DEBUG=0 auf DEBUG=1 stetzt.
                            Falls du mit sendmail nicht an’s Ziel kommst dann nutz einfach die Variante mit curl, dann brauchst du in der Config Datei nur die Daten von deinem Mailserver eintragen und das hoffentlich bereits installierte Curl übernimmt den Rest.

                        4. Hallo,
                          vielen Dank für dieses Skript! Es funktioniert sehr gut.
                          Ich habe den Agent für Linux und für Windows in Benutzung.
                          Das Ergebnis, also die Mail, ist fast identisch. Sehr gut!

                          Ich würde mir wünschen, die Variable:
                          # name of the veeam backup job as set in veeam!
                          JOBNAME ….
                          würde automatisch ausgelesen werden.
                          Da ich mehrere Jobs konfiguriert habe, wäre das sehr gut, auch wie beim Windows-Agent,
                          da man so die Mail zuordnen kann. Sonst steht ja immer fest das Gleiche drin.

                          VG Jürgen

                        5. From 62e2e840f9ff9c9dd73e861d62c0b5284454d873 Mon Sep 17 00:00:00 2001
                          From: root
                          Date: Mon, 12 Sep 2022 21:52:27 +0200
                          Subject: [PATCH] Add jobname parse from sqlite Removed unnecessary variables


                          vee-mail.sh | 14 +++++++——-
                          1 file changed, 7 insertions(+), 7 deletions(-)

                          diff –git a/vee-mail.sh b/vee-mail.sh
                          index c4c5085..4d72612 100755
                          — a/vee-mail.sh
                          +++ b/vee-mail.sh
                          @@ -1,11 +1,10 @@
                          #!/bin/bash

                          -VERSION=0.5.42
                          +VERSION=0.5.43
                          HDIR=$(dirname „$0″)
                          DEBUG=0
                          -INFOMAIL=1
                          -# INFOMAIL 1=ALWAYS (DEFAULT), 2=WARN, 3=ERROR
                          SENDM=0
                          +HTMLTEMPLATE=“$HDIR/vee_mail_template.html“

                          if [[ $EUID -ne 0 ]]; then
                          echo „This script must be run as root“
                          @@ -85,17 +84,18 @@ SESSID=${SESSID:1:${#SESSID}-2}

                          # state 1=Running, 6=Success, 7=Failed, 9=Warning
                          # get data from sqlite db
                          -SESSDATA=$(sqlite3 /var/lib/veeam/veeam_db.sqlite „select start_time, end_time, state, progress_details, job_id from JobSessions order by start_time DESC limit 1;“)
                          +SESSDATA=$(sqlite3 /var/lib/veeam/veeam_db.sqlite „select start_time, end_time, state, progress_details, job_name, job_id from JobSessions order by start_time DESC limit 1;“)

                          STARTTIME=$(echo $SESSDATA|awk -F’|‘ ‚{print $1}‘)
                          ENDTIME=$(echo $SESSDATA|awk -F’|‘ ‚{print $2}‘)
                          STATE=$(echo $SESSDATA|awk -F’|‘ ‚{print $3}‘)
                          DETAILS=$(echo $SESSDATA|awk -F’|‘ ‚{print $4}‘)
                          -JOBID=$(echo $SESSDATA|awk -F’|‘ ‚{print $5}‘)
                          +JOBNAME=$(echo $SESSDATA|awk -F’|‘ ‚{print $5}‘)
                          +JOBID=$(echo $SESSDATA|awk -F’|‘ ‚{print $6}‘)

                          if [ $DEBUG -gt 0 ]; then
                          – echo -e -n „STARTTIME: $STARTTIME, ENDTIME: $ENDTIME, STATE: $STATE, JOBID: $JOBID\nDETAILS: $DETAILS\n“
                          – logger -t vee-mail „STARTTIME: $STARTTIME, ENDTIME: $ENDTIME, STATE: $STATE, JOBID: $JOBID\nDETAILS: $DETAILS“
                          + echo -e -n „STARTTIME: $STARTTIME, ENDTIME: $ENDTIME, STATE: $STATE, JOBID: $JOBID\nDETAILS: $DETAILS\nJB JOBNAME: $JOBNAME\n“
                          + logger -t vee-mail „STARTTIME: $STARTTIME, ENDTIME: $ENDTIME, STATE: $STATE, JOBID: $JOBID\nDETAILS: $DETAILS\nJOBNAME: $JOBNAME“
                          fi

                          if [ „$JOBID“ ]; then

                          2.30.2

                          1. die variable infomail ist nicht zum spass an der stelle gesetzt gewesen, in früheren versionen gab es die nicht – daher ist ein default gesetzt der vom config file überschrieben wird falls dort ein eintrag existiert!

                            1. Hallo Mafred,
                              das kann ich ja nicht wissen.
                              Ein Problem ist das aber eigentlich nicht.
                              Was Du aus meinem Vorschlag übernimmst, kannst du ja entscheiden.

                              VG Jürgen

                          1. Hallo Christian,
                            das könnte ein temporäres Problem gewesen sein.
                            Hast du es nach wie vor?
                            Mit curl wird die aktuelle Version abgerufen und entsprechend eine Info angezeigt falls es eine neuere gibt.
                            Klappt das mit der Fehlermeldung 56 nicht, dann hat Github die Verbindung abgelehnt. Oder eine Verbindung zu Github ist von deinem System aus nicht möglich.
                            Schöne Grüße
                            Manfred

                        6. Hallo,
                          seit Version 6 habe ich ds Problem, dass das Skript keine Emails mehr automatisch per post-job versendet. Von Hand an der Konsole funktioniert alles.

                          Abhilfe:
                          in /etc/veeam/veeam.ini flogendes aktivieren:

                          # Timeout for pre- and post-backup scripts, sec
                          timeoutPrePost = 600

                          UND !!! in vee-mail.sh ein „sleep“ am Anfang einfügenn.

                          SENDM=0
                          sleep 3
                          if [[ $EUID -ne 0 ]]; then

                          VG Jürgen

                          1. Guten Morgen Jürgen,
                            hast du die aktuellste Version vom Script installiert?
                            Das von dir geschilderte Problem sollte damit eigentlich behoben sein.
                            Schöne Grüße
                            Manfred

                            1. Hallo Manfred,
                              Ja ich habe die aktuelle Version benutzt.
                              Ich habe es auch auf mehreren Maschinen getestet.
                              Es ist immer wie beschrieben aufgetreten.

                              VG Jürgen

                              1. Das ist interessant, bei allen anderen hat die letzte Version das Problem mit dem Start als Post-Script gelöst gehabt.
                                Das Post Script startet sich automatisch im Hintergrund neu und wartet 30 Sekunden bevor es weiter macht, an Veeam wird sofort ein Success zurück gemeldet.
                                Ich würde da jetzt den sleep Wert im Script einfach von 30 auf 60 erhöhen, das müsste den gleichen Effekt haben.

                          2. „an Veeam wird sofort ein Success zurück gemeldet“

                            Vielleicht ist das ja das Problem.
                            Wäre es möglich hier mal sleep 3 oder sowas einzubauen?
                            Das wäre ja dann so wie ich es im Skript gemacht habe.

                            VG

                            1. Veeam soll auch ein Success zurück bekommen, das passt auf jeden Fall!
                              Im Script ist bereits ein Sleep vorhanden, der steht nur weiter unten und mit Wert 30 Sekunden.
                              Veeam braucht wohl bei deinen Systemen etwas länger bis es nach dem Durchlauf des Post Scripts den Job wirklich abschließt und mit entsprechendem Status in die DB schreibt.
                              Das vee-mail Script wartet dies ab, das ist der sleep mit 30 Sekunden – in deinem Fall sind die 30 Sekunden zu wenig und du müsstest den Wert im Script erhöhen bis das Mail korrekt versendet wird.
                              Ich habe geplant den sleep Wert als Parameter mit in die Config auf zu nehmen, dann kann er variabel eingestellt werden.

                                1. Kann ich mir jetzt beim besten Willen nicht erklären warum da die eine Sekunde einen Unterschied macht! 🙂
                                  Bei dir läuft es ja erstmal, in die nächste Version bau ich dann einfach beides ein – variable sleep Zeit im Hauptteil via Config Parameter und den sleep am Anfang.

                          3. Mal eine Frage zu veeam für Linux, im Windows Client kann man konfigurieren, dass das Medium nach erfolgreichem Job automatisch ausgeworfen wird. Kann ich sowas auch mit Linux, jedoch über ein Postskript machen, bzw. im PreSkript das BackUp Medium mounten oder kommt veeam damit nicht klar? Das mal jemand ausprobiert?

                            1. Hallo Markus,
                              grundsätzlich funktioniert das via pre/post Script – mit pre-Script mounten stellt kein Problem dar.
                              Beim post-Script wird es interessanter – Veeam läuft zu dem Zeitpunkt zu dem das post-Script ausgeführt wird ja noch, daher kann es sein dass noch Zugriffe auf dem Medium vorhanden sind.
                              Man müsste also das post-Script vom Veeam entkoppeln und den unmount verzögert ausführen.
                              Ich schicke mit einem post-Script ein weiteres Script in den Hintergrund und lasse es ein zwei Minuten warten bevor es einen unmount macht, das klappt gut.
                              Schöne Grüße
                              Manfred

                                1. Du kannst mit folgender Zeile aus dem post-Script ein weiteres Script starten:
                                  nohup /usr/local/sbin/beispiel.sh >/dev/null 2>/dev/null &

                                  Und das Beispiel Script führt dann als einen der ersten Befehle diesen aus:
                                  sleep 180

                                  Der wartet also 180 Sekunden. Der „nohup“ ruft das Script auf und macht gleich in der nächsten Zeile des post-Scripts weiter.

                                  Schöne Grüße
                                  Manfred

                          Schreibe einen Kommentar

                          Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert