Script zum Auswerfen von CD nach beendetem cd rip von abcde

S-Force

Ensign
Registriert
Nov. 2007
Beiträge
238
Hallo,

ich bin auf der Suche nach einer Idee/Möglichkeit wie man nach dem automatischen rip der Musik von der CD diese wieder auswerfen kann.

Normal funktioniert das bei ABCDE automatisch wenn die Einstellung EJECTCD=y gesetzt ist. Leider ( ich weiß nicht warum ) funktioniert dies nicht bei jeder CD. Manche bleiben einfach im Laufwerk. Wenn nun über das Terminal eject eingegeben wird, wird die CD ausgeworfen.
Mein Script zum Aufrufen von ABCDE sieht wie folgt aus:

Code:
#!/bin/sh
export DISPLAY=:0.0;
sudo -u media xterm -e "/usr/bin/abcde; /usr/bin/eject"exit$?



Ich würde nun gerne mit einem Script prüfen ob der rip Prozess beendet ist und danach einfach eject ausführen.
Der Fehler besteht erst seit der Umstellung auf udev.
Wenn ich ABCDE normal starte über das Terminal wird die CD immer ausgegeben. Es ist mir aufgefallen, dass beim Aufruf über udev die CD nicht mehr als gemountet angezeigt wird, weder in der Seitenleiste noch im Explorer.


Mein udev script sieht wie folgt aus:


Code:
# ID_CDROM_MEDIA_CD = CD
SUBSYSTEM=="block", KERNEL=="sr0", ACTION=="change", RUN+="/home/media/autorip.sh & eject"

Es muss an dem Befehl Action liegen, durch change wir die CD nicht mehr angezeigt. Wenn ich add eintrage funktioniert es nicht... Vllt. gibt es hier einen Ansatzpunkt?

Seit dem das Script über Udev mit change gestartet wird, kann es passieren das bei größeren CDs bei einem Track das script nochmals gestartet wird und dann beim gleichen Track weiter macht. Ab diesem Punkt wird jeder Track also 2x ggf. auch noch öfters gleichzeitig gelesen.

Gruß
 
Ich habe mich mit udev noch nie befasst, aber laut http://www.reactivated.net/writing_udev_rules.html wird der Befehl in RUN nicht in einer Shell ausgeführt, d.h. das "& eject" hat keinen Effekt. Es wäre sowieso falsche Shell Syntax und müsste "&& eject" heißen bzw. für deine Zwecke wäre "|| eject" besser gewesen. Wahrscheinlich wird das "& eject" als Kommandozeilenargument einfach an das aufgerufene Programm übergeben.

Warum du in autorip.sh ein xterm aufrufst, ist mir auch rätselhaft. Wie wäre es mit "sudo -u media /usr/bin/abcde" und dann in der nächsten Zeile "sudo -u media /usr/bin/eject"? Alternativ geht auch "sudo -u media -s /usr/bin/abcde; /usr/bin/eject". Testhalber könntest du zwischen abcde und eject mal ein timeout von ein paar Sekunden einbauen. Vielleicht wird die CD aus irgendeinem Grund nicht sofort freigegeben, nachdem abcde beendet ist?
 
Hi,

ich bin deine Vorschläge einmal durchgegangen und habe alles getestet.
Mit "sudo -u media -s /usr/bin/abcde; /usr/bin/eject" funktioniert es auch aber es macht keinen Unterschied.
Die CD's kommen teilweise immer noch nicht raus.

Gäbe es denn keine Möglichkeit den Prozess ABCDE direkt zu überwachen und danach ein weiteres script zu starten?

Gruß
 
Versuche mal "sudo -u media -s /usr/bin/abcde; /usr/bin/sleep 10; /usr/bin/eject" und falls das nicht funktioniert, dann logge mal den Output von eject, also z.B.: "sudo -u media -s /usr/bin/abcde; /usr/bin/eject -v 2>&1 >>/tmp/eject.log"
 
Leider geht es damit auch nicht. Es sieht ganz so aus wie ich es mir gedacht habe. Durch den start via Udev erkennt das System die CD nicht als gemountet.

/usr/bin/eject: using default device `cdrom'
/usr/bin/eject: device name is `cdrom'
/usr/bin/eject: expanded name is `/dev/cdrom'
/usr/bin/eject: `/dev/cdrom' is a link to `/dev/sr0'
/usr/bin/eject: `/dev/sr0' is not mounted
/usr/bin/eject: `/dev/sr0' is not a mount point
/usr/bin/eject: `/dev/sr0' is not a multipartition device

Das manuelle Auswerfen der CD via eject Befehl auf dem Terminal geht jedoch.

lustigerweiße wurde die CD eben einmal ausgeworfen und beim Vallidierungsversuch nicht... ^^

Gruß
 
S-Force schrieb:
Durch den start via Udev erkennt das System die CD nicht als gemountet.
Die CD ist so oder so nicht gemountet, wenn es eine Audio CD ist. Mounten lassen sich nur Dateisysteme, also Daten CDs. Die Ausgabe gibt leider absolut keinen Hinweis darauf, was schief läuft. Was sagt denn "eject -v", wenn du es vom Terminal startest?
 
Werde ich später testen, aber zum mounten...
wenn ich die CD einlege und das Udev script deaktiviere, wird die CD im Explorer angezeigt und auch in der Seitenleiste.
Mit Udev ist es als wäre sie nicht da. Das meinte ich mit "gemountet".
Dachte es könnte sein das eject nicht greift weil das System keine eingelegte CD erkennt.

Gruß
 
S-Force schrieb:
Mit Udev ist es als wäre sie nicht da.
Hmm, OK, jetzt bin ich auch in unbekanntem Territorium. Klingt so, als ob deine Regel andere Regeln deaktiviert, die dafür sorgen, dass die CD von anderen Apps gesehen wird und eject später funktioniert. Mit "mounten" hat das aber vermutlich nichts zu tun.
 
Zurück
Oben