[solved] Partitionstyp anzeigen lassen - nur mit der bash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

[solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von ThorstenS » 08.01.2009 12:14:07

Hi Leute,

ich arbeite an einem kleinen Bash Skript, welches mit alle Platten und jede Partition des Systems ausgibt - soweit kein Problem.
Bei den Partitionen möchte ich aber noch den Partitionstypen bzw. das verwendete Dateisystem stehen haben.

Hier der Output des ganzen Skripts, damit ihr euch das besser vorstellen könnt:

Code: Alles auswählen

# sh partitionenAuflisten
Du hast 2 Platten im System, das sind:
        /dev/sda
        /dev/sdb
Du hast 7 Partitionen im System, das sind:
        /dev/sda1 ext3
        /dev/sda2 xfs
        /dev/sda3 linux-swap
        /dev/sda4 erweitert oder unbekannt
        /dev/sda5 ext3
        /dev/sdb1 fat16
        /dev/sdb2 ext3
Meine Lösung bisher:

Code: Alles auswählen

1 PARTITIONS=( $(for i in /dev/disk/by-id/* ; do readlink -e $i; done | sort -u| grep -e '[0-9]$') )
2 echo -e "Du hast ${#PARTITIONS[@]} Partitionen im System, das sind:"
3 for element in $(seq 0 $((${#PARTITIONS[@]} - 1))) 
4   do
5   echo -ne "\t${PARTITIONS[$element]} "
6   ID=$( parted -s ${PARTITIONS[$element]} print 2> /dev/null | awk '/^ 1/ {print $NF}')
7   [ "$ID" == '' ] && ID="erweitert oder unbekannt"
8   echo $ID
9 done
Wie ihr seht, benutze ich in Zeile 6 parted, um an die Info zu kommen. Das ist unschön, weil ich nicht immer parted auf dem Rechner / LiveCD habe. Ein einfacher Weg über /proc oder /sysfs etc. wäre mir lieber.

Was ich ausprobiert habe:
file -F ' --' -s /dev/sda2 funktioniert auch, aber der Output erschlägt einen, den kann ich nicht für alle Partitionstypen sinnvoll parsen.
fdisk -l funktioniert nicht für einzelne Partitionen

Gehts einfacher?

EDIT:
kreativere Suchanfragen bei apt-cache &Co. haben mich zum Paket disktype geführt:

Code: Alles auswählen

ID=$(disktype ${PARTITIONS[$element]} | awk '/file/ {print $1}  /swap/ {print "swap"} /0x83/ { print "erweiterte Partition"} ') 
Das nette tool ist auch auf der liveCD grml drauf und benötigt keine root-Rechte - perfekt.

-close-
Zuletzt geändert von ThorstenS am 08.01.2009 12:37:14, insgesamt 2-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von Duff » 08.01.2009 14:03:40

Müsste meiner Meinung nach auch über die Datei /etc/mtab möglich sein.
Oh, yeah!

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: [solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von ThorstenS » 08.01.2009 16:12:43

Danke, das reicht nicht. Die mtab listet kein swap oder andere nicht eingehangene Partitionen auf.
Ich brauche es auf einer LiveCD, um mir teilweise fremde Rechner zu untersuchen und zu sichern.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von rendegast » 08.01.2009 19:16:13

Code: Alles auswählen

/sbin/blkid -s TYPE
jedoch ohne Partitions-ID, könnte aber mit

Code: Alles auswählen

/sbin/fdisk -l
zusammengebracht werden.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: [solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von ThorstenS » 08.01.2009 20:10:42

wow, das ist ja geil!
Danke, wieder ein sehr sinvolles Programm kennengelernt.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: [solved] Partitionstyp anzeigen lassen - nur mit der bash

Beitrag von ThorstenS » 20.01.2009 14:01:21

Fürs Archiv:
Durch Zufall bin ich über das Paket di-utils und darin das script /bin/list-devices gestossen. Ist wesentlich cleverer, als das, was ich gebaut habe.
Es listet disks,cds, floppies und partitionen auf.

Antworten