Aus skript feststellen, ob CD-Tray offen ist?

  • Hallo,


    ich möchte gerne aus einem shell skript heraus feststellen, ob die CD-Schublade offen oder geschlossen ist.


    Ich weiss, daß ich mit eject die Schublade öffnen oder schließen kann, oder mit parameter -T sogar den jeweils anderen Zustand erreichen kann, aber ich möchte gerne feststellen, wie der aktuelle Zustand ist.
    Es wäre kein Problem, dazu probeweise die Schublade zu schließen, aber soweit ich das sehe gibt mir eject keine Information darüber, ob dazu etwas zu tun war oder nicht.


    Gibt es da irgendeinen versteckten Parameter oder eine andere Möglichkeit?


    Tschööö
    Robert

    :vdr2 Server: vdr 2.6.4 (yavdr) im Ubuntu 22.04 docker, Client: Kodi (LibreELEC)

  • Hallo,


    Hier findest Du die verallgemeinerten Befehle, die gegen ein Laufwerk abgesetzt werden können. Wie und wo das passieren kann, müsstest Du selber mal suchen.
    Der bekannteste Ausgangspunkt dürfte wohl http://fy.chalmers.se/~appro/linux/DVD+RW/ sein.


    Ich weiß jetzt nicht, warum Du das feststellen willst - meist dürfte es doch reichen, die Lade entweder zu öffnen oder zu schließen.


    Ansonsten könntest Du es noch indirekt versuchen.

    • wenn Du z.B. nach dem Schreiben eines Rohlings prüfen willst, ob die Lade offen ist, könntest Du dvd+rw-mediainfo verwenden. Wenn das nix lesen kann, bzw. meint, dass es kein Medium finden kann, ist die Lade offen.
    • Wenn Du es dagegen vor einem Schreibvorgang prüfen willst, könntest Du die Zeit messen, die der eject-Befehl braucht.
      Lade war bereits offen
      Code
      time `eject -v`
      real    0m0.005s
      user    0m0.004s
      sys     0m0.004s


      Lade wurde geöffnet

      Code
      time `eject -v`
      real    0m6.362s
      user    0m0.004s
      sys     0m0.000s


    Der Unterschied ist so groß, dass sich ein Schwellwert festlegen läßt.


    Gruß Geronimo

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

  • keine Ahnung ob es was Fertiges gibt.


    Folgendes Mini-Programm liefert bei mir 'true' wenn die Lade offen ist. Ansonsten (auch bei Fehlern wie falsches Laufwerk, fehlende Berechtigung etc.) 'false'


    C
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <linux/cdrom.h>
    
    
    main()
    {
        exit (CDS_TRAY_OPEN != ioctl(open("/dev/cdrom", O_RDONLY | O_NONBLOCK), CDROM_DRIVE_STATUS, 0));
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!