Hallo, ich versuche eine if Abfrage zu erstellen in der folgender Befehl integriert werden soll
grep -rnwi /mnt/install/config/ws/sophie/backups/archiv/ -e' 11
Ausdruck:
/mnt/install/config/ws/sophie/backups/archiv/backup.log:14:/home/data wurde Archiviert Fr Dez 11 14:15:36 UTC 2020
Ziel ist es zu prüfen ob heute bereits ein Datenbackup von /home/data ausgeführt wurde.
Leider klappt es nicht
ui=grep -rnwi /mnt/install/config/ws/sophie/backups/archiv/ -e' 11
if [ find $ui $gi ]
then
echo "Wurde ausgefuehrt"
else
echo "Nicht vorhanden"
fi
grep Anfrage im if-Befehl
Re: grep Anfrage im if-Befehl
Mit grep -q unterdrückst du die Ausgabe und betrachtest einzig den Rückgabewert (gefunden oder nicht gefunden). In einem if angewendet z.B.
Also ohne (test-)Abfrage [ ... ].
grep sucht in und findet Dateien. find erwartet als ersten Parameter ein (Start-)Verzeichnis. Was genau willst du machen?
Code: Alles auswählen
if grep -q ...; then
...
fi
grep sucht in und findet Dateien. find erwartet als ersten Parameter ein (Start-)Verzeichnis. Was genau willst du machen?
Re: grep Anfrage im if-Befehl
Hallo @tobo
Dank Dir bin ich nun soweit:
gi=$(date +%d)
cd /mnt/install/config/ws/sophie/backups/archiv
if grep $gi -q backup.log
then
echo "HALLO, da bin ich"
else
echo "Error"
fi
und es kommt Error
> Was genau willst du machen?
Hintergrund ist, dass wenn ein neues Backup ausgeführt wurde mir eine Mail zugestellt werden soll.
Der Mail-Versand klappt auch, nur wird das Mail gleich mehrmals am gleichen Tag zugestellt (Anacron falsch?)
# Alle 0 Tage und 33-Minuten nachdem Sophie gestartet wurde
0 33 findupdate /mnt/install/config/ws/sophie/backups/local/findupdate
Fakt ist, der Mail-Versand funktioniert doch wird es mehremal am gleichen Tag zugestellt. Und immer im Bezug auf das gleiche Erreignis.
Hier der Ausdruck vom backup.log
/home/public wurde Archiviert Do Dez 10 08:09:08 UTC 2020
/home/share wurde Archiviert Do Dez 10 08:21:08 UTC 2020
/home/data wurde Archiviert Fr Dez 11 14:15:36 UTC 2020
/home/virtual wurde Archiviert Sa Dez 12 08:52:28 UTC 2020
die Uhrzeit???
Dank Dir bin ich nun soweit:
gi=$(date +%d)
cd /mnt/install/config/ws/sophie/backups/archiv
if grep $gi -q backup.log
then
echo "HALLO, da bin ich"
else
echo "Error"
fi
und es kommt Error
> Was genau willst du machen?
Hintergrund ist, dass wenn ein neues Backup ausgeführt wurde mir eine Mail zugestellt werden soll.
Der Mail-Versand klappt auch, nur wird das Mail gleich mehrmals am gleichen Tag zugestellt (Anacron falsch?)
# Alle 0 Tage und 33-Minuten nachdem Sophie gestartet wurde
0 33 findupdate /mnt/install/config/ws/sophie/backups/local/findupdate
Fakt ist, der Mail-Versand funktioniert doch wird es mehremal am gleichen Tag zugestellt. Und immer im Bezug auf das gleiche Erreignis.
Hier der Ausdruck vom backup.log
/home/public wurde Archiviert Do Dez 10 08:09:08 UTC 2020
/home/share wurde Archiviert Do Dez 10 08:21:08 UTC 2020
/home/data wurde Archiviert Fr Dez 11 14:15:36 UTC 2020
/home/virtual wurde Archiviert Sa Dez 12 08:52:28 UTC 2020
die Uhrzeit???
Re: grep Anfrage im if-Befehl
Theoretisch sollte dein Text sogar funtionieren - Er sucht nach dem heutigen Tag (12) und "sollte" "/home/virtual wurde Archiviert Sa Dez 12 08:52:28 UTC 2020" finden. Aber ja, er würde auch eine 12 bei den Sekunden finden. Falls du Einfluss auf das Datum in der Log-Datei hast, dann würde ich deutlich zu einem sortierbaren US-Datum raten und dann auch danach mittels grep suchen:
Außerdem solltest du Variablen, wenn nicht ausdrücklich anders gewollt, gequotet weitergeben. Reduziert Fehler um 95%. Und Einrückungen machen einen Text deutlich besser lesbar.
Also ich würde dann etwa eine solche Log-Datei
ungefähr so durchsuchen:
Code: Alles auswählen
$ date "+%a %F %T"
Sat 2020-12-12 11:23:55
Also ich würde dann etwa eine solche Log-Datei
Code: Alles auswählen
/home/public wurde Archiviert Do 2020-12-10 08:09:08
/home/share wurde Archiviert Do 2020-12-10 08:21:08
/home/data wurde Archiviert Fr 2020-12-11 14:15:36
/home/virtual wurde Archiviert Sa 2020-12-12 08:52:28
Code: Alles auswählen
LOG_FILE="/mnt/install/config/ws/sophie/backups/archiv/backup.log"
##Zeitstempel im Logfile erzeugt mit date "+%a %F %T"
gi="$(date "+%F")"
if grep "$gi" -q "$LOG_FILE"; then
echo "HALLO, da bin ich"
else
echo "Error"
fi
Re: grep Anfrage im if-Befehl
@tobo
Datum wurde korrigiert.
Bleibt noch zu verhindern, dass ich x Mails pro Tag vom gleichen Ereignis bekomme.
Wie würdest du es lösen?
Datum wurde korrigiert.
Bleibt noch zu verhindern, dass ich x Mails pro Tag vom gleichen Ereignis bekomme.
Wie würdest du es lösen?
Re: grep Anfrage im if-Befehl
x Mails bedeutet wohl, dass x Backups laufen (oder was bedeutet gleiches Ereignis)!? Stellt sich die Frage was stört?! Sollen die Backups mehrfach am Tag lauefen, aber nicht mehrfach E-Mails geschickt werden oder soll nur ein Backup pro Tag laufen?mosa hat geschrieben:12.12.2020 16:42:30
Bleibt noch zu verhindern, dass ich x Mails pro Tag vom gleichen Ereignis bekomme.
Wie würdest du es lösen?
0 = period und 33 ist delay. Bei der Periode entspricht die 1 täglich, 7= wöchentlich (alle 7 Tage), 30 monatlich und z.B. 23 alle 23 Tage. Die 0 ist undokumentiert, zumindest finde ich nichts darüber. Wenn der Job täglich nur einmal laufen soll, dann gehört dort eine 1 hin. Andernfalls sllltest du noch findupdate zeigen oder soll oben das schon grob das Skript darstellen?# Alle 0 Tage und 33-Minuten nachdem Sophie gestartet wurde
0 33 findupdate /mnt/install/config/ws/sophie/backups/local/findupdate
Re: grep Anfrage im if-Befehl
Vielen Dank @tobo
Habe der Anacron Befehl wie von Dir angemerkt verändert.
Seit 3 Stunden keine Mail mehr
Alles Gute und bleib Gesund
Habe der Anacron Befehl wie von Dir angemerkt verändert.
Seit 3 Stunden keine Mail mehr
Alles Gute und bleib Gesund