PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [BASH] Abfrage ob eine CD im Laufwerk ist



bla!zilla
03-08-2004, 09:00
Hallo Leute,

ich suche für mein Backup-Skript eine Möglichkeit zu prüfen ob eine CD im Laufwerk ist. Ich habe es bisher mit einer if-then-else Schleife und "mount" versucht. Hat aber nicht ganz so hingehauen. Kennt jemand von euch noch eine andere Möglichkeit.

Gibt es evtl. sogar eine Möglichkeit zu testen ob es sich um eine CD-R oder CD-RW handelt? Evtl. sogar ob die CD-R noch leer ist?

1000 Dank.

peschmae
03-08-2004, 11:20
Wirklich schlaue Lösungen für das Problem gibts leider nicht. Hab mich schon mal recht lange damit befasst.

Mit cdrecord kannst du natürlich Infos kriegen - u.A. mit "cdrecord -atip" auch was für n Medium drin ist und ob überhaupt eines drin ist. Dort sind eigentlich alle gewünschten Infos drin.

Ist aber trotzdem Doof :o

MfG Peschmä

fork
03-08-2004, 12:59
Das hat mich auch mal interessiert hab' auch nix gefunden.

> Ist aber trotzdem Doof

Nicht nur das, es funktioniert einfach nicht brauchbar. Unten mal die Info ueber diverse Medientypen und der ausgabe von cdrecord atip dazu. Um herauszufinden ob eine CD im Laufwerk ist gerade gut genug. Brauchbare wäre irgendwas das mir ausgiebt ob die CD leer ist oder mit welchem Format sie beschrieben ist(audio,video,mixed mode,iso9660,...)



CDRECORD ATIP AUSGABEN:

Leere CD-RW 10x

ATIP info from disk:
Indicated writing power: 2
Reference speed: 6
Is not unrestricted
Is not erasable
Disk sub type: High speed Rewritable (CAV) media (1)
ATIP start of lead in: -12900 (97:10/00)
ATIP start of lead out: 359849 (79:59/74)
speed low: 4 speed high: 8
power mult factor: 1 5
A2 values: 00 00 00
Disk type: unknown
Manuf. index: -1
Manufacturer: unknown (not in table)

Musik CD

ATIP info from disk:
Indicated writing power: 2
Reference speed: 6
Is not unrestricted
Is not erasable
Disk sub type: High speed Rewritable (CAV) media (1)
ATIP start of lead in: -12900 (97:10/00)
ATIP start of lead out: 341404 (75:54/04)
power mult factor: 0 0
A2 values: 00 00 00
Disk type: unknown
Manuf. index: -1
Manufacturer: unknown (not in table)

Musik CD 2

ATIP info from disk:
Indicated writing power: 5
Is not unrestricted
Is not erasable
Disk sub type: Medium Type B, high Beta category (B+) (5)
ATIP start of lead in: -11934 (97:22/66)
ATIP start of lead out: 337354 (75:00/04)
Disk type: Short strategy type (Phthalocyanine or similar)
Manuf. index: 43
Manufacturer: Acer Media Technology, Inc.

Leere CD-R

ATIP info from disk:
Indicated writing power: 5
Is not unrestricted
Is not erasable
Disk sub type: Medium Type B, high Beta category (B+) (5)
ATIP start of lead in: -11934 (97:22/66)
ATIP start of lead out: 359849 (79:59/74)
Disk type: Short strategy type (Phthalocyanine or similar)
Manuf. index: 43
Manufacturer: Acer Media Technology, Inc.

peschmae
03-08-2004, 14:21
Stimmt, ob etwas drauf ist oder nicht zeigt er nicht an. Aber zumindest zwischen CD-RW und CD-R kann er bei mir unterschieden.
Bei CD-RWs steht da " Is erasable" und nicht wie bei dir " Is not erasable"

Um zu gucken ob was drauf ist kann man "cdrecord -toc" brauchen. Zeigt auch bei Audio-CDs was an.

Man könnte natürlich auch mit dd gucken:


dd if=/dev/hdc of=/dev/null count=10
echo $?

aber da brauchst du auch die nötigen Berechtigungen.

MfG Peschmä

wolfpac
03-08-2004, 14:36
ich hätte da ne kleine anregung (keine ahnung, obs damit geht)

gemountete systeme werden doch in /etc/mtab eingetragen, oder?
vielleicht könnte man so überprüfen, ob cdrom gemountet ist oder nicht

fork
03-08-2004, 15:19
> vielleicht könnte man so überprüfen, ob cdrom gemountet ist oder nicht

Du meinst also die CD's mounten um zu überprüfen ob leer/nicht leer. Das mounten geht leider nur bei einigen CD's. Bei vielen Typen geht das nicht VCD,SVCD,AUDIO,...

----

Das mit dd scheint bei Audio-CDs auch nicht zu gehen.

----

Wenn man erst schaut ob eine cd drin ist(cdrecord -atip | grep -q "No disk") dann ob nichts drauf ist(cdrecord -toc) weiss man schon mal ob es eine leere CD ist. Zum Schluss noch mal die Ausgabe von cdrecord -atip durchgeschaut(entweder nach "is erasable" oder nach "Disk sub type:.*Rewriteable") dann ist auch klar ob das eine RW oder eine normale CD-R ist.

Wenn irgend jemand Lust hat kann er ja ein Shell-Script schreiben. Ist nur noch die Frage wie gibt das Shellscript die _beiden_ Werte(RW: ja/nein CD leer: ja/nein) zurueck. Kann man in der Shell mit pointern arbeiten(Zeiger auf Variablen in übergeordneten Shells) :) ?

bla!zilla
03-08-2004, 15:39
Wow Leute! Ich dachte eigentlich das ich keine Antwort auf meine Frage bekomme, da es ja nun etwas exotisch ist.

1000 Dank an alle. Ich werde mal weiterexperimentieren und euch auf dem Laufenden halten. Das fertige Skript kann ich gerne später posten.

cya
bla!zilla

fork
03-08-2004, 16:07
Nachdem's mich auch interessiert hab' ich mal nach meiner obigen Beschreibung ein Script geschrieben.


#!/bin/bash

FEHLER=0

CDRECORD_OPTIONEN=""
ATIP_DATEI=/tmp/tmp.atip.$RANDOM

if [ -x "$(which cdrecord 2>&1)" ]
then
cdrecord -atip $CDRECORD_OPTIONEN >$ATIP_DATEI 2>&1
else
echo "cdrecord nicht vorhanden/ausfuehrbar!"
FEHLER=1
fi

if [ $FEHLER -eq 0 ] && cat $ATIP_DATEI | grep -qi usage
then
echo "Falscher Aufruf von cdrecord! (Argumente im Script ergaenzen?)"
echo
cat $ATIP_DATEI | head -10
echo ...
echo "Siehe $ATIP_DATEI"
echo
FEHLER=2
fi

if [ $FEHLER -eq 0 ] && cat $ATIP_DATEI | grep -qi "no disk"
then
echo "Keine CD im Laufwerk: $(cat $ATIP_DATEI | grep scsidev)"
FEHLER=3
fi

if [ $FEHLER -eq 0 ]
then
if cdrecord -toc 2>&1 | grep -qi "Cannot read TOC"
then
CD_IST_LEER=1
echo "CD ist leer"

if cat $ATIP_DATEI \
| grep -qEi "Disk sub type.*rewritable"
then
echo "CD ist wiederbeschreibbar"
else
echo "CD ist nicht wiederbeschreibbar"
fi
else
CD_IST_LEER=0
echo "CD ist beschrieben"
fi
fi

if [ $FEHLER -ne 1 -a $FEHLER -ne 2 ]
then rm $ATIP_DATEI
fi

exit $FEHLER

peschmae
03-08-2004, 16:37
Rewritable ist schon korrekt. Ohne e.

MfG Peschmä

fork
03-08-2004, 16:41
Worauf bezog sich deine Antwort ? :)

sutterp
04-08-2004, 12:09
Schau mal auf http://www.sopac.com.au/make_backup_cd

Ich werde den Script fuer die naechsten paar Tage da lassen.

Der script kann vielleicht noch verbessert werden, er läuft jedoch einwandfrei bei etlichen Kunden.

Nachtrag:

Mehrere maschinen haben einen lokalen backup script welcher aufgerufen wird. Jede der maschinen benützt rsync auf ein Backup Verzeichnis um ihre daten da unterzubringen. Der script brennt dann alles auf eine CD oder DVD.

peschmae
04-08-2004, 12:53
Worauf bezog sich deine Antwort ? :)

Auf den Kommentar im Script der jetzt nicht mehr da ist :)

MfG Peschmä