CD-ROM auswurf automatisieren

Post Reply
Message
Author
Maxi

CD-ROM auswurf automatisieren

#1 Post 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?

Jochen

Re: CD-ROM auswurf automatisieren

#2 Post 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

Maxi

Re: CD-ROM auswurf automatisieren

#3 Post 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?

Sebastian

Re: CD-ROM auswurf automatisieren

#4 Post 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

Jochen

Re: CD-ROM auswurf automatisieren

#5 Post 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

John

Re: CD-ROM auswurf automatisieren

#6 Post 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!

Hein

Re: CD-ROM auswurf automatisieren

#7 Post 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 :)

Jochen

Re: CD-ROM auswurf automatisieren

#8 Post 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

wicht

Re: CD-ROM auswurf automatisieren

#9 Post 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?

Jochen

Re: CD-ROM auswurf automatisieren

#10 Post 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

Hansone

Re: CD-ROM auswurf automatisieren

#11 Post 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.

Jochen

Re: CD-ROM auswurf automatisieren

#12 Post 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

Hansone

Re: CD-ROM auswurf automatisieren

#13 Post 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">

joern

Re: CD-ROM auswurf automatisieren

#14 Post 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

Post Reply