Page 1 of 1

CD-ROM auswurf automatisieren

Posted: 23. Nov 2003 23:37
by Maxi
gibt es eigentlich einen weg, das unmounten und auswerfen einer CD so zu automatisieren, dass das passiert, wenn jemand den eject-knopf am laufwerk drückt?

Re: CD-ROM auswurf automatisieren

Posted: 24. Nov 2003 8:55
by Jochen
Mandrake hat das mit seinem Supermount im Angebot, wenn ich ich recht entsinne. Meine letzten Erfahrungen damit sind aber ein Weilchen her. Ich persönlich verwende einfach "eject" als Kommando; zumindest unter RedHat unmountet das Kommando die betreffende CD auch - wenn möglich, natürlich.

Jochen

Re: CD-ROM auswurf automatisieren

Posted: 24. Nov 2003 19:17
by Maxi
eject ist leider nicht das, was ich benötige. Es muß schon über den Auswurfknopf gehen. Kann man den von einem eigenen Programm aus eigentlich abfragen?

Re: CD-ROM auswurf automatisieren

Posted: 24. Nov 2003 19:57
by Sebastian
Hi Maxi,

ich persönlich verwende automount dafür, je nach Distri nennt es sich automount oder autofs (debian).
Damit erzeugst du Pfäde, welche beim Zugriff automatisch das entsprechende Laufwerk einbinden, gelöst wird die Verbindung nach einer Minute Inaktivität.

Ich habe bei mir noch einen Cronjob, welcher jede Minute anläuft installiert, der "kill -USR1 `pidof automount`" aufruft und damit - falls möglich - das Laufwerk freigibt.

Gruß

Sebastian

Re: CD-ROM auswurf automatisieren

Posted: 24. Nov 2003 21:41
by Jochen
Das Problem mit dem Auswurfknopf ist eben, dass er nicht abfragbar ist (zumindest soweit ich weiss), sondern rein vom Laufwerk selbst geregelt wird. Wenn das Laufwerk gemountet wird, ist unter Linux der Auswurf blockiert und man kann an dem Knopf herumdrücken wie man Lust hat.

Aber wer weiss, vielleicht hat ja jemand anderes eine perfekte Lösung auf Lager...

Jochen

Re: CD-ROM auswurf automatisieren

Posted: 24. Nov 2003 22:46
by John
Das sind zb die kleinen tücken von Linux... Windows User müssen sich über sowas keine Gedanken machen...

Stellt euch doch mal die Bürokauffrau/mann vor, die unter Linux arbeiten soll und eine CD nicht gewechselt kriegt, obwohl sie den Eject Knopf drückt...

PS: Bin kein Win Fan, einfach nur mal so eine Festellung!

Re: CD-ROM auswurf automatisieren

Posted: 25. Nov 2003 2:59
by Hein
Hallo
http://www.pl-forum.de/t_system/autofs.html
das ist eventuell eine Möglichkeit. Das Problem dabei ist aber das wenn ein Prozess auf das Laufwerk zugreift dann kannst du die CD auch nicht auswerfen.
Um dieses "Problem" zu beheben mußt du schon an die Kerneltreiber ran, dieser muß so modifiziert werden das es bei Zugriff das Laufwerk nicht sperrt.
Beim kompilieren selber habe ich so eine Option noch nicht entdeckt, insofern muß man wohl oder übel Programmierkenntnisse haben um den Treiber dementsprechend anzupassen.
Ob das allerdings so gut ist?
>Das sind zb die kleinen tücken von Linux... Windows User müssen sich über sowas keine Gedanken machen...
Das ist keine Tücke sondern meines erachtens nach sogar eine Notwendigkeit die bei Windows einfach fehlt. Als Multiusersystem ist solch eine Funktion sehr wichtig. Stell dir vor du kopierst von einem freigegebenen Laufwerk was runter und es geht einer hin und ejected die CD? :)
Hast du schon mal mit einem 8fach Brenner eine CD gebrannt unter Windows, das dauert, gehst dann weg und lässt es laufen. Die Frau kommt rein und denkt sich sie könnte ja mal eine CD hören (hmpf). Die heutigen Brennprogramme sperren das Laufwerk zum Glück und geben fette Warnungen aus die man aus reiner Gewohnheit aber bedenkenlos wegklicken kann :)

Re: CD-ROM auswurf automatisieren

Posted: 25. Nov 2003 10:22
by Jochen
@John & total OT: Linux ist hier einfach anders als Windows, nicht schlechter oder besser. Oder anders gesagt: Für beide Möglichkeiten gibt es Argumente pro und kontra. Denke einfach mal an die als benutzerfreundlich gerühmten Apples; schon vor Jahren hatten die Floppy-Drives keinen Auswurfknopf mehr, sondern man musste (wenn ich mich recht entsinne) das Floppy-Icon auf den Papierkorb ziehen. Dann erst wurden auch die restlichen Daten auf das Laufwerk geschrieben und zu guter Letzt díe Floppy ausgeworfen.

Der Umstieg zwischen 2 Betriebssystemen ist in erster Linie eine Sache der Gewöhnung an deren jeweilige Eigenheiten. Ich denke, jeder typische Büroarbeiter sollte in der Lage sein, eine solche Umgewöhnung zu überstehen. Ob jeder dazu auch bereit ist, mag eine andere Sache sein...

Jochen

Re: CD-ROM auswurf automatisieren

Posted: 28. Nov 2003 10:15
by wicht
@Hein
>Hast du schon mal mit einem 8fach Brenner eine CD gebrannt unter Windows, das dauert, gehst dann weg und lässt es laufen.
>Die Frau kommt rein und denkt sich sie könnte ja mal eine CD hören (hmpf). Die heutigen Brennprogramme sperren das
>Laufwerk zum Glück und geben fette Warnungen aus die man aus reiner Gewohnheit aber bedenkenlos wegklicken kann :)

demnach müsste es ja doch möglich sein das drücken des Knopfes per Software zu erkennen?!
Da könnte man ja dann ein script starten welches dann nen umount macht.
Das mit dem minütlichen prüfen und unmounten ist doch ganz schön aufwändig, oder?

Re: CD-ROM auswurf automatisieren

Posted: 28. Nov 2003 11:02
by Jochen
Eben nicht. Man kann dem Drive sagen, dass es seine Lade sperren oder wieder freigeben soll; der Rest wird innerhalb der Firmware des Drives anhand dieser Einstellung geregelt.

Jochen

Re: CD-ROM auswurf automatisieren

Posted: 28. Nov 2003 14:28
by Hansone
Ich habe mir vor kurzem mal Mandrake 9.2 installiert. Interessanterweise verhält sich dieses exakt wie gewünscht: CD einlegen und auf diese zugreifen, sie wird gemountet. Ohne ein unmount auf den Auswurfknopf drücken, sie wird automatisch ge-unmount-ed und ausgeworfen! Also hat zumindest Mandrake eine elegante Lösung für das Problem.

Re: CD-ROM auswurf automatisieren

Posted: 28. Nov 2003 14:43
by Jochen
Jepp, siehe 2. Posting in diesem Thread: supermount. Ist aber ein Kernelpatch; keine Ahnung, wieviel Mühe sich Maxi machen will... Eine (ältere) Anleitung habe ich hier gefunden (über Google <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">): <a href="http://www.pl-forum.de/t_system/supermount.html" target="_blank"><!--auto-->http://www.pl-forum.de/t_system/supermo ... <!--auto-->
Der Patch scheint in seiner letzten Reinkarnation hier <a href="http://supermount-ng.sourceforge.net/" target="_blank"><!--auto-->http://supermount-ng.sourceforge.net/</a><!--auto--> zu liegen.

Wie gesagt: Viel Spass beim Frickeln!

Jochen

Re: CD-ROM auswurf automatisieren

Posted: 28. Nov 2003 15:35
by Hansone
Ah, cool! Im 2.6er Kernel wird supermount nicht zufällig drin sein? <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Re: CD-ROM auswurf automatisieren

Posted: 29. Nov 2003 17:01
by joern
Hallo,

starte mir ein Script auf Icon-Klick,
welches erkennt ob CD eingelegt ist und entsprechend reagiert.


Grüsse joern

---------------------------------
#!/bin/sh
# cdhaendler_0.sh
# Script zu Managen von CDROM's
# Joern Eisenkraetzer *** 2003-05-07 *** Version 0.5.1
#
# Benötigt Programm-Paket 'setcd', bei Debian im Umfang dabei
# 'setcd' mit 'chmod 4733 /usr/bin/setcd' fuer Anwender ausfuehrbar machen.
# Weiterhin wird Paket 'Xdialog' für evtl. Ereignisausgabe benötigt.
#
# Vorgabe des CD-Geraetes, wie in /etc/fstab vereinbart:
CDROM=/dev/cdrom

# -1.- Status des CDROM0-Inhaltes/Zustandes ermitteln:
# Status ist z.B. 'CD tray is open' oder ein langer Text 'Disc fond in drive'
# - und wichtig - 'data disk typ', Verfasser etc, sowie Mountzustand.
STATUS1=`setcd -i $CDROM`
# Der wichtigste Teil wird ausgeschnitten:
STATUS1A=`echo $STATUS1 | cut -d: -f2`

# Es bleibt folgen nur uebrig: gefunden oder nicht:
# echo $STATUS1A

# Wir geben dem Suchergebnis eine nummerische Groesse:
STATUS1B=`echo $STATUS1 | grep data.disc`
STATUS1_WAHR=`echo $STATUS1B | wc -w`
# echo $STATUS_WAHR
Z=0
if [ $STATUS1_WAHR -gt 0 ] ; then
# echo "CD liegt im Kasten"
Z=10
# Mountzustand des Geraetes feststellen:
# Ermitteln des Einhaengepunktes aus /etc/fstab:
EP=`more /etc/fstab | grep $CDROM | cut -f2`
# Gemountet oder nicht, 0 oder mehr ?
STATUS2=`mount | grep $EP | wc -c`

if [ $STATUS2 -gt 0 ] ; then
# echo "CD ist gemounted"
Z=`expr $Z + 1`
# else
# echo "Es ist keine CD gemountet"
fi

else
Z=1
# echo "Es ist keine Daten-CD eingelegt"
fi

# -2.- Logische Konsequenzen festlegen, wie das Programm reagieren soll.
# Fall Z=1: Keine CD eingelegt -> Laufwerk ausfahren.
# Fall Z=10: CD eingelegt und nicht gemountet -> Mounten.
# Fall Z=11: CD gemountet - abmounten und auswerfen, Meldung wenn CDROM noch belegt


# echo $Z
case $Z in
1) eject && Xdialog --infobox "Bitte CD einlegen" 0 0 3000 & ;;
10) mount /cdrom && Xdialog --infobox "CD ist angehangen" 0 0 3000 & ;;
11) `umount /cdrom 2>/tmp/ErrorUmountCDROM.111 || cat /tmp/ErrorUmountCDROM.111 | Xdialog --textbox "-" 0 0 &` ; eject & ;;
esac


# Wer belegt das CDROM ?
# Wieviel mal belegt ?
i=`fuser -v /cdrom| cut -b32-36|grep [0-9]|wc -l`

# Umgehe sinnlose (?) Fehlermeldung, wenn Variable $i eingsetzt wird:
i=`expr $i + 0`

while [ $i -gt 0 ]; do

# PID der Prozesse in rueckwaertiger Folge:
F=`fuser -v /cdrom| cut -b32-36|grep [0-9]|head -$i |tail -1`
echo -n "Das CDROM wird blockiert durch: "
ps -e|grep $F |cut -b25-38|Xdialog --textbox "-" 0 0 &
i=`expr $i - 1`

done