[erledigt] Auf Nachricht in /var/log/messages warten
[erledigt] Auf Nachricht in /var/log/messages warten
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
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.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
-
- Beiträge: 67
- Registriert: 14.02.2011 09:45:53
Re: Auf Nachricht in /var/log/messages warten
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
dort wird dann nach Unikaten gesucht wie z.B. als nächstes wird eine passende udev Regel benötigt
und zu letzt dein Backup-Script.
Vielleicht hilft dir dies als Lösung weiter
Gruß bitschubser
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
Code: Alles auswählen
ID_MODEL=TS32GSSD25-M
ID_SERIAL=TS32GSSD25-M_A49528E432829F000044
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"
Vielleicht hilft dir dies als Lösung weiter
Gruß bitschubser
Re: Auf Nachricht in /var/log/messages warten
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
Re: Auf Nachricht in /var/log/messages warten
Code: Alles auswählen
while ! grep -q "TEST WORD" /var/log/messages; do
sleep "$WAIT"
done
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
Re: Auf Nachricht in /var/log/messages warten
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
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
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Vielen Dank für die Idee!bitschubser hat geschrieben:11.09.2020 15:21:45Ich 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
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
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
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.
Sitzt man eh vor dem Teil und stöpselt selbst ein, sieht das alles irgendwie überdimensioniert und künstlich aus!?Wuerde ein einfacher Test, ob der mount geklappt hat nicht reichen?
Re: Auf Nachricht in /var/log/messages warten
Du könntest einen Timer mit einer Bedingung dazwischen setzen. Etwa so:GregorS hat geschrieben:11.09.2020 17:59:04Vielen Dank für die Idee!bitschubser hat geschrieben:11.09.2020 15:21:45Ich 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
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
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.
Re: Auf Nachricht in /var/log/messages warten
Gregor moechte den Ablauf halt so...tobo hat geschrieben:11.09.2020 18:15:14Sitzt man eh vor dem Teil und stöpselt selbst ein, sieht das alles irgendwie überdimensioniert und künstlich aus!?
Erst script starten, dann Platte einstoepseln.
Scripten macht ja auch Spass...
Drei einfache Moeglichkeiten, die mir spontan einfallen um zu testen ob es die richtige Platte ist.GregorS hat geschrieben:11.09.2020 17:35:00Ledliglich die „Bezeichnung“ der Backup-Platte könnte sich ändern, wenn z.B. noch ein USB-Stick im Rechner steckt.
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
Re: Auf Nachricht in /var/log/messages warten
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
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
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.
Re: Auf Nachricht in /var/log/messages warten
Woher das Script wissen soll, was ich will?! Dadurch dass es läuftTintom hat geschrieben:11.09.2020 18:48:13Nun, 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.
Könnte man nicht noch etwas mit /dev/cloud einbauen?
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Dann lese ich jetzt gespannt mit welche simple Lösung am Ende bei deinem Skript herauskommtGregorS hat geschrieben:11.09.2020 19:05:17Woher das Script wissen soll, was ich will?! Dadurch dass es läuftTintom hat geschrieben:11.09.2020 18:48:13Nun, 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.GregorS hat geschrieben: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.
Könnte man nicht noch etwas mit /dev/cloud einbauen?
Gruß
Gregor
Re: Auf Nachricht in /var/log/messages warten
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.Tintom hat geschrieben:11.09.2020 19:08:21Dann lese ich jetzt gespannt mit welche simple Lösung am Ende bei deinem Skript herauskommt
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Ich muss zurückrudern. Ich hatte das überlesen:
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.GregorS hat geschrieben:11.09.2020 17:35:00Die 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.
[...]
Re: Auf Nachricht in /var/log/messages warten
Ja. Automatismen sind mir inzwischen zuwider.
Je erdbebensicherer die Lösung, desto sympathischer. Sympathiepunkte bekommen auserdem Tools, die möglichst alt, bewährt und auch anderswo (z.B. BSD) verfügbar sind.
Gruß
Gregor
PS: Mein erstes quick-and-dirty-Skript, wo eben das Warten noch fehlt:
Code: Alles auswählen
#!/bin/bash
# Auf Meldungen in /var/log/messages warten
mount /dev/sdh1 /media/backup
umount /home/gszaktilla/dokumente/datensammlung/video
umount /home/gszaktilla/dokumente/datensammlung
echo -n "Kopiere /home/gszaktilla ... "
if [ -e /media/backup/home/gszaktilla ]; then
cp -ar /home/gszaktilla/* /media/backup/home/gszaktilla/
fi
echo "fertig."
mount /home/gszaktilla/dokumente/datensammlung
mount /home/gszaktilla/dokumente/datensammlung/video
echo -n "Gleiche /home/gszaktilla/dokumente/datensammlung ab ... "
if [ -e /media/backup/datensammlung ]; then
rsync --exclude=lost+found/ -auqEhs \
/home/gszaktilla/dokumente/datensammlung/* \
/media/backup/datensammlung/
fi
echo "fertig."
umount /dev/sdh1
echo "--- Backup beendet ---"
echo
# eof
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Vielen Dank! Das führt schon einmal in eine gute Richtung.swick hat geschrieben:11.09.2020 20:25:23https://packages.debian.org/swatch
https://www.tecmint.com/swatch-linux-log-file-watcher/
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Hallo nochmal!
Inzwischen fiel mir ein, dass ich auch bei linuxquestions.org fragen könnte. Gesagt, getan. Ergebnis ist, dass ich den Kopf meines ersten quick-and-dirty-Scripts wie folgt geändert habe:
Das weitere Vorgehen dürfte nur noch ein bisschen Tipparbeit sein (z.B. gucken, ob jetzt auf /dev/sdh die Backup-Platte hängt).
Gruß
Gregor
Inzwischen fiel mir ein, dass ich auch bei linuxquestions.org fragen könnte. Gesagt, getan. Ergebnis ist, dass ich den Kopf meines ersten quick-and-dirty-Scripts wie folgt geändert habe:
Code: Alles auswählen
# Auf Meldungen in /var/log/messages warten
tail -n 1 -f /var/log/messages | awk '/Spinning up disk.../ { exit; }'
echo -n "Platte wurde angeschlossen, warte auf Bereitschaft ..."
tail -n 1 -f /var/log/messages | awk '/.....ready/ { exit; }'
echo " bereit."
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Auf Nachricht in /var/log/messages warten
Also bei der Vorgehensweise wäre es sinnvoller, du machst es weiterhin komplett per Hand. Ein paar Anregungen:GregorS hat geschrieben:11.09.2020 20:01:21
PS: Mein erstes quick-and-dirty-Skript, wo eben das Warten noch fehlt:
Code: Alles auswählen
mount /dev/sdh1 /media/backup
Mit den angesprochenen UDEV-Regeln von @bitschubser umgehst du diesen Punkt elegant, indem die Platte dann als /dev/meinebackupplatte oder alternativ unter /dev/disk/by-xxx/ auftaucht (letzteres sogar per default). Das spart dir auch das parsen von /var/log/messages und somit ein zweites Skript.
Code: Alles auswählen
umount /home/gszaktilla/dokumente/datensammlung/video
umount /home/gszaktilla/dokumente/datensammlung
<...>
mount /home/gszaktilla/dokumente/datensammlung
mount /home/gszaktilla/dokumente/datensammlung/video
Code: Alles auswählen
echo -n "Kopiere /home/gszaktilla ... "
<...>
echo "fertig."
<...>
echo "fertig."
Code: Alles auswählen
cp -ar /home/gszaktilla/* /media/backup/home/gszaktilla/
Code: Alles auswählen
umount /dev/sdh1
Re: Auf Nachricht in /var/log/messages warten
Was zur Hölle hast Du jetzt mit einem zweiten Script?!Tintom hat geschrieben:12.09.2020 06:52:04... Das spart dir auch das parsen von /var/log/messages und somit ein zweites Skript.
Du weißt anscheinend nicht, was „quick and dirty“ bedeutet. Das steht für „schnell dahingekritzelt“, „provisorisch“ „work in progress“. Und ein Trugschluss sind die Meldungen keineswegs -- cp und rsync haben ihre Arbeit beendet, das ist alles. Dass man noch eine Fehlerbehandlung einbauen könnte, ist mir klar.Die Meldungen sind ein Trugschluss. Sie tauchen auch auf wenn rsync/cp gescheitert sindCode: Alles auswählen
echo -n "Kopiere /home/gszaktilla ... " <...> echo "fertig." <...> echo "fertig."
Könntest Du bitte den Teil der Doku zitieren, aus dem das hervorgeht?-a impliziert -r, ist also doppeltCode: Alles auswählen
cp -ar /home/gszaktilla/* /media/backup/home/gszaktilla/
Nein. Das ist korrekt und funktioniert.Ist falsch.Code: Alles auswählen
umount /dev/sdh1
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: [erledigt] Auf Nachricht in /var/log/messages warten
Ich antworte einfach mal...
man cp
Erste Seite:
Ist also doppelt aber funktioniert natuerlich trotzdem.
man umount
Erste Seite:
Gruss,
heinz
Hab gerade mal nachgesehen:GregorS hat geschrieben:12.09.2020 13:29:29Code: Alles auswählen
cp -ar /home/gszaktilla/* /media/backup/home/gszaktilla/
-a impliziert -r, ist also doppelt
Könntest Du bitte den Teil der Doku zitieren, aus dem das hervorgeht?
man cp
Erste Seite:
Code: Alles auswählen
-a, --archive
Genau wie -dR --preserve=all
Ist zwar korrekt und funktioniert aber ist laut man umount "obsolete", da es nicht immer korrekt funktioniert.GregorS hat geschrieben:12.09.2020 13:29:29Code: Alles auswählen
umount /dev/sdh1
Ist falsch.
Nein. Das ist korrekt und funktioniert.
man umount
Erste Seite:
Code: Alles auswählen
Giving the special device on which the file system
lives may also work, but is obsolete, mainly because it will fail in
case this device was mounted on more than one directory.
heinz
Re: [erledigt] Auf Nachricht in /var/log/messages warten
Lies das bitte nochmal und denk nach.heinz hat geschrieben:12.09.2020 14:06:27Ist zwar korrekt und funktioniert aber ist laut man umount "obsolete", da es nicht immer korrekt funktioniert.GregorS hat geschrieben:12.09.2020 13:29:29Nein. Das ist korrekt und funktioniert.umount /dev/sdh1
Ist falsch.
man umount
Erste Seite:Code: Alles auswählen
Giving the special device on which the file system lives may also work, but is obsolete, mainly because it will fail in case this device was mounted on more than one directory.
Es geht um den Computer, der hier unter dem Schreibtisch steht. Ich bin der Einzige mit root-Zugang und überhaupt der Einzige, der Zugang zu der Kiste hat. Wie wahrscheinlich ist wohl, dass ich das Laufwerk ein zweites Mal mounte, nachdem ich das Script gestartet habe?!
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: [erledigt] Auf Nachricht in /var/log/messages warten
Warum? Ich schrieb doch, das diese Art korrekt ist und funktioniert.
Das die Methode "obsolete" ist, war wohl der Grund warum Tintom geschrieben hat es waere falsch.
Manchmal fliegen obsolete Funktionen ja auch irgendwann raus.
War schon korrekt von Tintom Dich darauf hinzuweisen.
Gruss,
heinz
Re: [erledigt] Auf Nachricht in /var/log/messages warten
Hallo nochmal!
Bitte lasst diesen Thread sterben.
Die Ursprungsfrage ist beantwortet.
Gruß
Gregor
Bitte lasst diesen Thread sterben.
Die Ursprungsfrage ist beantwortet.
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])