GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Commande qui détecte si le tiroir CD est ouvert ou fermé ?

Existe-t-il une commande que vous pouvez exécuter dans un script shell qui détecterait si le plateau du CD est ouvert ou fermé, et renverrait 1 ou 0 selon qu'il l'était (ou quelque chose de facile à interpréter) ?

Actuellement, j'exécute la commande open et je chronomètre le temps qu'il faut pour l'exécuter. S'il est presque instantané, il est ouvert. Si cela prend du temps, il était ouvert et est maintenant fermé.

Je voudrais une méthode qui n'implique pas de changer l'état actuel - juste de le détecter.

Réponse acceptée :

J'ai trouvé une petite solution sympa ici. Le code C ci-dessous, légèrement modifié depuis le site lié, renverra un code de sortie de si le bac est ouvert et 1 si ce n'est pas le cas.

Donc, enregistrez ce code sous quelque chose (par exemple foo.c ) et compilez-le avec cette commande :

gcc -o trayopen foo.c

Ensuite, copiez l'exécutable compilé, trayopen vers /usr/bin :

sudo cp trayopen /usr/bin

Vous ne devriez pas pouvoir faire des choses comme

trayopen /dev/sr0 && echo closed

Ou, plus complet :

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

Le 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 commandes effrayantes qui hantent le terminal

  2. Comment examiner l'état actuel de l'Open Source Vs. Pilotes graphiques à source fermée ?

  3. Qu'est-ce que la commande tree dans Ubuntu ?

  4. Équivalent Linux de la commande open de Mac OS X

  5. Ouvrir un fichier donné par le résultat d'une commande dans vim

5 méthodes pour ouvrir le terminal de commande dans Ubuntu Linux

La commande d'arrêt ?

Comment garder le terminal Gnome ouvert après la fermeture d'un programme ?

Trouver la ligne de commande ?

Application Ny ou commande qui nettoie la mémoire comme Ccleaner sous Windows ?

Toutes les façons de vérifier si un port est ouvert sous Linux