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.
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!
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
[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
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
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
.
Verry GOOD !!!
Howto add it to cron or howto run this script automatically ?
Thanks,
Petr
Hi Petr,
you could add that script to the veeam job under advanced as post-job!
So it will be executed after the backup job has run.
Hi,
I will use and modify this script.
Very good job!!
Thank you,
Jose Manuel.
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 🙂
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
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
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
Vielen Dank für das Script, läuft auf Anhieb und erspart die Arbeit nach den Logfiles zu schauen.
Danke
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
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
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
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.
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.
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.
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
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
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
Hallo Jan,
lies dir bitte mal den Kommentar von Jens durch…!
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
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
Ich habe mal den veeamservice neu gestartet. Nun bekomme ich aber eine „Failed“-E-Mail, die nicht zutreffend ist, da das Backup in Wirklichkeit erfolgreich war und auch nur von 12:14 bis 12:18 Uhr dauerte (https://pasteboard.co/H3X5x3n.png)
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
————————
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
Vielen Dank für die Mühen und das Bereitstellen – funktioniert Klasse :).
Pingback: https://www.leibling.de/2018/01/25/veeam-emailbenachrichtigung-fuer-veeam-backup-agent-for-linux/
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.
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
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.
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
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.
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
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
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
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 :).
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
Perfekt – you make my Day :).
Funktioniert einwandfrei – danke für die Lösung.
Freut mich zu hören! 😉
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?
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
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!
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.
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?
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.
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
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
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 ?
Have you installed mailx?
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).
Update: Aktualisieren von Veeam auf die aktuellste Version (gemäß meiner Anleitung https://www.leibling.de/veeam-agent-for-linux-aktualisieren-auf-debian-oder-ubuntu-server/) hat das Problem behoben – das Script läuft nun wieder ohne Probleme.
Danke für das Teilen deines Scripts.
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
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 🙂
Hallo Tom,
vielen Dank – das hört man gerne! 🙂
Schönes Wochenende
Manfred
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
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
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
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. ?
Hallo Artcap,
ich habe deine Änderung mit eingebaut… 🙂
Danke
Manfred
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
Hallo René,
das macht Sinn und kann man sicher aus der Datenbank holen!
Ich schau mir das bei Gelegenheit mal an…
sg
Manfred
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
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é
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
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
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?
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
Im veeam_mail.sh File steht gleich am Anfang VERSION= drinnen.
Was liefert dir denn der Befehl?:
sqlite3 /var/lib/veeam/veeam_db.sqlite
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>
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.
Aus der SQLite-DB werden dann weitere Daten ausgelesen:
und
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
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.
vielen Dank für das schöne Script!
Danke für die positive Rückmeldung! 🙂
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
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
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
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
Superklasse Script.
Ich habe ein paar minimale Anpassungen vorgenommen da ich es unter CentOS laufen lasse, (eigentlich nur apt durch yum ersetzt), und seitdem tut es was es soll.
Vielen Dank dafür.
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
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
Hallo Hansgert,
ich hab’s eingebaut – könntest du es bitte mal mit der neuen Version 0.5.6 testen!?
Danke
Manfred
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
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
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
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.
Hallo Hansgert,
super – vielen Dank für’s Testen!
Ebenfalls schöne Feiertage 🙂
Schöne Grüße
Manfred
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
Version 0.5.9 fixed that bug – centos 7 has sqlite3 and bc in another directory (/bin instead of /usr/bin).
With Version 0.5.10 I moved the script to github -> https://github.com/grufocom/vee-mail – please subscribe to get all future news! 🙂
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
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
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
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:
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:
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:
Schau dir die Befehle mal an, eventuell fehlt bei dir ja wirklich was!
Schöne Grüße
Manfred
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
Hallo Felix,
ich meinte das Script direkt auf der Kommando Zeile starten mit “ –bg“ dahinter! Nicht als Post Script. 🙂
Schöne Grüße
Manfred
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
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!
Bin gespannt auf die Ausgabe…
Schöne Grüße
Manfred
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
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…
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
Korrekt, postfix oder zumindest nullmailer installieren und einrichten – dann solltest du Mails bekommen! 🙂
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
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
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
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:
Wobei entsprechend die Werte für die Variablen einzusetzen sind.
Eventuell fehlt dir hier noch das Paket cifs-utils!
Schöne Grüße
Manfred
Super, danke! Funktioniert wunderbar! 🙂
Super, freut mich zu hören! 🙂
Am besten Projekt bei GitHub abonnieren, dann bleibst du am laufenden.
Schöne Grüße
Manfred
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
debug
STARTTIME: , ENDTIME: 1583684657, STATE: 6, JOBID: {bf2a67c0-1b90-403e-8017-5558d8e09df7} DETAILS: TARGET: , FST: , LOGIN: , DOMAIN:
Hallo Daniel,
bei mir sieht die Debug Ausgabe wie folgt aus:
STARTTIME: , ENDTIME: 1583622993, STATE: 6, JOBID: {0ede1a62-4470-4348-ab72-3ff62404f334}
TARGET: srv/backup, FST: cifs, LOGIN: back, DOMAIN: dom
DETAILS:
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
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:
leider wird hier nur der halbe debug angezeigt.
hab hier mal alles hochgeladen hoffe es klappt. https://justpaste.it/71qf3
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.
Bitte unbedingt für das debuggen mit „–bg“ starten!
Also:
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.
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:
Habe nun „rm $TEMPFILE“ auskommentiert leider wird kein Tempfile angelegt. Sollte dies in /opt/vee-mail geschehen?
Wenn du eine Zeile davor „echo $TEMPFILE“ rein schreibst, dann siehst du wo.
Gewöhnlich /tmp
meinst du also
bash vee-mail.sh -bg
Zwei minus vor bg!
wenn ich das skript mit –bg ausführe bekomme ich eine e-mail.
Ist der Befehl /usr/bin/nohup vorhanden?
Der wird da an der Stelle mit ausgeführt.
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
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.
sed: -e Ausdruck #28, Zeichen 25: Nicht beendeter »s«-Befehl
Das kriege ich beim Scriptaufruf. Ubuntu 20.04 LTS
Siehe Eintrag bei Github – vermutlich liegt es am Backup Target, lies es dir mal durch und eventuell kannst du mir ja die passenden Ausgaben der Befehle liefern damit wir hier weiter kommen 🙂
https://github.com/grufocom/vee-mail/issues/35
Schöne Grüße
Manfred
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
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.
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
Hallo Jürgen, ich schaue mir das mal an – wirklich groß sollte der Aufwand dafür nicht sein! SG Manfred
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
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!
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
Die Version 0.5.43 hat den wichtigen Teil deiner Anpassungen drinnen und noch einen anderen Bugfix…
Schöne Grüße
Manfred
Passt und Funktioniert.
VG Jürgen
Jemand eine Idee?
curl: (56) response reading failed
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
Hi Manfred,
es war nicht der Github Zugriff. Es war der Mail Versand, es war smtps:// erfoderlich.
CURLSMTPSERVER=“smtps://mail.server.de:465″
Hallo Christian,
danke für die Rückmeldung und schön dass es jetzt funktioniert! 🙂
Schöne Grüße
Manfred
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
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
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
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.
Können wir gern testen.
Das wäre super! 🙂
„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
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.
Ich erhöhe mal auf sleep 60 und teste.
sleep 60 hat nicht zum Erfolg geführt.
Ein sleep 1 am Anfang des Skripes funktioniert.
SENDM=0
sleep 1
if [[ $EUID -ne 0 ]]; then
Bekommst du ohne sleep eine Fehlermeldung vom Veeam oder kommt einfach dein Mail nicht an?
Post-job script has been executed successfully
Die Mail kommt einfach nicht an.
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.
Ich denke auch, dass ein sleep 1 am Anfang keinen Nachteil darstellt.
Danke und VG Jürgen
nur für jene die es ganz eilig haben! 😉
0.5.48 hat die Änderungen drinnen…
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?
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
Hallo Manfred,
danke für die Antwort, wie kann man ein Linux Skript verzögert ausführen? Ich werde das einfach probieren.
Viele Grüße
Markus
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
Hallo Manfred,
ah, wieder was gelernt, danke! Muss ich heute Abend gleich mal testen.