Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: VDR Portal. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Freitag, 24. Oktober 2008, 11:01

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.2.0 auf Ubuntu 14.04, Client: vdr 2.2.0 auf RPi (raspbian)

2

Freitag, 24. Oktober 2008, 14:40

RE: Aus skript feststellen, ob CD-Tray offen ist?

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

    Quellcode

    1
    2
    3
    4
    
    time `eject -v`
    real    0m0.005s
    user    0m0.004s
    sys     0m0.004s

    Lade wurde geöffnet

    Quellcode

    1
    2
    3
    4
    
    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!

sparkie

Erleuchteter

Beiträge: 3 046

Wohnort: a child of the universe

Beruf: duct tape programmer

  • Nachricht senden

3

Freitag, 24. Oktober 2008, 14:48

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'

Quellcode

1
2
3
4
5
6
7
8
9
#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));
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sparkie« (24. Oktober 2008, 14:49)


4

Montag, 27. Oktober 2008, 17:06

Hallo,

danke für die Antworten, das werde ich beides mal ausprobieren!

Tschööö
Robert
:vdr2 Server: vdr 2.2.0 auf Ubuntu 14.04, Client: vdr 2.2.0 auf RPi (raspbian)

Immortal Romance Spielautomat