[erledigt] Auf Nachricht in /var/log/messages warten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

[erledigt] Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 01:51:19

Hallo allerseits!

Ich möchte ein Backup-Script schreiben. Zu Anfang soll darauf gewartet werden, dass bestimmte Meldungen in /var/log/messages erscheinen (fett markiert):


Sep 11 01:47:06 mimi kernel: [50974.093519] sd 7:0:0:0: [sdh] Spinning up disk...
Sep 11 01:47:06 mimi mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-6/3-6.1"
Sep 11 01:47:06 mimi mtp-probe: bus: 3, device: 3 was not an MTP device
Sep 11 01:47:06 mimi mtp-probe: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-6/3-6.1"
Sep 11 01:47:06 mimi mtp-probe: bus: 3, device: 3 was not an MTP device
Sep 11 01:47:16 mimi kernel: [50975.123016] .........ready


Danach soll im Script gemountet werden und ein paar weitere Befehle laufen.

Wie kann ich das mit dem Warten bewerkstelligen? Müsste das nicht mit awk gehen?

Gruß

Gregor
Zuletzt geändert von GregorS am 12.09.2020 02:07:38, insgesamt 1-mal geändert.
Ohne Computer hätte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

bitschubser
Beiträge: 56
Registriert: 14.02.2011 09:45:53

Re: Auf Nachricht in /var/log/messages warten

Beitrag von bitschubser » 11.09.2020 15:21:45

Hallo

Ich hätte da eine andere Lösung die zum Ziel führt.
Via udev Regel die Platte abfragen und wenn sie gesteckt wurde das Backup-Script starten

Code: Alles auswählen

udevadm info /dev/sdh1
dort wird dann nach Unikaten gesucht wie z.B.

Code: Alles auswählen

ID_MODEL=TS32GSSD25-M
ID_SERIAL=TS32GSSD25-M_A49528E432829F000044
als nächstes wird eine passende udev Regel benötigt

Code: Alles auswählen

nano /etc/udev/rules.d/99-my-backup.rules

SUBSYSTEMS=="scsi", ATTRS{model}=="TS32GSSD25-M", RUN+="/path/my-backup-script.sh"
und zu letzt dein Backup-Script.

Vielleicht hilft dir dies als Lösung weiter

Gruß bitschubser

tobo
Beiträge: 849
Registriert: 10.12.2008 10:51:41

Re: Auf Nachricht in /var/log/messages warten

Beitrag von tobo » 11.09.2020 15:44:57

GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 01:51:19
Wie kann ich das mit dem Warten bewerkstelligen?
Das was du beschreibst sollte so funktionieren:

Code: Alles auswählen

#!/bin/sh

WAIT=1s     ##1 second

while ! grep -q "TEST WORD" /var/log/messages; do
    sleep "$WAIT"
done

#mount ...
#other commands ...

exit 0 
Anzupassen wären die Zeitspanne, das zu suchende Muster und die Befehle unter der Schleife.

Benutzeravatar
heinz
Beiträge: 419
Registriert: 20.12.2007 01:43:49

Re: Auf Nachricht in /var/log/messages warten

Beitrag von heinz » 11.09.2020 17:09:00

Code: Alles auswählen

while ! grep -q "TEST WORD" /var/log/messages; do
    sleep "$WAIT"
done
Das ist keine so gute Idee, denke ich.

Stell Dir vor, Du steckst [sdh] ein, ziehst sie wieder ab und startest dann das script.
Oder die TEST-Worte sind noch vom Vortag drin...
Beides mal wuerde das Backupscript starten, ohne "vorhandene" Platte.
Da sollte zumindest noch ein, auf die letzten Zeilen beschraenkendes, tail davor.

Wuerde ein einfacher Test, ob der mount geklappt hat nicht reichen?

Ungetestet!

Code: Alles auswählen

while ! mount /dev/sdh /mnt/irgendwas 2>/dev/null
do
  sleep .5
done
Gruss, heinz

Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

Re: Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 17:35:00

Hallo nochmal!

Danke schonmal für Eure Antworten!

Die Idee, die ich verfolge:

- Ich starte das Backup-Script
- erst dann stöpsle ich die externe Platte an
- sobald festgestellt wurde, dass die Platte eingestöpselt und hochgefahren ist, fährt das Script mit seiner Arbeit fort, d.h.

- Backup-Platte mounten
- unterhalb von /home/gszaktilla gemountete Platten aushängen
- Backup von /home/gszaktilla per 'cp -ar'
- meine Datensammlung wieder einhängen
- rsync-Backup von /home/gszaktilla/dokumente/datensammlung nach /media/backup/datensammlung

Ledliglich die „Bezeichnung“ der Backup-Platte könnte sich ändern, wenn z.B. noch ein USB-Stick im Rechner steckt. Dann wäre nicht sdh1 zu mounten, sondern sdi1.

Gruß

Gregor
Ohne Computer hätte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

Re: Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 17:59:04

bitschubser hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 15:21:45
Ich hätte da eine andere Lösung die zum Ziel führt.
Via udev Regel die Platte abfragen und wenn sie gesteckt wurde das Backup-Script starten
Vielen Dank für die Idee!

Das würde allerdings bedeuten, dass das Script gestartet wird, sobald die Platte angestöpselt wird - auch, wenn ich nur „etwas aus dem Archiv holen“ möchte. Das macht Deine Lösung unbrauchbar (ist aber trotzdem interessant).

Gruß

Gregor
Ohne Computer hätte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

tobo
Beiträge: 849
Registriert: 10.12.2008 10:51:41

Re: Auf Nachricht in /var/log/messages warten

Beitrag von tobo » 11.09.2020 18:15:14

heinz hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 17:09:00
Das ist keine so gute Idee, denke ich.
Da hast du wohl recht!

Für das Problem, dass das gesuchte bereits im Log steht, würde ich dann auch ein tail -n vor das grep schieben. Anstecken/Abziehen, da würde ich auf den Ersetzungstext von ".........ready" setzen, als dann spezifische Erfolgsmeldung. Das sollte dann auch einen möglicherweise geänderten Laufwerksnamen durch z.B. einen zusätzlichen USB-Datenträger abdecken.
Wuerde ein einfacher Test, ob der mount geklappt hat nicht reichen?
Sitzt man eh vor dem Teil und stöpselt selbst ein, sieht das alles irgendwie überdimensioniert und künstlich aus!?

Benutzeravatar
Tintom
Beiträge: 1971
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Auf Nachricht in /var/log/messages warten

Beitrag von Tintom » 11.09.2020 18:32:57

GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 17:59:04
bitschubser hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 15:21:45
Ich hätte da eine andere Lösung die zum Ziel führt.
Via udev Regel die Platte abfragen und wenn sie gesteckt wurde das Backup-Script starten
Vielen Dank für die Idee!

Das würde allerdings bedeuten, dass das Script gestartet wird, sobald die Platte angestöpselt wird - auch, wenn ich nur „etwas aus dem Archiv holen“ möchte. Das macht Deine Lösung unbrauchbar (ist aber trotzdem interessant).

Gruß

Gregor
Du könntest einen Timer mit einer Bedingung dazwischen setzen. Etwa so:
sleep 30
if [ -e /tmp/.backup-lock ];then
<kein backup>
else
<backup>
fi

Möchtest du nur Daten aus der Sicherung holen hast du genau 30s Zeit um die Datei /tmp/.backup-lock anzulegen. Unterlässt du es, startet das Backup, ist die Datei vorhanden passiert nichts.

Benutzeravatar
heinz
Beiträge: 419
Registriert: 20.12.2007 01:43:49

Re: Auf Nachricht in /var/log/messages warten

Beitrag von heinz » 11.09.2020 18:38:24

tobo hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:15:14
Sitzt man eh vor dem Teil und stöpselt selbst ein, sieht das alles irgendwie überdimensioniert und künstlich aus!?
Gregor moechte den Ablauf halt so...
Erst script starten, dann Platte einstoepseln.
Scripten macht ja auch Spass...
GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 17:35:00
Ledliglich die „Bezeichnung“ der Backup-Platte könnte sich ändern, wenn z.B. noch ein USB-Stick im Rechner steckt.
Drei einfache Moeglichkeiten, die mir spontan einfallen um zu testen ob es die richtige Platte ist.

1. Gib dem Dateisystem der Backupplatte ein eizigartiges Label.
2. Lege im Hauptverzeichnis der Backupplatte eine Datei ohne Inhalt mit einem einzigartigen Namen an.
3. Nutze die UUID.

Gruss, heinz

Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

Re: Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 18:41:59

Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:32:57
...
LOL!

Es geht bestimmt noch umständlicher. Bestimmt!

Mir ist wichtig, dass es so simpel ist, wie möglich: Script starten, Platte stöpseln, warten, fertig.

Gruß

Gregor
Ohne Computer h&auml;tte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

Benutzeravatar
Tintom
Beiträge: 1971
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Auf Nachricht in /var/log/messages warten

Beitrag von Tintom » 11.09.2020 18:48:13

GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:41:59
Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:32:57
...
LOL!

Es geht bestimmt noch umständlicher. Bestimmt!

Mir ist wichtig, dass es so simpel ist, wie möglich: Script starten, Platte stöpseln, warten, fertig.

Gruß

Gregor
Nun, woher soll dein Skript wissen wann du ein vollständiges Backup fahren und wann du eine Datei auslesen möchtest? Wenn du keine Usereingaben machen willst, brauchst du als Alternative andere Kriterien (Tag, Uhrzeit, verwendeter USB-Port,...), anhand derer das Skript die Infos auswerten kann.

Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

Re: Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 19:05:17

Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:48:13
GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:41:59
Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:32:57
...
LOL!
Es geht bestimmt noch umständlicher. Bestimmt!
Mir ist wichtig, dass es so simpel ist, wie möglich: Script starten, Platte stöpseln, warten, fertig.
Nun, woher soll dein Skript wissen wann du ein vollständiges Backup fahren und wann du eine Datei auslesen möchtest? Wenn du keine Usereingaben machen willst, brauchst du als Alternative andere Kriterien (Tag, Uhrzeit, verwendeter USB-Port,...), anhand derer das Skript die Infos auswerten kann.
Woher das Script wissen soll, was ich will?! Dadurch dass es läuft ;-)

Könnte man nicht noch etwas mit /dev/cloud einbauen?

Gruß

Gregor
Ohne Computer h&auml;tte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

Benutzeravatar
Tintom
Beiträge: 1971
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Auf Nachricht in /var/log/messages warten

Beitrag von Tintom » 11.09.2020 19:08:21

GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 19:05:17
Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:48:13
GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 18:41:59

LOL!
Es geht bestimmt noch umständlicher. Bestimmt!
Mir ist wichtig, dass es so simpel ist, wie möglich: Script starten, Platte stöpseln, warten, fertig.
Nun, woher soll dein Skript wissen wann du ein vollständiges Backup fahren und wann du eine Datei auslesen möchtest? Wenn du keine Usereingaben machen willst, brauchst du als Alternative andere Kriterien (Tag, Uhrzeit, verwendeter USB-Port,...), anhand derer das Skript die Infos auswerten kann.
Woher das Script wissen soll, was ich will?! Dadurch dass es läuft ;-)

Könnte man nicht noch etwas mit /dev/cloud einbauen?

Gruß

Gregor
Dann lese ich jetzt gespannt mit welche simple Lösung am Ende bei deinem Skript herauskommt :THX:

Benutzeravatar
GregorS
Beiträge: 1091
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg

Re: Auf Nachricht in /var/log/messages warten

Beitrag von GregorS » 11.09.2020 19:14:30

Tintom hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 19:08:21
Dann lese ich jetzt gespannt mit welche simple Lösung am Ende bei deinem Skript herauskommt
Inzwischen ist mir eingefallen, dass ich ein ähnliches Problem einmal mit awk gelöst hatte. Leider ist das länger her (> 20 Jahre). Ich werde mal man awk lesen und gucken, ob es verwertbare Beispiele gibt.

Gruß

Gregor
Ohne Computer h&auml;tte ich andere Probleme. Außerdem versichere ich, dass ich mindestens so alt bin wie 'oldstable'.

Benutzeravatar
Tintom
Beiträge: 1971
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Auf Nachricht in /var/log/messages warten

Beitrag von Tintom » 11.09.2020 19:38:07

Ich muss zurückrudern. Ich hatte das überlesen:
GregorS hat geschrieben: ↑ zum Beitrag ↑
11.09.2020 17:35:00
Die Idee, die ich verfolge:

- Ich starte das Backup-Script
- erst dann stöpsle ich die externe Platte an
- sobald festgestellt wurde, dass die Platte eingestöpselt und hochgefahren ist, fährt das Script mit seiner Arbeit fort, d.h.

[...]
Du möchtest also das Skript manuell starten. Mein Gedanke war es die Idee von @bitschubser aufzugreifen und das Ganze automatisiert ablaufen zu lassen - ohne Interaktion des Benutzers. Das vereinfacht die Sache natürlich.

Antworten