Alle CD/DVD Laufwerke in Bash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Alle CD/DVD Laufwerke in Bash

Beitrag von traxanos » 02.10.2007 12:45:05

Ich Suche nach einer Möglichkeit eine Lister aller CD und DVD Laufwerke zu erhalten.
Dabei sind mir 2 Werte wichtig:
a) /dev/xyz
b) Product

Das ganze möchte ich später an eine Abfrage mit zenity auswählen lassen.

Bekannte Ansätzte
wodim --devices Leider klappt das nur wenn das System die CD/DVD nicht direkt ein hängt wegen dem exclusiv Zugriff.

Eine weitere alternatve ist "hal-devices" nur weis ich hier nicht wie ich die Daten sauber mit awk selektieren kann.

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 02.10.2007 12:55:36

warum nicht einfach die fstab fragen...
oder /sys/bus/
oder dmesg?
oder hwinfo?
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Beitrag von traxanos » 02.10.2007 13:01:07

* ersten die fstab enthält nicht die cd laufwerke. kann aber ist keine pflicht.
* über dmesg bekomme ich keine devicefiles
* hwinfo gibt mir das gleiche wie hal-devies nur anders formatiert.

hal-devies würde ich daher gerne verwenden aber wie gesagt ich bin nicht so gut in awk :D

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

Beitrag von Duff » 02.10.2007 13:28:45

traxanos hat geschrieben:
hal-devies würde ich daher gerne verwenden aber wie gesagt ich bin nicht so gut in awk :D
Dann poste doch mal die Ausgabe und dass, was du gerne später nur noch haben möchtest.
Oh, yeah!

traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Beitrag von traxanos » 02.10.2007 13:34:45

Also am liebsten hätte ich die ausgabe so

Code: Alles auswählen

/dev/hda "Pioner ABCXYZ"
/dev/hdb "DVD AA   BD"
/dev/sg0 "Firma BEZ"
SO sieht z.B. mein aktuelles Beispiel aus

Code: Alles auswählen

DEVICE=`wodim --devices | grep /dev/ | awk -F\' '{ if ( NR == 1 ) { print "TRUE\t"$2"\t\""$4, $6"\"" } else { print "FALSE\t"$2"\t\""$4, $6"\"" } }'  | xargs  zenity --list --radiolist --width=500 --height=250 --text "Welches DVD-Laufwerk möchten Sie verwenden" --title "BLA" --column="" --column="Gerät" --column="Beschreibung"`
Wie gesagt der Nachteil ist es werde nicht alle LW angezeigt wenn das LW gemountet ist

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

Beitrag von Duff » 02.10.2007 14:00:50

Die Ausgabe von dir sieht doch schon so aus, wie du sie gerne hättest. Zumindestens bis zum | xargs, danach habe ich nicht weiter getestet.
Oh, yeah!

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

Beitrag von ThorstenS » 02.10.2007 14:26:15

hwinfo kann auch explizit nach CDROMs scannen:

Code: Alles auswählen

~# hwinfo --cdrom
21: IDE 01.0: 10602 CD-ROM (DVD)
  [Created at block.222]
  UDI: /org/freedesktop/Hal/devices/storage_model__NEC_DVD_/_RW_ND_3450A
  Unique ID: iqvy.yWAtgxmdYWB
  Parent ID: 3p2J.qhVZTI7+qz5
  SysFS ID: /block/hdb
  SysFS BusID: 0.1
  SysFS Device Link: /devices/pci0000:00/0000:00:1f.1/ide0/0.1
  Hardware Class: cdrom
  Model: "_NEC DVD+/-RW ND-3450A"
  Vendor: "_NEC"
  Device: "DVD+/-RW ND-3450A"
  Revision: "102B"
  Serial ID: ""
  Driver: "PIIX_IDE", "ide-cdrom"
  Driver Modules: "piix", "ide_cd"
  Device File: /dev/hdb
  Device Files: /dev/hdb, /dev/disk/by-path/pci-0000:00:1f.1-ide-0:1, /dev/cdrom, /dev/cdrw, /dev/dvd, /dev/dvdrw
  Device Number: block 3:64
  Features: CD-R, CD-RW, DVD, DVD-R, DVD-RW, DVD+R, DVD+RW, DVD+DL
  Size: 0 sectors a 512 bytes
  Drive status: no medium
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #13 (IDE interface)
  Drive Speed: 48
ergibt

Code: Alles auswählen

 hwinfo --cdrom | egrep "Model:|Device File:" |  awk -F ':' '{print $2}'  
 "_NEC DVD+/-RW ND-3450A"
  /dev/hdb 

traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Beitrag von traxanos » 02.10.2007 15:35:28

soweit : hwinfo --cdrom | egrep "Model:|Device File:" | awk -F ':' '{print $2}' bin ich auch. aber wie bekomme ich die jede 2 zeile vor die erste? im allerschlimmesten fall müsste ich das ganze per bash auswert, aber ich will ja dazu lernen :D

@Duff
wodim --devices liefert nur devices die nicht benutzt werden. da aber beim einlegen die cd bzw dvd im normal fall schon gemountet wird, fehlt das laufwerk und ich muss es erst unmounten.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.10.2007 15:45:02

traxanos hat geschrieben:soweit : hwinfo --cdrom | egrep "Model:|Device File:" | awk -F ':' '{print $2}' bin ich auch. aber wie bekomme ich die jede 2 zeile vor die erste?

Code: Alles auswählen

root@gms4:~# hwinfo --cdrom | awk -F':' '/Model:/{m=$2} /Device File:/{ print $2 " " m } '
 /dev/hdc  "SAMSUNG DVD-ROM SD-616"
Gruß
gms

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

Beitrag von ThorstenS » 02.10.2007 15:54:12

Ah, sehr schön, das speichere ich mir auch mal ab, so kann ich schneller die Seriennummern der Platten archivieren

Code: Alles auswählen

hwinfo --disk |  awk -F':' 'BEGIN{ print "Device\t\t\Name\t\t\tSeriennummer"} /Model:/{M=$2} /Serial ID:/{S=$2} /Device File:/{ print $2 "\t" M "\t" S } '
Device          Name                    Seriennummer
 /dev/sda        "Maxtor 6Y160M0"        "Y46PBLVE"
 /dev/hda        "SAMSUNG SP0802N"       "0637J3FW542668"
 /dev/sdb        "ST3160811AS"           "6PT079WT"

traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Beitrag von traxanos » 02.10.2007 16:47:31

hey, super!

vielen dank!!!!!!
vielen dank!!!!!!
vielen dank!!!!!!

Ich habe da doch noch 1 Sache ;)

Code: Alles auswählen

traxanos@stepahead:~$ hwinfo --cdrom | awk -F':' ' /Model:/{m=$2} /Device File:/{ print $2 " " m } '
 /dev/sr0 (/dev/sg2)  "ATAPI DVD A  DH20A1S"
 /dev/hda  "PIONEER DVD-RW DVR-110D"
 /dev/hdb  "PLEXTOR DVD-ROM PX-130A"
Das in Klammern (/dev/sg2) muss verschwinden.
Ich wüsste zwar wie ich das noch rausgefiltert bekomme,
aber es wäre doch söner es direkt in dem awk anweisung zu haben.
Wie gesagt man möchte ja dazu lernen :D
AUßerdem sind noch unnötige Leerzeichen enthalten.

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 03.10.2007 15:30:10

Hi,
traxanos hat geschrieben: * über dmesg bekomme ich keine devicefiles
Natürlich liefert dmesg auch devices

Code: Alles auswählen

~$ dmesg | grep DVD
hdc: DVD+RW RW8160, ATAPI CD/DVD-ROM drive
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 8192kB Cache, UDMA(33)
Is das nich einfacher?

Gruß cirrussc

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.10.2007 15:37:36

cirrussc hat geschrieben: Natürlich liefert dmesg auch devices
Is das nich einfacher?
nachdem diese Informationen aus dmesg nur solange ausgelesen werden können, solange diese im Ring-Buffer verfügbar sind, ist es vorallem unsicherer

Gruß
gms

traxanos
Beiträge: 20
Registriert: 26.09.2005 15:57:38

Beitrag von traxanos » 08.10.2007 11:02:40

So Sieht meine Zeile im Moment aus

hwinfo --cdrom | awk -F':' ' /Model: /{m=substr($2,2)} /Device File: /{ print substr($2,2)"\t"m }' | sed s/\(.*\)//g | awk -F '\t' '{ if ( NR == 1 ) { print "TRUE", $1, $2 } else { print "FALSE", $1, $2 } }'

das ganze wird dan per xargs an zenity übergeben.

Antworten