GNU/Linux >> Znalost Linux >  >> Ubuntu

Příkaz, který detekuje, zda je zásuvka CD otevřená nebo zavřená?

Existuje příkaz, který můžete spustit ve skriptu shellu, který by zjistil, zda je přihrádka na CD otevřená nebo zavřená, a vrátí 1 nebo 0 podle toho, zda to bylo (nebo něco snadno interpretovatelného)?

V současné době provádím příkaz open a načasuji, jak dlouho trvá jeho provedení. Pokud je téměř okamžitá, je otevřená. Pokud to chvíli trvá, byla otevřena a nyní je zavřená.

Chtěl bych metodu, která nezahrnuje změnu aktuálního stavu – pouze jeho detekci.

Přijatá odpověď:

Našel jsem zde pěkné malé řešení. Níže uvedený kód C, minimálně pozměněný z odkazovaného webu, vrátí kód ukončení pokud je zásobník otevřený a 1 pokud tomu tak není.

Uložte tedy tento kód jako něco (např. foo.c ) a zkompilujte jej pomocí tohoto příkazu:

gcc -o trayopen foo.c

Poté zkopírujte zkompilovaný spustitelný soubor trayopen do /usr/bin :

sudo cp trayopen /usr/bin

Neměli byste být schopni dělat věci jako

trayopen /dev/sr0 && echo closed

Nebo úplněji:

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

Kód:

#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 strašidelných příkazů, které pronásledují terminál

  2. Jak zkontrolovat současný stav Open Source vs. Uzavřené grafické ovladače?

  3. Linux ekvivalent příkazu otevřít Mac OS X

  1. Jak používat příkaz sudo v Linuxu

  2. Co je stromový příkaz v Ubuntu?

  3. Otevřete soubor daný výsledkem příkazu ve vim

  1. Jak používat příkaz vmstat

  2. Příkaz pwd Linux

  3. Jak používat příkaz nslookup