GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Comando que detecta si el cajón de Cd está abierto o cerrado?

¿Hay algún comando que pueda ejecutar en un script de shell que detecte si la bandeja del CD está abierta o cerrada, y devuelva 1 o 0 dependiendo de si lo estaba (o algo fácil de interpretar)?

Actualmente, estoy ejecutando el comando de apertura y cronometrando el tiempo que lleva ejecutarlo. Si es casi instantáneo, está abierto. Si lleva tiempo, estaba abierto y ahora está cerrado.

Me gustaría un método que no implique cambiar el estado actual, solo detectarlo.

Respuesta aceptada:

Encontré una pequeña solución agradable aquí. El código C a continuación, modificado mínimamente desde el sitio vinculado, devolverá un código de salida de si la bandeja está abierta y 1 si no lo es.

Por lo tanto, guarde este código como algo (por ejemplo, foo.c ) y compilarlo con este comando:

gcc -o trayopen foo.c

Luego, copie el ejecutable compilado, trayopen a /usr/bin :

sudo cp trayopen /usr/bin

No deberías poder hacer cosas como

trayopen /dev/sr0 && echo closed

O, más completo:

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

El código:

#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 comandos espeluznantes que rondan la terminal

  2. Cómo revisar el estado actual del código abierto vs. ¿Controladores de gráficos de código cerrado?

  3. ¿Qué es el comando de árbol en Ubuntu?

  4. Equivalente en Linux del comando de apertura de Mac OS X

  5. Abra un archivo dado por el resultado de un comando en vim

5 métodos para abrir la Terminal de Comandos en Ubuntu Linux

¿El comando de apagado?

¿Cómo mantener abierta la terminal de Gnome después de que se cierra un programa?

¿Encontrar la línea de comando?

¿Alguna aplicación o comando que limpie la memoria como Ccleaner en Windows?

Todas las formas de verificar si un puerto está abierto en Linux