Mailinglist Archive: opensuse-de (1756 mails)
| < Previous | Next > |
Re: USB-Stick per Script formatieren (mit mount-Problem)
- From: David Haller <lists@xxxxxxxxxx>
- Date: Sun, 22 Oct 2006 19:47:11 +0000 (UTC)
- Message-id: <20061022194622.GA11308@xxxxxxxxxxxxxxxxxx>
Hallo,
Am Son, 22 Okt 2006, Al Bogner schrieb:
>Am Sonntag, 22. Oktober 2006 18:02 schrieb David Haller:
>> >Hast du eine Idee, wie man das mit eventuellem umount sauber hinbekommt?
>>
>> Ich hab' sowas fuer die Platte, die ich normal schlafen lege:
>>
>> awk '
>> /^[ \t]*#/ {
>> next;
>> }
Ups. Der Teil gehoert zum Kommentare ueberspringen in /etc/fstab (die
im anderen Teil des scripts verwendet wird ;)
>> $1 ~ /hdd/ {
>> print "umount "$1;
>> }' /proc/mounts | sh -x
>
>Hmmh, ganz verstehe ich das nicht. Ich habe in meinem Script nun eine
>Variable, die zB "/dev/sda" enthält.
Ok.
>Würde diese Variable $1 entsprechen und
Nein. $1 ist das erste Feld der aktuellen Zeile, also bei /proc/mounts
das Device.
>müsste ich eine Variable definieren, die dann statt /hdd/ /sda/ enthält?
Ja.
>Könnte man dafür auch nicht mount auswerten?
Die Ausgabe von mount ist nicht zuverlaessig und /proc/mounts
auszulesen spart auch noch einen Prozess ;)
>> Ich hoffe mal, das Format der /proc/mounts hat sich nicht
>> geaendert. Hier z.B.:
>> device MtPt fs opts ? ?
>> /dev/hda1 /mnt/hda1 ext3 rw 0 0
>
>Bei mir:
>
>cat /proc/mounts
>rootfs / rootfs rw 0 0
>/dev/hda15 /dev/.static/dev xfs rw 0 0
>/dev/hda14 /boot reiserfs rw 0 0
^^^^^^^^^^ => wird im awk zu $1
>...
Passt.
[..]
>Ich will das Scritp möglichst flexibel auf verschiedenen Rechnern laufen
>lassen. Daher soll alles im Script selbst sein.
>
>Sobald ID_SERIAL abgeglichen ist, steht das Device in einer
>Variable "$USBGERAET" .
Ah gut.
>Wenn ich nun mount oder /proc/mounts verwende, dann
>könnte man mit cut bis zum 1. Leerzeichen ausschneiden, Netzlaufwerke
>rauswerfen, dann nach der Variable "$USBGERAET" greppen und an xargs mit
>umount übergeben, oder?
>
>cat /proc/mounts | cut -f1 -d" " | grep -v ":" | grep "sda" | xargs \
>-r -n1 umount
>
>Etwas in dieser Richtung finde ich nicht so kryptisch wie mit awk ;-)
Schau's dir an, awk ist einfacher:
awk -v dev="$USBGERAET" '$1 ~ dev { print "umount "$1; }' /proc/mounts
| sh -x
>Ich überlege mir nun auch noch, ob das alles mit Userrechten zu schaffen ist,
>sodass der User aber bei den eingebauten HDs (hdx bzw. sdx, wenn SATA oder
>SCSI) nichts anstellen kann.
Sollte gehen.
-dnh
--
... "See, I told you, they'd listen to Reason," Fisheye says, shutting down
the whirling gun. -- Neal Stephenson, "Snow Crash", p. 361
Am Son, 22 Okt 2006, Al Bogner schrieb:
>Am Sonntag, 22. Oktober 2006 18:02 schrieb David Haller:
>> >Hast du eine Idee, wie man das mit eventuellem umount sauber hinbekommt?
>>
>> Ich hab' sowas fuer die Platte, die ich normal schlafen lege:
>>
>> awk '
>> /^[ \t]*#/ {
>> next;
>> }
Ups. Der Teil gehoert zum Kommentare ueberspringen in /etc/fstab (die
im anderen Teil des scripts verwendet wird ;)
>> $1 ~ /hdd/ {
>> print "umount "$1;
>> }' /proc/mounts | sh -x
>
>Hmmh, ganz verstehe ich das nicht. Ich habe in meinem Script nun eine
>Variable, die zB "/dev/sda" enthält.
Ok.
>Würde diese Variable $1 entsprechen und
Nein. $1 ist das erste Feld der aktuellen Zeile, also bei /proc/mounts
das Device.
>müsste ich eine Variable definieren, die dann statt /hdd/ /sda/ enthält?
Ja.
>Könnte man dafür auch nicht mount auswerten?
Die Ausgabe von mount ist nicht zuverlaessig und /proc/mounts
auszulesen spart auch noch einen Prozess ;)
>> Ich hoffe mal, das Format der /proc/mounts hat sich nicht
>> geaendert. Hier z.B.:
>> device MtPt fs opts ? ?
>> /dev/hda1 /mnt/hda1 ext3 rw 0 0
>
>Bei mir:
>
>cat /proc/mounts
>rootfs / rootfs rw 0 0
>/dev/hda15 /dev/.static/dev xfs rw 0 0
>/dev/hda14 /boot reiserfs rw 0 0
^^^^^^^^^^ => wird im awk zu $1
>...
Passt.
[..]
>Ich will das Scritp möglichst flexibel auf verschiedenen Rechnern laufen
>lassen. Daher soll alles im Script selbst sein.
>
>Sobald ID_SERIAL abgeglichen ist, steht das Device in einer
>Variable "$USBGERAET" .
Ah gut.
>Wenn ich nun mount oder /proc/mounts verwende, dann
>könnte man mit cut bis zum 1. Leerzeichen ausschneiden, Netzlaufwerke
>rauswerfen, dann nach der Variable "$USBGERAET" greppen und an xargs mit
>umount übergeben, oder?
>
>cat /proc/mounts | cut -f1 -d" " | grep -v ":" | grep "sda" | xargs \
>-r -n1 umount
>
>Etwas in dieser Richtung finde ich nicht so kryptisch wie mit awk ;-)
Schau's dir an, awk ist einfacher:
awk -v dev="$USBGERAET" '$1 ~ dev { print "umount "$1; }' /proc/mounts
| sh -x
>Ich überlege mir nun auch noch, ob das alles mit Userrechten zu schaffen ist,
>sodass der User aber bei den eingebauten HDs (hdx bzw. sdx, wenn SATA oder
>SCSI) nichts anstellen kann.
Sollte gehen.
-dnh
--
... "See, I told you, they'd listen to Reason," Fisheye says, shutting down
the whirling gun. -- Neal Stephenson, "Snow Crash", p. 361
| < Previous | Next > |