fstab neu scheiben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

fstab neu scheiben

Beitrag von truehl » 04.12.2010 12:35:12

Hallo,
ich suche nach einer Möglichkeit, die fstab mittels eines Scriptes neu zu schreiben. Dabei sollen anstatt der Device Bezeichnungen (sda1, sdb1 ...) die UUIDs verwedndet werden. Mittels blkid bekomme ich alle Informationen, müsste diese nur geeignet in das Format der fstab umbauen.

Habt Ihr da eine passende Idee ???

Gruß
Thomas

Clio

Re: fstab neu scheiben

Beitrag von Clio » 04.12.2010 13:39:50

Was soll das Script denn dabei?
Werde root, nimm einen Texteditor oder auch vi und trage die neuen Informationen ein.
Vorher ein Backup der fstab machen.

.......und willkommen im Debianforum........

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 04.12.2010 16:04:53

Hi,
naja, dass Script soll die Sache automatisieren, damit auch User, die keine Anhnung haben, wie sie die fstab ändern sollen dies einfach tun können. Zwischenzeitlich bin ich mit der Lösung schon ein Stück weiter. Mit:
blkid /dev/sda2 | awk '{print $2}'

bekomme ich:
UUID="76b8750d-dafd-429f-9ad2-15b2cf4dcac2"

jetzt muss ich nur noch die Anfürhungsstriche rausfiltern, wie geht das?

Noch besser wäre, wenn einfach die letzte Zeile aus blkid ausgewertet würde und ich nicht /dev/sda2 angeben müsste. Es geht darum, ein USB Laufwerk an ein Debian System anzuschließen und dann einen passenden Eintrag in der fstab zu generieren. Der Mountpoint steht fest: /music. Das File-System kann fat, ntfs, ext 2 oder ex3 drei sein.

Viele Grüße

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: fstab neu scheiben

Beitrag von GoKi » 04.12.2010 16:38:16

z.B. in awk direkt:

Code: Alles auswählen

awk '{gsub(/"/, "", $2); print $2}'
MfG GoKi
:wq

Benutzeravatar
TRex
Moderator
Beiträge: 8336
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: fstab neu scheiben

Beitrag von TRex » 04.12.2010 17:05:47

So langsam komm ich auch dahinter, was du vorhast. Gibts dafür denn keine bessere Möglichkeit? Du hast vermutlich eine Installation ohne X und ohne weitere Eingriffsmöglichkeiten (bzw. ist unerwünscht), Wohnzimmer-PC oder sowas in der Art. Ein angeschlossenes Laufwerk soll automatisch gemountet werden, abhängig von seiner UUID. Du meinst, das Laufwerk soll einen festen Mountpunkt haben. Ist das ein allgemeiner Mountpunkt für alle möglichen Laufwerke? Wenn ja, ist die UUID relativ egal - da würde ich mich eher auf sd[abcd] festlegen.

Da ich dein Szenario nicht kenne, schreib ich mal ins Blinde: Schreib dir n Script für udev, das bei entsprechender Geräteklasse USB Disk mount -a ausführt. In die fstab schreibst du die mountpoints mit noauto, damit werden die zur Bootzeit ignoriert.

ODER

du schreibst das udev-Script so, dass es das Gerät selbst mountet. Ich halte das sogar für die bessere Lösung, wenn die Platten eher wechseln.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 04.12.2010 17:46:47

Hi,
also, der Befehl:

Code: Alles auswählen

blkid | sed '$!d' | awk '{print $3}'
bringt folgende Ausgabe:

Code: Alles auswählen

UUID="D6F2CE81F2CE64F9"
jetzt müssen nur noch die " (Gänsefüsschen) weg!

Wie geht das???

Benutzeravatar
whisper
Beiträge: 3379
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: fstab neu scheiben

Beitrag von whisper » 04.12.2010 18:02:31

Du verwendest doch bereits sed, dann solltest du doch damit kein Problem haben....

Code: Alles auswählen

|sed 's/"//g'
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 04.12.2010 18:20:20

Got it:

Code: Alles auswählen

blkid | sed '$!d' | awk '{print $3}'|sed 's/"//g'
bringt:

Code: Alles auswählen

UUID=D6F2CE81F2CE64F9
Das ist das, was ich wollte!!! Ich pipe jy jetzt 2x ist das notwendig?

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: fstab neu scheiben

Beitrag von GoKi » 04.12.2010 18:45:56

gsub in awk, siehe oben.
Und das ganze nur auf der letzten Zeile der Ausgabe (Code in END Block verschieben).

Code: Alles auswählen

blkid | awk 'END {gsub(/"/, "", $2); print $2}'
MfG GoKi
:wq

guennid

Re: fstab neu scheiben

Beitrag von guennid » 04.12.2010 19:07:29

Clio hat geschrieben:Texteditor oder auch vi
Klasse Formulierung! :mrgreen:

Grüße, Günther

Benutzeravatar
TRex
Moderator
Beiträge: 8336
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: fstab neu scheiben

Beitrag von TRex » 04.12.2010 19:19:30

GoKi hat geschrieben:gsub in awk, siehe oben.
Und das ganze nur auf der letzten Zeile der Ausgabe (Code in END Block verschieben).

Code: Alles auswählen

blkid | awk 'END {gsub(/"/, "", $2); print $2}'
freut mich, dass ich nich allein ignoriert werde :|
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 04.12.2010 19:49:53

Hi,
dass ist absolut geil!!! Ich habe mir damit fast die Ohrläppchen gebrochen! Vielen lieben Dank, dass hilft weiter!

Zur Aufklärung: Ich habe ein kleines Projekt: SqueezePlug. Hier geht es um einen Musik-Server auf einem PlugComputer und neuerdings auch auf der Seagate Dockstar. Mein Problem ist, dass ich es mit Leuten zu tun habe, die kein, aber auch gar kein Linux sprechen. (ich bin auch nicht wirklich toll, gebe mir aber Mühe, bzw. frage schlaue Leute wie Euch ;) Das Problem ist, dass OS (Debian Squeeze) läuft auf einem USB-Stick. Dieser wird normalerweise als sda erkannt. Wenn man aber nun eine USB-Festplatte mit Mucke dransteckt, kann es sein, dass diese sda wird. Somit muss ich dafür sorgen, dass dieses nicht passieren kann. Deshalb will ich mit der UUID arbeiten und diese automatisch in die fstab eintragen. Mit diesem Befehl wird dieses jetzt gelingen, hoffe ich.

Ich bin begeistert, wie schnell ich hier die Lösung gefunden habe! Danke an Alle, die sich beteiligt haben. Wenn Ihr Euch für das Projekt interessiert, schaut doch mal hier: squeezeplug.de. Ich suche seit langem Leute, die mich im Projekt unterstützen wollen. insbesondere suche ich jemanden, der mich bei den Scripten unterstützen kann. Hätte da vielleicht jemand von Euch Lust???

Viele Grüße
Thomas

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 04.12.2010 23:29:19

Hi,
jetzt habe ich nur noch ein kleines Problem: HD mit Lable (unterste Zeile) machen natürlich ein Problem, wenn ich den 2. String auswerte. Wie kann ich sicher sein, dass immer die UUID ausgewertet wird?

Code: Alles auswählen

blkid | awk 'END {gsub(/"/, "", $2); print $2}'

Code: Alles auswählen

/dev/sda1: UUID="4f9f1ca9-748a-4e0c-b5cd-fb4436a70c09" TYPE="ext2"
/dev/sda2: UUID="76b8750d-dafd-429f-9ad2-15b2cf4dcac2" TYPE="swap"
/dev/sdb1: LABEL="blabla" UUID="7CBEBAFFBEBAB0CE" TYPE="ntfs"
Viele lieben Dank,
Gruß

Thomas

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: fstab neu scheiben

Beitrag von GoKi » 05.12.2010 00:04:07

Mit gawk:

Code: Alles auswählen

awk 'END {match($0, /(UUID=)"([^"]+)"/, arr); print arr[1]arr[2]}'
MfG GoKi
:wq

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 05.12.2010 09:01:33

Hi,

Code: Alles auswählen

blkid | awk 'END {match($0, /(UUID=)"([^"]+)"/, arr); print arr[1]arr[2]}'
bringt:

Code: Alles auswählen

awk: line 1: syntax error at or near ,
Was mach ich falsch?

Vielen Dank,
Gruß
Thomas

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: fstab neu scheiben

Beitrag von GoKi » 05.12.2010 10:52:23

Wie gesagt, das funktioniert in gawk, weil der verwendete Syntax eine GNU Erweiterung von awk ist.
Also kannst Du bspw. gawk installieren (über alternatives regeln, dass gawk benutzt wird um awk bereitzustellen, oder direkt gawk aufrufen).

Code: Alles auswählen

apt-get install gawk
Oder man passt den awk Code an Posix Standards an. Übungsaufgabe :mrgreen:
MfG GoKi
:wq

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 05.12.2010 11:47:53

Leider kann ich gawk in squeeze nicht installieren:

Code: Alles auswählen

root@squeezeplug:~# apt-get install gawk
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gawk
???

Benutzeravatar
whisper
Beiträge: 3379
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: fstab neu scheiben

Beitrag von whisper » 05.12.2010 11:51:49

Dann stimmt etwas in deiner sources.list nicht, denn das Paket ist in squeeze/Main !

z.b. deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: fstab neu scheiben

Beitrag von truehl » 05.12.2010 12:31:04

Witzig:
meine sources list sah so aus:

Code: Alles auswählen

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://download.webmin.com/download/repository sarge contrib
Jetzt habe ich ergänzt:

Code: Alles auswählen

deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
und jetzt läuft es!!!

Offensichtlich unterscheiden sich die Amerikanischen von den deutschen Quellen?!

Vielen Dank!!!!

Gruß
Thomas

Antworten