GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Comando che rileva se il cassetto del CD è aperto o chiuso?

C'è un comando che puoi eseguire in uno script di shell che rilevi se il vassoio del CD è aperto o chiuso e restituisca 1 o 0 a seconda che fosse (o qualcosa di facile da interpretare)?

Attualmente, sto eseguendo il comando open e sto calcolando il tempo necessario per l'esecuzione. Se è quasi istantaneo, è aperto. Se ci vuole tempo, era aperto e ora è chiuso.

Vorrei un metodo che non implichi la modifica dello stato corrente, ma solo il rilevamento.

Risposta accettata:

Ho trovato una bella piccola soluzione qui. Il codice C sottostante, modificato in minima parte dal sito collegato, restituirà un codice di uscita di se il vassoio è aperto e 1 se non lo è.

Quindi, salva questo codice come qualcosa (ad es. foo.c ) e compilalo con questo comando:

gcc -o trayopen foo.c

Quindi, copia l'eseguibile compilato, trayopen a /usr/bin :

sudo cp trayopen /usr/bin

Non dovresti essere in grado di fare cose come

trayopen /dev/sr0 && echo closed

Oppure, più completo:

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

Il codice:

#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 comandi inquietanti che perseguitano il terminale

  2. Come rivedere lo stato attuale dell'open source vs. Driver di grafica a sorgente chiusa?

  3. Qual è il comando albero in Ubuntu?

  4. Equivalente Linux del comando open di Mac OS X

  5. Apre un file dato dal risultato di un comando in vim

5 metodi per aprire il Terminale di comando in Ubuntu Linux

Il comando di spegnimento?

Come mantenere aperto il terminale Gnome dopo la chiusura di un programma?

Trova la riga di comando?

Ny applicazione o comando che pulisce la memoria come Ccleaner in Windows?

Tutti i modi per verificare se una porta è aperta in Linux