Obtenir l'état du lecteur CD

Bonjour à tous!

Ben voila, tout est dans le titre!

En fait, je suis sous debian etch avec xfce. Je suis en train de travailler un petit script pour mon menu. Celui-ci doit me renvoyé l’état de mon lecteur cd.

Monté (ça c’est OK)
Non monté
Avec un CD dedans (et lire le nom de celui-ci sans le monter)
Sans CD dedans
Fermé
Ejecté
Le type de média inside.

J’ai eu beau cherché dans tous les sens, rien y fait. Pourtant, xfce le fait lui, car quand on met un cdrom, sans qu’il soit monté, il nous dis quel type de média est dedans et son nom.

Je suis perdu, aidez moi :open_mouth:

Cordialement.

Oups, trompé de forum (Pas habitué) Merci de le déplacer avant que je me fasse gronder :wink:

[quote=“Roultabie”]Oups, trompé de forum (Pas habitué) Merci de le déplacer avant que je me fasse gronder :wink:[/quote] Grrrrrr. :imp:

Salut,

tu peux regarder du coté tu paquet setcd sous debian

setcd -i /dev/ton_peripherique est un bon debut.

après, man setcd

sur les cd audios, cdtool donnes plein d’infos aussi.

A+

Merci bien de la réponse,

Toutefois setcd et cdtool ne sont pas installés par défaut dans Debian et Xfce arrive pourtant à récupérer ces informations.

Comme je veux créer un script, j veux qu’il ne dépende que des paquets installés par défaut (blkid etc…)

J’ai beau chercher, je sèche! :cry:

Peut-être avec les outils fournis avec HAL.

À voir également, les possibilités de l’API de la libhal.

On peut vivre sans hal: j’y suis obligé moi même en raison d’un bug avec mon portable.
Donc ça n’est pas un incontournable comme le veut Roultabie.
J’ai regardé man eject, et ça fait plein de choses, mais ça ne donne pas le statut.
Peut être une valeur à trouver dans /proc/ide ?

Arff, de tous mes essais, pour l’instant il n’y a que lshal qui répond à une partie de ma question (le nom) mais pas de manière satisfaisante, en effet, il agit en temps réel.

Eject a en effet pas mal d’option mais aucune dans ce que je recherche. /proc/ide lui aussi m’envoie des informations mais simplement sur le matériel.

Bouhh!! :cry:

Bon, voilà ce que j’ai obtenu avec lshal

udi = '/org/freedesktop/Hal/devices/volume_label_Masnada' volume.unmount.valid_options = {'lazy'} (string list) volume.mount.valid_options = {'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'noexec', 'quiet', 'remount', 'exec', 'utf8', 'uid=', 'mode=', 'iocharset='} (string list) volume.ignore = false (bool) org.freedesktop.Hal.Device.Volume.method_execpaths = {'hal-storage-eject', 'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject'} (string list) org.freedesktop.Hal.Device.Volume.method_argnames = {'extra_options', 'mount_point fstype extra_options', 'extra_options', 'extra_options'} (string list) org.freedesktop.Hal.Device.Volume.method_signatures = {'as', 'ssas', 'as', 'as'} (string list) org.freedesktop.Hal.Device.Volume.method_names = {'Eject', 'Mount', 'Unmount', 'Eject'} (string list) info.interfaces = {'org.freedesktop.Hal.Device.Volume', 'org.freedesktop.Hal.Device.Volume'} (string list) info.udi = '/org/freedesktop/Hal/devices/volume_label_Masnada' (string) info.product = 'Masnada' (string) volume.disc.capacity = 522020864 (0x1f1d6800) (uint64) volume.disc.is_rewritable = false (bool) volume.disc.is_appendable = false (bool) volume.disc.is_blank = false (bool) volume.disc.has_data = true (bool) volume.disc.has_audio = true (bool) volume.disc.type = 'cd_rom' (string) volume.size = 522020864 (0x1f1d6800) (uint64) volume.num_blocks = 1019572 (0xf8eb4) (int) volume.block_size = 2048 (0x800) (int) info.capabilities = {'volume.disc', 'volume', 'block'} (string list) info.category = 'volume' (string) volume.is_partition = false (bool)

Mais après une dizaine de pages!

Je vois bien ça:

mais le retrouve pas dans mon système!

Et puis si comme dit mattotop hal n’est pas un incontournable…

Aller, cherchons encore.

usenet-forums.com/linux-gene … rtion.html
Deux programmeurs défendent leurs approches respectives, et il y a un script “waitcd” pour attendre une insertion, plus quelques exemples courts de code C.

Je croyais que le contenu de /proc/sys/dev/cdrom/ devait contenir des trucs interessants, mais en fait son contenu ne semble pas changer quand je mets un cd. Il doit forcément y avoir un truc dans /proc.

Ton lien m’a l’air bien intérressant.

Pour ma part, j’en suis avec lshal

Mais le problème avec, c’est qu’il faut déjà connaitre le nom du cd!

C’est le serpent qui se mord la queue!

Un petit up?

J’ai beau chercher, à part faire un script pour récupérer le résultat de lshal, je ne vois pas (et ce script serait aléatoire suivant les évolutions, c’est le problème)

si tu utilises hal, tu as les déclinaisons :

hal-find-by-property --key block.device --string /dev/sd??

hal-get-property --udi /org/freedesktop/Hal/devices/storage_serial_??? --key block.is_volume

hal-get-property --udi /org/freedesktop/Hal/devices/storage_model_??? --key volume.disc.has_audio

etc. etc.

Ou bien le paquet cdde