Hallo, Am Don, 26 Okt 2006, Al Bogner schrieb:
Am Sonntag, 22. Oktober 2006 21:46 schrieb David Haller:
Schau's dir an, awk ist einfacher:
awk -v dev="$USBGERAET" '$1 ~ dev { print "umount "$1; }' /proc/mounts | sh -x
Nun ja, in ein paar Monaten nicht mehr, wenn ich awk wieder brauche. Ich weis aber dann wo ich nachsehen kann ;-)
Das verwendet eigentlich nur awk Grundlagen, keinerlei Finessen. Der einzige "Trick" ist, dass per awk ein shellscript mit den passenden umount-Befehlen generiert wird, welches dann per pipe an sh verfuettert wird. Im Prinzip koennte man auch das noch in awk machen: $1 ~ dev { system("umount "$1); } wobei man da noch ne Fehlerbehandlung dazubauen sollte (Rueckgabewert von 'system')...
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.
Tipps?
user/users Optionen in /etc/fstab. bzw. Rechte an den Devices selbst. Wie das mit udev etc. geht weiss ich aber nicht. Das haengt natuerlich auch von den sonstigen Rechten ab, die die User haben sollen. Generell ist AFAIR fuer User ja kein Zugriff auf die Devicenodes noetig, ausser zum CD-Brennen.
Es gibt noch ein Problem mit dem Mounten des Sticks nach Ausführen des Scripts. Vielleicht ist es aber ein KDE-Problem. Hast du Lust das Script per PM zu überfliegen?
Mal schauen. Schick's ruhig mal :)
Ohne Kommentare sieht das Script gegen Ende etwa so aus: sfdisk "$USBGERAET" << EOF ,,b EOF
Bei nem Einzeiler wuerde ich echo ",,b" | sfdisk "$USBGERAET" vorziehen.
mkdosfs -v -F 32 -n "$STICKNAME" "$USBGERAET"1 ^^^^^^^^^^^^^ "${USBGERAET}1"
Liest sich IMHO einfacher, ist aber mehr Geschmackssache.
mount "$USBGERAET"1 /mnt
Dito. Bei beiden fehlt aber ne Fehlerbehandlung.
cp -vr "$STICKBASIS"* /mnt
Das duerfte die Rechte versauen. Besser: cp -av "${STICKBASIS}/*" /mnt/ oder cd "${STICKBASIS}" && tar -cp -f - . | ( cd /mnt/ && tar xp -f - )
umount "$USBGERAET"1
s.o.
Beim Ab- und Anstecken des Scripts meckert dann KDE 3.5.5, dass kein "Mail versandt werden konnte, oder so ähnlich.
Wie wird das script aufgerufen? Da soll wohl eine Ausgabe per Mail versandt werden... Oder so ;) Ggfs. hilft ein (script-globales) Umleiten der Ausgaben per exec 1>/bla.log exec 2>/bla.err oder ein Klammer des scripts mit: #!/bin/bash { script } | logger .... oder sowas ;)
Da fällt mir gerade ein, ein "Verify" der kopierten Dateien mit star oder sha1sum-Vergleich könnte man noch daran hängen.
Jo. Lesevorgaenge verkuerzen AFAIR ja nicht die Lebensdauer von Flash-Medien ;) -dnh -- "If you are using an Macintosh e-mail program that is not from Microsoft, we recommend checking with that particular company. But most likely other e-mail programs like Eudora are not designed to enable virus replication" -- http://www.microsoft.com/mac/products/office/2001/virus_alert.asp