PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text aus Fdisk Ausgabe



noa
23-08-2004, 08:37
Hallo,


ich bin schon seit Tagen am herumprobieren wie ich aus einer Textdatei Text in eine Variable speichern kann.

Folgendes Problem:

Ich will ein Skript schreiben, welches mir eine Festplatte mit Ihren Partitionen anzeigt und ich dann diese per dialog --menu auswählen kann und dann mounte.

Das Problem ist nur, wie bekomme ich aus der Ausgabe von fdisk /dev/hda -l den Text in ein Menü?
Ich brauche auch nur ein paar Informationen, nicht den ganzen Text.
Es würde sich nur um den Pfad und das Dateisystem handeln, welche dann im Auswahlmenu stehen sollen.
Und das natürlich für jede Zeile einzeln, weil ich ja mehrer Partitionen hab.

z.B.

1. /dev/hda1 HPFS/NTFS
2. /dev/hda2 Win95
3. usw.

Und wenn man die Platte ausgewählt hat, brauch ich noch den reinen pfad z.B. /dev/hda1 als Variable, damit ich mounten kann.

Kann mir Jemand helfen? :confused:

DANKE

peschmae
23-08-2004, 10:24
thinkpad:~# fdisk /dev/hda -l | awk ' /^\/dev/{ print $1, $6 }'
/dev/hda1 Extended
/dev/hda2 Linux
/dev/hda3 Hidden
/dev/hda5 Linux
/dev/hda6 Linux
...
thinkpad:~# dialog --menu "Select Partition" 0 0 10 $(fdisk /dev/hda -l | awk ' /^\/dev/{ print $1, $6 }')


Mit dialog hab ich mich noch nie wirklich befasst. Was kriegst du dort als Rückgabewert oder so wenn du da was auswählst?
Hmm, das scheint einfach die Partition auf stderr zu schreiben - keine Ahnung wie du die da wieder einfach rausbringst (ausser natürlich stderr in ne Datei schreiben, ich mach mal einen Thread dazu (http://www.mrunix.de/forums/showthread.php?p=159842#post159842) - hat mich nämlich auch schon gestört dass ich das nicht geschafft hab)

MfG Peschmä

noa
23-08-2004, 11:23
Hallo,

danke für die schnelle Antwort!

Also das Menü funktioniert so weit, ich habe noch die Werte angepasst.

dialog --menu 15 40 6 $(fdisk ...

Einen Fehler macht es aber immernoch, da bei der ersten Partition noch ein * für Boot steht, wird das Dateiformat nicht angezeigt, ich müsste also noch $7 erweitern. Wie funktioniert das?

Normalerweise schreib ich beim Menu vor jedem Menüpunkt z.B. eine Zahl
und werte das ganze dann mit case aus.
Aber hier hab ich ja keine Zahl.

Normales Menü

dialog --menu 15 40 6 1 "Erster Menüpunkt" 2 "Zweiter Menüpunkt"> ${1}.1
$auswahl="´cat ${1}.1´"
case $auswahl in

1)
befehl 1
;;

2)
befehl 2
;;

esac

Weis jetzt nicht wie ich das ganze auswerten soll?

DANKE

peschmae
23-08-2004, 21:33
Da du wohl sonst nirgends ein * hast ersetzt du das am besten mit Sed durch nix:


dialog --menu "Select Partition" 0 0 10 $(fdisk /dev/hda -l | sed s/\*// | awk ' /^\/dev/{ print $1, $6 }')


Bei mir ist der Flag aber nirgends gesetzt. (Ausser auf dem USB-Stick)

Als Wert kriegst du aus deiner Temp-Datei ja jetzt statt einer Nummer direkt die Device - also z.B. /dev/hda1 raus. Ist doch eh praktischer, oder?

Oder musst du eventuell noch das zugehörige Dateisystem wissen? Dann kriegst du das mit


SYSTEM=$(fdisk -l /dev/hda | grep $auswahl | sed s/\*// | awk ' /^\/dev/{ print $6 }'))

oder so ähnlich.

MfG Peschmä

noa
31-08-2004, 07:35
Hallo,


also danke nochmal für deine Hilfe. Tut mir leid das ich erst jetzt schreibe, ich war krank.

Also das mit * ersetzen klappt prima, ich kann nur in meinem Menü z.B. /dev/hda1 nicht auswerten. Würde ansonsten schon passen.

Also es klappt nicht wenn ich für die case auswahl z.B.

case $auswahl in

/dev/hda1)
Befehl
;;

/dev/hda2)
Befehl
;;

esac

hinschreibe.

Vielleicht weist du da abhilfe.

DANKE

NoA

peschmae
31-08-2004, 07:58
Befehl

Was käme denn da hin? Kannst du nicht einfach mit der Variable $auswahl weiterarbeiten?
Also sowas:


SYSTEM=$(fdisk -l /dev/hda | grep $auswahl | sed s/\*// | awk ' /^\/dev/{ print $6 }'))
mount -t $SYSTEM $auswahl /mnt


MfG Peschmä

noa
31-08-2004, 09:51
Hallo,


also $auswahl gibt mir 'cat.1' zurück, damit kann ich nicht arbeiten.
Ich denke mal das er die Variable bei der case $auswahl anders intepretiert.

Dein Vorschlag hat somit leider nicht funktioniert.

dialog --menu 15 40 6 1 "Erster Menüpunkt" 2 "Zweiter Menüpunkt"> ${1}.1
$auswahl="´cat ${1}.1´"
case $auswahl in

1)
befehl 1
;;

2)
befehl 2
;;

esac



Wenn ich das Menü wie du gesagt hast, ausführe, kommt bei den Werten, wo im orbrigen Beispiel 1 bzw. 2 steht dann der Pfad raus, z.B. /dev/hda1.

Wenn ich diesen nun auswerten könnte wie bei einem normalen Menüpunkt hätte ich schon alles.

Also z.B.

/dev/hda1)
befehl 1
;;

DANKE

MfG

NoA

peschmae
31-08-2004, 12:03
Ich sehe das Problem wirklich nicht :)


thinkpad:~# dialog --menu "Select Partition" 0 0 10 $(fdisk /dev/hda -l | sed s/\*// | awk ' /^\/dev/{ print $1, $6 }') 2>log
thinkpad:~# PART=$(cat log) && rm log
thinkpad:~# echo $PART
/dev/hda5


MfG Peschmä

noa
31-08-2004, 13:46
Hallo,

also habs jetzt hinbekommen, danke für die Hilfe.
Es war nur PART=$(cat log) && rm log was mir gefehlt hat.


DANKE

MfG

NoA

noa
02-09-2004, 09:34
Hallo,


ich habe noch zwei kurze Fragen.

Wie würde der Befehl aussehen, wenn ich noch die Größe der Festplatte anzeigen lassen will?
Oder z.B. bei dem Dateisystem den ganzen Namen anzeige?
Da zur Zeit bei mir, als Beispiel nur Win95 da steht und noch FAT32 fehlt, da dieses ja durch ein Leerzeichen getrennt ist und somit als nächste Spalte gerechnet wird.
Und wenn ich einfach $7 hinschreib, dann schreibt er mir das wieder als Menüpunkt hin und die Formatierung ist hinüber. Also müsste man dann $6 + $7 verbinden.


DANKE


MfG

NoA

peschmae
02-09-2004, 11:54
Was natürlich geht ist:


dialog --menu "Select Partition" 0 0 10 $(fdisk /dev/hda -l | sed s/\*// | awk ' /^\/dev/{ print $1, $6 $7 }') 2>log


allerdings hast du dann W95FAT32. Wie man die Sache sonst aus Awk raus und durch die Shell kriegt ohne dass sie behelligt wird weiss ich jetzt gerade nicht.

Partitionsgrössen ist eher schwierig - die Partitionierungsprogramme - u.A. auch fdisk haben sich auf für mich recht undurchschaubare Angaben geeinigt: Sektoren, Zylinder, ...

MfG Peschmä

noa
02-09-2004, 12:41
Hallo,


also nochmals danke für die Hilfe. Das hat mir eigentlich schon gereicht.
Das mit der Größe ist nicht so schlimm.

DANKE

MfG

NoA