[Gelöst] Backintime script

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
kocj
Beiträge: 18
Registriert: 09.02.2018 05:10:52

[Gelöst] Backintime script

Beitrag von kocj » 09.07.2018 09:01:23

Guten Tag, ich versuche mich gerade eine Backup Strategie umzusetzen. Dabei bin ich auf Backintime gestoßen.

Dort kann mit Hilfe von user-callback Scripts die Funktion erweitert werden. Leider habe ich vom Scripten keine Ahnung und bitte nun um eure Hilfe.

Das Script, https://github.com/bit-team/user-callba ... k.sendmail interessiert mich besonders, es würde ein Mail bei Beendigung des Backups oder bei eventuellen Fehlern senden. Ich komm zwar so weit zu verstehen wo ich meine Mail Adresse eingeben muss, dennoch wird mir keine Mail gesendet. Das lässt mich darauf schließen dass noch weitere Konfigurationen notwendig sind, leider weiß ich nicht wo anfangen. Brauchbare Informationen dazu habe ich im Netz leider keine gefunden.

Code: Alles auswählen

email="foo@bar"
profile_id="$1"
profile_name="$2"
reason="$3"
errorcode="$4"

function send_mail {
    subject="Backintime $profile_name: $1"
    shift
    echo -e "$(date) \n$@" #| mail -s $subject $email
}

function log_id {
    if [ $profile_id -gt 1 ]; then
        echo $profile_id
    else
        echo ""
    fi
}

case $reason in
    1) send_mail "Backup process begins"
         ;;
    2) send_mail "Backup process ends" "$(cat ~/.local/share/backintime/takesnapshot_$(log_id).log)"
         ;;
    3) send_mail "A new snapshot was taken"
         ;;
    4) #There was an error
        case $errorcode in
            1) send_mail "ERROR" "The application is not configured"
                  ;;
            2) send_mail "ERROR" "A 'take snapshot' process is already running"
                  ;;
            3) send_mail "ERROR" "Can't find snapshots folder (is it on a removable drive ?)"
                  ;;
            4) send_mail "ERROR" "A snapshot for 'now' already exist"
                  ;;
        esac
        ;;
esac
Postfix habe ich durch die zahlreichen Tutorials die zu Verfügung stehen so konfiguriert dass mir:

Code: Alles auswählen

echo "Testing Postfix email delivery" | mail -s "Test email" john@gmail.com
die Mail zu google sendet.
Zuletzt geändert von kocj am 09.07.2018 19:08:43, insgesamt 3-mal geändert.

TomL

Re: Backintime script

Beitrag von TomL » 09.07.2018 12:34:59

kocj hat geschrieben: ↑ zum Beitrag ↑
09.07.2018 09:01:23
Guten Tag, ich versuche mich gerade eine Backup Strategie umzusetzen. Dabei bin ich auf Backintime gestoßen.
:::::
Postfix habe ich durch die zahlreichen Tutorials die zu Verfügung stehen so konfiguriert dass mir:
Tja... irgendwie fehlt mir da noch einiges an zusätzlichen Infos, um einen irgendwie tauglichen Rat geben zu können. Wenn ich das richtig verstanden habe, war BackInTime ja ursprünglich dafür gedacht, das Home-Dir eines Desktop-PCs zu sichern. Irgendwann wurde es erweitert, dass es auch andere Dirs sichert. Aber im Regelfall würde ich davon ausgehen, dass jemand vor dem PC an Tastatur und Bildschirm sitzt und das grafische Frontend von Backintime selber bedient. Und wenn man es gerade selber macht, braucht man doch eigentlich keine Mail, die einen darüber informiert, dass man es gerade macht....oder? Wenn das Backup jedoch mannlos und automatisch durchgeführt werden soll....*hmmm*... da weiss ich grad gar nicht, ob so ein Tool mit grafischer Benutzeroberfläche überhaupt die richtig Wahl ist und ob es da nicht vielleicht bessere Alternativen gibt. Aber für diese Frage gibts hier ganz sicher Leute mit mehr Erfahrung, die das bestimmt besser einschätzen können.

Und wenn Postfix als Mailserver wirklich nur genutzt werden soll, um eine einfache Info-Mail zu senden... *hmmm*... dann ist Postfix für diese Aufgabe maßlos überdimensioniert. Das würde viel einfacher mit einem Non-Daemon-Mailer gehen, der keine so komplizierte Konfiguration und keinen permanent laufenden Daemon benötigt, was letztendlich auch nur wieder ein unnötiges Sicherheitsrisiko darstellt.

Vielleicht solltest Du das "Umfeld" und das zu erreichende Ziel noch ein wenig präziser beschreiben.... mit den gegebenen spärlichen Infos ist das nur Rätselraten, mit dem man das Ziel nie oder allenfalls zufällig erreicht.

inne
Beiträge: 3272
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Backintime script

Beitrag von inne » 09.07.2018 13:19:46

In Zeile 31 ;-)

Code: Alles auswählen

 echo -e "$(date) \n$@" #| mail -s $subject $email
Neben dem auskommentierten Code, beißt sich dann auch das fehlende Quoting mit dem Wert von $subject..

(Verstehe wer will)

kocj
Beiträge: 18
Registriert: 09.02.2018 05:10:52

Re: Backintime script

Beitrag von kocj » 09.07.2018 14:39:25

@ TomL

Danke für Ihre nachfragen und Ratschläge.
Mir geht es auch darum das Notebook meiner Frau zu sichern, Backintime sollte sich dann nur bei Fehlern melden. Irgendwann sollte man sich halt mit dem Thema Backup beschäftigen. Und irgendwie muss man damit anfangen, ich habe Backintime gewählt, da das wichtigste für den Hausgebrauch vorhanden ist. Welchen "Non demon Mailer" würden Sie den vorschlagen?

@inne :THX:

Das # zu entfernen bringst voll. Jetzt kommen Mails, 6 an der zahl! :lol:
2 Enthalten das Datum, ein den log, und 3 Fehler Meldungen.

Code: Alles auswählen

To: Backup@debian.net, begins@debian.net, Main@debian.net,
 process@debian.net, "profile:"@debian.net, root@debian.net
Subject: Backintime
Diese haben damit zu tun dass es einige dieser user nicht gibt. Hier eine der Mails mit Fehler Meldungen.

Code: Alles auswählen

This is the mail system at host debian.net.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<begins@debian.net> (expanded from <begins>): unknown user: "begins"

<Main@debian.net> (expanded from <Main>): unknown user: "main"

<process@debian.net> (expanded from <process>): unknown user: "process"
Bei den dreien die passen steht als subject Backintime

TomL

Re: Backintime script

Beitrag von TomL » 09.07.2018 17:08:24

Meiner Meinung nach ist der Befehl falsch geschrieben... gleich 3 Fehler. Richtig müsste es imho so aussehen:

Code: Alles auswählen

 echo -e "$(date) \n$@" | mail -s "$subject" "$email"
Damit ist zumindest die Abgrenzung zwischen Subjekt und Empfänger gewährleistet... auch dann, wenn der Subjekt aus mehreren mit Blanks getrennten Worten besteht.

Statt Postfix für diese Miniaufgabe:
https://wiki.archlinux.org/index.php/Msmtp

inne
Beiträge: 3272
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Backintime script

Beitrag von inne » 09.07.2018 17:24:53

Die Variable $email würde bzw. muss nicht zwingend geqotet werden. Dafür können laut Hanbuchseite mehere angegeben werden. Könnte fehlerhaft sein.

kocj
Beiträge: 18
Registriert: 09.02.2018 05:10:52

Re: Backintime script

Beitrag von kocj » 09.07.2018 18:57:19

So jetzt klappt es, und dabei haben nur noch die "Gänsefüßchen" gefehlt. :facepalm: Für alle interessierten.

Code: Alles auswählen

#!/bin/bash
#    Copyright (c) 2012-2014 Germar Reitze
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


#Script should return 0 if everything is alright. Returncode !0 will cancle
#the running snapshot (BIT version >1.1.0).

email="foo@bar"
profile_id="$1"
profile_name="$2"
reason="$3"
errorcode="$4"

function send_mail {
    subject="Backintime $profile_name: $1"
    shift
    echo -e "$(date) \n$@" | mail -s "$subject" $email
}

function log_id {
    if [ $profile_id -gt 1 ]; then
        echo $profile_id
    else
        echo ""
    fi
}

case $reason in
    1) send_mail "Backup process begins"
         ;;
    2) send_mail "Backup process ends" "$(cat ~/.local/share/backintime/takesnapshot_$(log_id).log)"
         ;;
    3) send_mail "A new snapshot was taken"
         ;;
    4) #There was an error
        case $errorcode in
            1) send_mail "ERROR" "The application is not configured"
                  ;;
            2) send_mail "ERROR" "A 'take snapshot' process is already running"
                  ;;
            3) send_mail "ERROR" "Can't find snapshots folder (is it on a removable drive ?)"
                  ;;
            4) send_mail "ERROR" "A snapshot for 'now' already exist"
                  ;;
        esac
        ;;
esac
Das Subjekt schaut dann so aus: Backintime: Main profile: Backup process ends

Danke für die Hilfe. :hail:

Antworten