GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Befehl, der erkennt, ob die CD-Schublade offen oder geschlossen ist?

Gibt es einen Befehl, den Sie in einem Shell-Skript ausführen können, das erkennt, ob die CD-Schublade offen oder geschlossen ist, und 1 oder 0 zurückgibt, je nachdem, ob dies der Fall war (oder etwas, das leicht zu interpretieren ist)?

Derzeit führe ich den open-Befehl aus und messe, wie lange die Ausführung dauert. Wenn es fast augenblicklich ist, ist es offen. Wenn es dauert, war es offen und ist jetzt geschlossen.

Ich hätte gerne eine Methode, bei der der aktuelle Zustand nicht geändert, sondern nur erkannt wird.

Akzeptierte Antwort:

Ich habe hier eine nette kleine Lösung gefunden. Der folgende C-Code, der gegenüber der verlinkten Site minimal geändert wurde, gibt einen Exit-Code von zurück wenn das Fach geöffnet ist und 1 wenn nicht.

Speichern Sie diesen Code also als etwas (z. B. foo.c ) und kompilieren Sie es mit diesem Befehl:

gcc -o trayopen foo.c

Kopieren Sie dann die kompilierte ausführbare Datei trayopen nach /usr/bin :

sudo cp trayopen /usr/bin

Sie sollten nicht in der Lage sein, Dinge wie

zu tun
trayopen /dev/sr0 && echo closed

Oder, vollständiger:

#!/bin/sh
if trayopen /dev/sr0
then
    echo "Tray is open."
else
    echo "Tray is closed."
fi

Der Code:

#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>

int main(int argc,char **argv) {
  int cdrom;
  int status=1;

  if (! argv[1] ){
    printf("Usage : trayopen [device]\n");
    printf("Result: Returns a 0 if the tray was open and 1 if it was closed\n");
    exit(2);
  }

  if ((cdrom = open(argv[1],O_RDONLY | O_NONBLOCK)) < 0) {
    printf("Unable to open device %s. Provide a device name (/dev/sr0, /dev/cdrom) as a parameter.\n",argv[1]);
    exit(2);
  }
  /* Check CD tray status */
  if (ioctl(cdrom,CDROM_DRIVE_STATUS) == CDS_TRAY_OPEN) {
    status=0;
  }

  close(cdrom);
  exit(status);
}

Ubuntu
  1. 8 gruselige Befehle, die das Terminal heimsuchen

  2. So überprüfen Sie den aktuellen Stand von Open Source vs. Closed-Source-Grafiktreiber?

  3. Was ist der Baumbefehl in Ubuntu?

  4. Linux-Äquivalent zum Open-Befehl von Mac OS X

  5. Öffnen Sie eine Datei, die durch das Ergebnis eines Befehls in vim angegeben wird

5 Methoden zum Öffnen des Befehlsterminals in Ubuntu Linux

Der Shutdown-Befehl?

Wie lässt man das Gnome-Terminal nach dem Schließen eines Programms geöffnet?

Finden Sie die Befehlszeile?

Neue Anwendung oder Befehl, der den Speicher wie Ccleaner in Windows reinigt?

Alle Möglichkeiten, um zu überprüfen, ob ein Port in Linux geöffnet ist