#! /bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin
LOCKFILE=/var/lock/steckdose.lock
# Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
cleanup() {
rm -f "$LOCKFILE"
exit
}
if lockfile -! -r 0 "$LOCKFILE"; then
echo "Steckdosen/Backup kontrollieren" | mail -s "Backup-Warnung" root
exit
fi
#(sispmctl -o 1 schaltet die Steckdose ein,
# sispmctl -f 1 schaltet sie aus)
sispmctl -o 1
sleep 2m
Wie gehts jetzt weiter? Wenn die Platte an USB hängt, wird sie ja immer
am gleichen Port gefunden, sobald sie eingeschaltet wird. Vielleicht
kann man das mit einem fdisk -l |grep sd<?> abfragen oder so??
Über Anregungen würde ich mich freuen ... danke schon mal,
M.
> Wie gehts jetzt weiter? Wenn die Platte an USB hängt, wird sie ja immer
> am gleichen Port gefunden, sobald sie eingeschaltet wird.
Am gleichen USB-Port wohl schon, das heißt aber nicht unbedingt, daß sie
auch das gleiche Device kriegt (/dev/sd?). Was passiert, wenn mal jemand
einen USB-Stick vergessen hat abzuziehen?
Du könntest, wenn Du udev verwendest, /dev/disk/by-uuid/XXX verwenden,
oder findfs, das kann Dir zu einer UUID oder einem Label das passende
device ausgeben.
Damit kann man dann schön was basteln.
Und wenn Du gern Hosenträger und Gürtel trägst, legst Du ins root Deiner
Backuppartition noch eine Datei (z.B. backup0815), deren Existenz Du nach
dem Mounten abfragst.
NDT
Pit
> Du könntest, wenn Du udev verwendest, /dev/disk/by-uuid/XXX verwenden,
Oh mit udev habe ich noch nie was gemacht ... gibts irgendwo gescheite
Vorlagen?
> oder findfs, das kann Dir zu einer UUID oder einem Label das passende
> device ausgeben. Damit kann man dann schön was basteln.
Klingt gut -- müsste machbar sein. findfs ist auf dem Server
installiert. Allerdings scheint es nicht so richtig zu laufen. Ich habe
unter /dev/disk/by-uuid nachgesehen aber
findfs UUID=<nummer>
liefert immer nur
findfs: Nicht möglich »UUID=0.. 6c« aufzulösen -- ansonsten könnte es
damit klappen...
> Und wenn Du gern Hosenträger und Gürtel trägst
wie muss ich das verstehen? Tue ich zwar nicht aber wer macht das schon???
> legst Du ins root Deiner
> Backuppartition noch eine Datei (z.B. backup0815), deren Existenz Du nach
> dem Mounten abfragst.
Du meinst aus Paranoia oder wieso?
>NDT
Nondestructive Testing??
Michael
hth,
Lutz
>> Du könntest, wenn Du udev verwendest, /dev/disk/by-uuid/XXX verwenden,
> Oh mit udev habe ich noch nie was gemacht ... gibts irgendwo gescheite
> Vorlagen?
Brauchst Du, glaube ich, nicht. Im Zuge Deines Vorhabens brauchst Du an
der udev-Konfiguration erstmal nichts ändern. Du nutzt halt nur die von
udev angelegten Devices.
>
>> oder findfs, das kann Dir zu einer UUID oder einem Label das passende
>> device ausgeben. Damit kann man dann schön was basteln.
> Klingt gut -- müsste machbar sein. findfs ist auf dem Server
> installiert. Allerdings scheint es nicht so richtig zu laufen. Ich habe
> unter /dev/disk/by-uuid nachgesehen aber findfs UUID=<nummer>
> liefert immer nur
> findfs: Nicht möglich »UUID=0.. 6c« aufzulösen -- ansonsten könnte es
> damit klappen...
Warst Du root oder hattest anderweitig Lesezugriff auf die Diskdevices
(bei meinem Ubuntu wäre das z.B. Gruppenzugehörigkeit "disk")?
>
>> Und wenn Du gern Hosenträger und Gürtel trägst
> wie muss ich das verstehen? Tue ich zwar nicht aber wer macht das
> schon???
Das war ein Bild: doppelt abgesichert ;-)
>
>> legst Du ins root Deiner
>> Backuppartition noch eine Datei (z.B. backup0815), deren Existenz Du
>> nach dem Mounten abfragst.
> Du meinst aus Paranoia oder wieso?
So kann man's auch nennen. Halt um wirklich 200% sicher zu gehen...
>
> >NDT
> Nondestructive Testing??
Die Interpretation gefällt mir :-)
Na denn tschüs
Pit
#! /bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
LOCKFILE=/var/lock/steckdose.lock
# Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
cleanup() {
rm -f "$LOCKFILE"
exit
}
if lockfile -! -r 0 "$LOCKFILE"; then
echo "Steckdosen/Backup kontrollieren" | mail -s "Backup-Warnung" root
exit
fi
#USB-Platte finden:
USB="$(/sbin/findfs UUID=nummer)"
if "$USB"= <<<< wie kann man das abfragen? also sowas wie:
if $USB=/dev/sda<beliebig> then...
then
#(sispmctl -o 1 schaltet die Steckdose ein,
# sispmctl -f 1 schaltet sie aus)
sispmctl -o 1
sleep 10s
mount $USB /mnt/backup
echo "USB-Platte läuft"
#Backupprogramm wird später per Cron gestartet...
else
echo "USB-Platte kontrollieren" | mail -s "Backup-Warnung" root
fi
trap cleanup EXIT TERM INT
#EOF
> #! /bin/bash
>
> PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
> LOCKFILE=/var/lock/steckdose.lock
>
> # Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
> cleanup() {
> rm -f "$LOCKFILE"
> exit
> }
>
> if lockfile -! -r 0 "$LOCKFILE"; then echo "Steckdosen/Backup
> kontrollieren" | mail -s "Backup-Warnung" root exit
> fi
>
> #USB-Platte finden:
> USB="$(/sbin/findfs UUID=nummer)"
>
> if "$USB"= <<<< wie kann man das abfragen? also sowas wie: if
> $USB=/dev/sda<beliebig> then...
Entweder den exit status von findfs auswerten:
if ! USB="$(/sbin/findfs UUID=...)" ; then mail ...
exit 1
fi
oder prüfen, ob $USB leer ist:
if [ -z $USB ] ; then mail ...
exit 1
fi
>
> then
> #(sispmctl -o 1 schaltet die Steckdose ein, # sispmctl -f 1
> schaltet sie aus)
> sispmctl -o 1
Ich würde die Steckdose einschalten, bevor ich nach der Platte suche...
> sleep 10s
> mount $USB /mnt/backup
> echo "USB-Platte läuft"
> #Backupprogramm wird später per Cron gestartet...
Örgs. Pack den Aufruf des Backupprogramms mit in das script und starte
das dann per cron. Dann kannst Du nach dem Backup auch wieder sauber
unmounten und die Steckdose ausschalten.
>
> else
> echo "USB-Platte kontrollieren" | mail -s "Backup-Warnung" root
> fi
> trap cleanup EXIT TERM INT
> #EOF
Das ist jetzt alles nur mit rudimentärer Fehlerbehandlung, besonders vor
dem Ausschalten solltest Du nochmal schauen, ob die Platte auch wirklich
ungemountet ist.
NDT
Pit
> genau auf dein Vorhaben abgestimmt:
> http://ubuntuforums.org/showthread.php?t=168221
Dar Link ist gut.
Mir fällt nämlich gerade noch ein, dass, wenn ein User (unter X und
vielleicht auch nur bei bestimmten Systemen) eingeloggt ist, udev (oder
wer auch immer) sich sofort das Device krallt und sonstwohin mountet.
Manchmal schneller als jedes Script...
Also vielleicht doch an udev direkt rumschrauben?
NDT
Pit
> Örgs. Pack den Aufruf des Backupprogramms mit in das script und starte
> das dann per cron. Dann kannst Du nach dem Backup auch wieder sauber
> unmounten und die Steckdose ausschalten.
Das blöde daran ist, dass das Backup selbst per Script abläuft und auch
die Platte automatisch mountet und am Schluss unmountet. Ich könnte
natürlich dieses Script dort einbauen aber dann wären meine Änderung mit
dem nächsten dist-upgrade futsch :(
> Das ist jetzt alles nur mit rudimentärer Fehlerbehandlung, besonders vor
> dem Ausschalten solltest Du nochmal schauen, ob die Platte auch wirklich
> ungemountet ist.
Ja, daran habe ich auch schon gedacht. Ich könnte allerdings einfach
schauen, ob das LW noch gemountet ist -- wenn nicht: abschalten.
Könnte man auch mit diese if-Anweisung von oben realisieren...
Hier erstmal die derzeitige Fassung:
#! /bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
LOCKFILE=/var/lock/steckdose.lock
# Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
cleanup() {
rm -f "$LOCKFILE"
exit
}
if lockfile -! -r 0 "$LOCKFILE"; then echo "Steckdosen/Backup
kontrollieren" | mail -s "Backup-Warnung" root
exit
fi
#(sispmctl -o 1 schaltet die Steckdose ein,
# sispmctl -f 1 schaltet sie aus)
sispmctl -o 1
sleep 10s
#USB-Platte finden:
USB="$(/sbin/findfs UUID=nummer)"
if ! USB="$(/sbin/findfs UUID=nummer)" ;
then echo "USB-Platte kontrollieren" | mail -s "Backup-Warnung" root
exit 1
else
mount $USB /mnt/backup
echo "USB-Platte läuft"
fi
#Wie realisert man ein SICHERES ausschalten nach dem Backup?
#Umount überprüfen -- evtl while-Schleife?
> Das blöde daran ist, dass das Backup selbst per Script abläuft und auch
> die Platte automatisch mountet und am Schluss unmountet. Ich könnte
Oh, das kann in die Hose gehen, wenn die Platte schon gemountet ist.
Vielleicht kommt das Backup-Script ja damit zurecht, vielleicht auch
nicht. mount wirft jedenfalls einen Fehler, wenn etwas zum zweiten mal
gemountet werden soll.
> natürlich dieses Script dort einbauen aber dann wären meine Änderung mit
> dem nächsten dist-upgrade futsch :(
>
>> Das ist jetzt alles nur mit rudimentärer Fehlerbehandlung, besonders
>> vor dem Ausschalten solltest Du nochmal schauen, ob die Platte auch
>> wirklich ungemountet ist.
> Ja, daran habe ich auch schon gedacht. Ich könnte allerdings einfach
> schauen, ob das LW noch gemountet ist -- wenn nicht: abschalten. Könnte
> man auch mit diese if-Anweisung von oben realisieren...
>
> Hier erstmal die derzeitige Fassung:
>
> #! /bin/bash
> PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
> LOCKFILE=/var/lock/steckdose.lock
>
> # Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
> cleanup() {
> rm -f "$LOCKFILE"
> exit
> }
>
> if lockfile -! -r 0 "$LOCKFILE"; then echo "Steckdosen/Backup
> kontrollieren" | mail -s "Backup-Warnung" root
> exit
exit 1
Dann kannst Du den exit status des Scripts bei Bedarf auswerten.
> fi
>
> #(sispmctl -o 1 schaltet die Steckdose ein, # sispmctl -f 1 schaltet sie
> aus)
> sispmctl -o 1
> sleep 10s
>
> #USB-Platte finden:
> USB="$(/sbin/findfs UUID=nummer)"
>
> if ! USB="$(/sbin/findfs UUID=nummer)" ; then echo "USB-Platte
> kontrollieren" | mail -s "Backup-Warnung" root
> exit 1
> else
> mount $USB /mnt/backup && echo "USB-Platte läuft"
Wie gesagt, das würde ich rausnehmen...
Möglicherweise hier dann:
/pfad/zum/backupprogramm --parameter
Dann hast Du alles beieinander, und kommst zeitlich nicht in irgedwelche
Konflikte.
> fi
>
> #Wie realisert man ein SICHERES ausschalten nach dem Backup?
>
> #Umount überprüfen -- evtl while-Schleife?
Wenn Du das Backupscript oben mit einbaust, ist hier schon ungemountet.
Wenn nicht, mußt Du eh Fehler suchen.
Zur Sicherheit vielleicht:
mount | grep /mnt/backup
if [ $? -eq 0 ] ; then
mail -s "unmount failed" root
exit 1
fi
Andere Möglichkeit:
script, das das Vorhandensein der Partition überprüft, backupscript und
ein script, das das Unmounten prüft, in eine Reihe:
deviceprüfscript && backupscript && umountprüfscript
Da sind dann die ganzen "exit 1" wichtig.
Das bringt auch das ganze in einen sauberen zeitlichen Ablauf.
<pan.2009.02...@stulpi.dyndns.org> hast Du gelesen? Da fällt mir
noch keine schnelle Lösung ein. Unsauber gelöst könnte man am Anfang
Deines scripts "sicherheitshalber" erstmal unmounten...
NDT
Pit
> /pfad/zum/backupprogramm --parameter
Ja, so habe ich es jetzt gemacht. Das script regelt mount/unmount von
selbst...
> Das bringt auch das ganze in einen sauberen zeitlichen Ablauf.
> <pan.2009.02...@stulpi.dyndns.org> hast Du gelesen?
Hmm -- funktioniert hier irgendwie nicht. da bekomme ich ein mailto:...
(mit Thunderbird als Newsreader...)
So long,
Michael
>> <pan.2009.02...@stulpi.dyndns.org> hast Du gelesen?
> Hmm -- funktioniert hier irgendwie nicht. da bekomme ich ein mailto:...
> (mit Thunderbird als Newsreader...)
Ist ja auch keine Mailadresse, sondern eine Message-ID. Das war meine
Antwort auf Luz Golke, in der ich befürchtete, dass irgendein Automount-
Mechanismus Dir in die Quere Kommt.
news://<pan.2009.02...@stulpi.dyndns.org> könnte vielleicht
funktionieren.
NDT
Pit
> if ! USB="$(/sbin/findfs UUID=nummer)" ;
> then echo "USB-Platte kontrollieren" | mail -s "Backup-Warnung" root
> exit 1
> else
Dein Backup-Skript schlägt mit einem bestimmten Status fehl, wenn es die
Platte nicht mounten kann, oder? Das sollte eigentlich genügen, wenn du
das Skript explizit, also nicht per cron, startest und dann den Status
auswertest.
> #Wie realisert man ein SICHERES ausschalten nach dem Backup?
>
> #Umount überprüfen -- evtl while-Schleife?
Gibt es irgendeinen guten, vorhersehbaren Grund, weshalb umount beim
ersten Versuch fehlschlagen könnte? Wenn nicht, dann verschleierst du
Probleme möglicherweise nur durch erneute Versuche. Wenn ein Fehler
auftritt, lass die Platte eingeschaltet, dann ist später die Diagnose
einfacher. Wenn ich das richtig sehe, ist das Ein-/Ausschalten der
Platte eine (Energie-)Optimierung, die du in Einzelfällen auch mal
weglassen kannst.
Michael
--
Michael Schuerig
mailto:mic...@schuerig.de
http://www.schuerig.de/michael/