#1 Le 29/12/2006, à 19:21
- Compte anonymisé
[Résolu]Ouvrir & fermer un lecteur de Cd
Salut,
Voilà, j'ai un PC avec un cache devant mon lecteur de CD. (Pas pratique du tout)
J'ai commencé un script pour éjecter le cd et fermer celui-ci, mais je suis nul en la matière.
le lecteur s'ouvre bien mais se ferme de suite. Je peux mettre entre deux un sleep 10 par exemple mais je dépendrai des 10 secondes.
Ce que je voudrais c'est un clic sur le script = il s'ouvre et un second clic = il se ferme.
Et aussi quand je clique sur ce script qu'il me donne pas le choix entre: "Lancer dans un terminal"/ "Afficher"/ "annuler" ou "Lancer" mais que ça soit transparent.
#!/bin/sh -v
eject /media/cdrom0
mount /media/cdrom0
Merci par avance de votre aide.
Bye.
Dernière modification par Compte anonymisé (Le 01/01/2007, à 16:28)
#2 Le 29/12/2006, à 19:29
- alexises
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
je dirais qu'il faut travailler avec les condition
mais il faudrais pouvoir vérifier si le lecteur cd est monter
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#3 Le 29/12/2006, à 21:07
- Link31
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Crée un fichier vide /tmp/cd_opened (touch /tmp/cd_opened) si il n'existe pas puis ouvre le lecteur, et si il existe supprime le fichier puis ferme le lecteur.
Quelque chose du genre :
if [ -f /tmp/cd_opened ]
rm /tmp/cd_opened
mount /media/cdrom0
else
eject /media/cdrom0
touch /tmp/cd_opened
fi
(je suis assez mauvais en scripts shell...)
Hors ligne
#4 Le 30/12/2006, à 00:10
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
#!/bin/sh -v
eject /media/cdrom0
mount /media/cdrom0Merci par avance de votre aide.
Bye.
Pour le peut que je sais, l'action de monter ton CD fait fermer ton lecteur...
Ne serai-il pas possible de le mettre en deux partie ?
Pour ouvrir :
#!/bin/sh -v
eject /media/cdrom0
et pour fermer :
#!/bin/sh -v
mount /media/cdrom0
non ?
Hors ligne
#5 Le 30/12/2006, à 00:31
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
ah ok...
et y a pas moyen de faire un truc dans le genre
If lecteur de CD ouvert
{
mount /media/cdrom0
} else {
eject /media/cdrom0
}
?
(je ne connait vraiment pas grand chose en SH, plus en PHP alors bon... je tente de m'exprimé comme je peut ^^
mais l'état du lecteur CD doit etre donné par une commande...
Hors ligne
#6 Le 30/12/2006, à 00:46
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
j'ai peut-etre mieu meme
If mount /media/cdrom0
{
eject /media/cdrom0
} else {
mount /media/cdrom0
}
pas plus simple ?
Hors ligne
#7 Le 30/12/2006, à 00:58
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
oui, je ne sais pas comment mettre l'attribut de l'état logique dans le IF... je suis en train d'apprendre la (la c'était juste pour savoir si c'était ce que tu voulais )
on va voir sa
Hors ligne
#8 Le 30/12/2006, à 01:05
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
peut-tu te servir du dernier script de cette page ? http://linuxfr.org/forums/26/17853.html
en le remplaçant comme cela :
>cat plop.sh
#!/bin/sh
DEVICE=/dev/cdrom
[ -n "$1" ] && DEVICE="$1"
head -c 1 "$DEVICE" 1>/dev/null 2>&1
if [ $? = 0 ]; then
eject /media/cdrom0
else
mount /media/cdrom0
fi
Hors ligne
#9 Le 30/12/2006, à 01:07
- Frz
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Quelque chose de ce genre devrait fonctionner :
MOUNT_PATH="/media/cdrom0"
if [ $(mount | grep -c "$MOUNT_PATH") -gt 0 ]
# Le lecteur est monté :
then
eject $MOUNT_PATH
# Le lecteur n'est pas monté :
else
mount $MOUNT_PATH
fi
Hors ligne
#10 Le 30/12/2006, à 02:26
- Link31
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Ça fonctionne ce que j'avais mis dans mon premier post ?
if [ -f /tmp/cd_opened ]
then
rm /tmp/cd_opened
mount /media/cdrom0
else
eject /media/cdrom0
touch /tmp/cd_opened
fi
(j'ai rajouté le then qui manquait)
Hors ligne
#11 Le 30/12/2006, à 17:46
- Link31
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Le fichier /tmp/cd_opened est un simple fichier vide qui sert à vérifier si l'exécution précédente du script a ouvert ou fermé le lecteur. Normalement on utilise des variables, mais ce n'est pas possible dans ton cas puisque le shell n'est pas le même d'une exécution à l'autre et les variables sont donc perdues.
Pour l'affichage de la fenêtre, je ne sais pas, ça doit pouvoir se changer dans la configuration de Gnome, mais je ne connais pas très bien cet environnement. Si Nautilus est programmé pour afficher cette fenêtre pour tous les scripts, il n'y a certainement aucun moyen de le changer (du moins pour ce script en particulier). Essaie de créer un lanceur (sur le bureau ou ailleurs) qui exécute le script, peut-être que la fenêtre ne s'affichera pas...
Hors ligne
#12 Le 01/01/2007, à 14:28
- lunique
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Pour le probleme de la demande.
Tu copie ton script dans ~/ce_que_tu_veux
Sur le bureau, clic droit, créer un lanceur et dans commande tu mets "~/ce_que_tu_veux" et roulez jeunesse ^ ^
Hors ligne
#13 Le 01/01/2007, à 17:19
- lunique
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Si tu veux pouvoir mettre des caracteres speciaux ( ) [ ] \ / et espace (il y en a peut etre d'autre) il faut les "echapper" avec le caractere \ quand tu mets le chemin. Donc par exemple : /home/golgot200/Ouvrir\ Fermer
Hors ligne
#14 Le 01/01/2007, à 18:39
- Haplo
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
non, il ne le supprime pas, il prend en compte que c'est dans le nom du bidule
Hors ligne
#15 Le 01/01/2007, à 19:14
- lunique
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Haplo avait bien compris ce que tu voulais dire, il rectifiait juste la formulation ^ ^. En fait, slash-espace ne supprime pas l'espace, mais supprime sa signification de separation d'argument. Sa doit faire la meme chose en mettant le mon dossier entre quote : 'mon dossier'
Hors ligne
#16 Le 01/11/2007, à 21:34
- sylvaing01
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
bonjour, je ressort ce vieux post pour rajouter ma version pour ouvrir/fermer le tiroir d'un lecteur CD.
Il est écrit en C, et fait 20 lignes seulement. je vous le donne:
#include <linux/cdrom.h>
#include <fcntl.h>
int main(int argc,char **argv)
{ int fd = -1,status;
if(argc!=2){return 1;}
fd = open(argv[1], O_RDONLY|O_NONBLOCK, 0);
if (fd > 0)
{
status = ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
if (status < 0) {return 1;}
switch (status)
{
case CDS_TRAY_OPEN:
ioctl(fd, CDROMCLOSETRAY, 0);break;
case CDS_NO_DISC:
case CDS_DISC_OK:
ioctl(fd, CDROMEJECT, 0);
case CDS_DRIVE_NOT_READY:
;
}
close(fd);
}
}
Copiez le dans un fichier, que vous nommez, par exemple, tiroir.c
ensuite dans le terminal vous tapez:
Code:
gcc -o tiroir tiroir.c
puis:
Code:
sudo install -m 755 tiroir /bin
et voilà, reste plus qu'à créer un raccourcis sur le bureau, et le tour est joué!
Petites précision:
la commande "sudo install" va placer le programme dans /bin, Vous pouvez choisir le chemin où placer le programme.
le programme accepte donc un argument: le lecteur de votre choix:
chez moi /dev/hdc pour lecteur cd et /dev/hdd pour mon graveur dvd. /dev/cdrom et /dev/dvdrw également
sous KDE, il est possible de créer une entrée dans le menu K et de lui associer une touche ou une combinaison de touche.
Par exemple, j'ai associé les touches multimédia "Favoris" et "Accueil" de mon logitech X300, et çà fonctionne impec.
Dernière modification par sylvaing01 (Le 01/11/2007, à 21:42)
Hors ligne
#17 Le 03/11/2007, à 15:19
- david breizh
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
sinon il y a la commande eject -T /dev/? qui doit savoir si la porte et ouverte ou pas et choisi en dépits l'action à faire mes de marche plus sous gusty la merde tiens.
ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!
Hors ligne
#18 Le 03/11/2007, à 15:31
- sylvaing01
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
Salut golgot200,
Chez moi tout fonctionne, j'ai testé sur plusieurs pc çà fonctionne impec.
Dernière modification par sylvaing01 (Le 03/11/2007, à 15:32)
Hors ligne
#19 Le 04/11/2007, à 13:36
- sylvaing01
Re : [Résolu]Ouvrir & fermer un lecteur de Cd
salut david breizh,
J'ai regardé les sources de eject et appemment il ne détecte pas si le tiroir du lecteur est ouvert, il effectue un timing a l'ouverture et détermine ainsi si le tiroir était déjà ouvert ou non à ce que j'ai compris. quoi qu'il en soit le pb de golgot200 reste un mistère puisque son lecteur s'ouvre avec la commande eject mais pas avec mon programme. pourtant le programme eject fait exactement comme mon programme pour ouvrir le tiroir. Vraisemblablement le problème est ailleur...
Hors ligne