logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 31-07-2012 19:32:43

sahariel
Membre
Lieu : /etc/hearth/sahariel.conf
Distrib. : Debian GNU/Linux 6.0.6 (squeeze)
Noyau : Linux 2.6.32-5-amd64
(G)UI : Gnome
Inscription : 11-07-2012

Script : changer un fichier si ...

Bonjour, je ne savais pas trop ou poster ce sujet , dans la section programmation ou ici et je me suis finalement décidé pour ici .


Donc je voudrais savoir si parmi vous quelques personnes pourraent m'aider dans mon idée.

je voudrai faire en sorte que : si ma souris est branché tel fichier soit mis quelque part ou nommé d' une certaine facon . ou que si elle n'est pas branché tel autre fichier soit mis a la meme place ou nomme du meme nom .

n'étant ps sur que mes propos soit très compréhensible je poste un petit exemple :


       if ( souris == BRANCHE )
       copy "fichier1" vers "dossier_de_destination"
       
       else
       copy "fichier2" vers "meme_dossier_de_destination"
 



Enfin voila je ne sais pas comment décrire plus précisment.

Si vous pouviez me donner des moyens tout fait ou alors seulement quelques lignes de codes que je pourrais trannsformer en script cela serait sympa .

merci d'avance


HP-620 :
            > 6 Go RAM
      >Debian 6.0 amd64

Hors ligne

#2 31-07-2012 19:53:59

stopher
Membre
Lieu : lille
Distrib. : squeeze
Noyau : 2.6.32
(G)UI : Gnome
Inscription : 03-10-2008
Site Web

Re : Script : changer un fichier si ...

Salut ,

udev est la solution la plus simple selon moi smile

http://doc.ubuntu-fr.org/udev

Bonne recherche,

Ch.

Dernière modification par stopher (31-07-2012 19:54:11)

Hors ligne

#3 31-07-2012 20:04:54

sahariel
Membre
Lieu : /etc/hearth/sahariel.conf
Distrib. : Debian GNU/Linux 6.0.6 (squeeze)
Noyau : Linux 2.6.32-5-amd64
(G)UI : Gnome
Inscription : 11-07-2012

Re : Script : changer un fichier si ...

Merci pour cette ssolution mais je dois avouer que je ne comprend pas trop .

si vous pouuviez m'expliquer avec udev ou alors avec autre chose.

si il y a un moyen sans installer udev je suis aussi preneur

merci

HP-620 :
            > 6 Go RAM
      >Debian 6.0 amd64

Hors ligne

#4 31-07-2012 20:32:42

stopher
Membre
Lieu : lille
Distrib. : squeeze
Noyau : 2.6.32
(G)UI : Gnome
Inscription : 03-10-2008
Site Web

Re : Script : changer un fichier si ...

udev , est un gestionnaire de périphériques, qui gère entre autre la liaison dynamique de ces derniers avec les fichiers du répertoire /dev ( fichiers représentant respectivement les périphériques connectés ).

Il permet de gérer le nommage / renommage des périphériques , gérer les droits sur ce périphérique ( par exemple n'autoriser que TOTO à utiliser la webcam, les autres peuvent toujours la brancher / débrancher ... ce sera bloqué ) , mais aussi ... là ou ça t’intéresse :

Exécuter un script spécifique ( via une régle/rule, decrite dans le répertoire /etc/udev/rules.d/ ) lorsque qu'un périphérique est connecté ou déconnecté.

Regarde bien la doc du lien que je t'ai donné, après avoir lu la présentation de udev, regarde la rubrique 5.3 , qui colle avec ton besoin .

Exemple de la rubrique:


KERNEL=="sdb", RUN+="/usr/bin/my_program"
 




Il te reste à l'adapter, en remplaçant sdb par le nom du périphérique concerné ( ta souris ) fournis par le noyau ( pour le savoir, utilise l'utilitaire udevinfo (ancienne version)  ou udevadm ( dans la version stable de debian )  ) 


Puis il te reste à créer ce fameux script bash ( "my_program" dans l'exemple ) qui fait ce que tu souhaites :

tel fichier soit mis quelque part ou nommé d' une certaine facon
...
ou que si elle n'est pas branché tel autre fichier soit mis a la même place ou nomme du meme nom




udev fait partie de debian par défaut, il n'y a rien à installer .


http://wiki.debian.org/fr/udev

Bon courage,

Ch.

Dernière modification par stopher (31-07-2012 20:59:28)

Hors ligne

#5 31-07-2012 22:36:46

sahariel
Membre
Lieu : /etc/hearth/sahariel.conf
Distrib. : Debian GNU/Linux 6.0.6 (squeeze)
Noyau : Linux 2.6.32-5-amd64
(G)UI : Gnome
Inscription : 11-07-2012

Re : Script : changer un fichier si ...

Et je me demandais vu qu'il faut que mon script soit execute en tant que root ( car je dois modifier un des fichiers se trouvant dans le repertoire /root )
y'a t'il un moyen pour executer ce programme directement en root ?

Merci d'avance

HP-620 :
            > 6 Go RAM
      >Debian 6.0 amd64

Hors ligne

#6 01-08-2012 08:29:33

stopher
Membre
Lieu : lille
Distrib. : squeeze
Noyau : 2.6.32
(G)UI : Gnome
Inscription : 03-10-2008
Site Web

Re : Script : changer un fichier si ...

L’exécution de script via udev se fera de toute manière en root, après pour tes tests tu peux simplement utiliser ton répertoire perso, et dés que ton script est ok , l'adapter pour utiliser le chemin du home de root "/root"

C'est toujours délicat ( déconseillé ) de tester des scripts en root ...

Sinon, si tu veux faire les choses proprement, regarde du coté de sudo

Pour finir, si tu décides malgré tout d’exécuter ton script en tant que root, tu peux ouvrir un terminal et te logger en super utilisateur via la commande su

Je te conseille de parcourir le wiki de DF qui regorge d'informations sur les diverses questions sur le système que tu peux te poser.

Ch.

Dernière modification par stopher (01-08-2012 08:30:16)

Hors ligne

#7 01-08-2012 10:47:52

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : Script : changer un fichier si ...

udev est certainement une bonne idée, mais pour éviter les droits root, pourquoi ne pas utiliser simplement la commande lsusb.
Par exemple, sans souris :

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
 


Avec ma souris :


Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 05e3:1205 Genesys Logic, Inc. Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330
 


Autrement dit, avec un grep, tu vérifie si la ligne correspondant à ta souris est présente : si oui -> copy, sinon -> copy autre fichier

lsusb |grep "Optical Mouse"



Pour exécuter ce script avec les droits root, tu peux utiliser sudo, et ne pas demander de mot de passe rien que pour ce script (voir visudo pour plus d'infos)

Dernière modification par Thuban (01-08-2012 10:48:56)

Hors ligne

#8 01-08-2012 10:56:57

sahariel
Membre
Lieu : /etc/hearth/sahariel.conf
Distrib. : Debian GNU/Linux 6.0.6 (squeeze)
Noyau : Linux 2.6.32-5-amd64
(G)UI : Gnome
Inscription : 11-07-2012

Re : Script : changer un fichier si ...

D'accord en fait je voudrais que mon script soit execute normalement mais le truc c' est qu'il devrait juste modifier un fichier de root

Après je me demandais peut être je pourrais faire en sorte que le dossier ou se trouve le fichier en question m' appartiennent aussi ?

Enfin merci pour vos réponses .

HP-620 :
            > 6 Go RAM
      >Debian 6.0 amd64

Hors ligne

#9 01-08-2012 12:02:27

stopher
Membre
Lieu : lille
Distrib. : squeeze
Noyau : 2.6.32
(G)UI : Gnome
Inscription : 03-10-2008
Site Web

Re : Script : changer un fichier si ...

La question est aussi,

faut-il que cette détection de souris branchée ou non se fasse qu'une fois ( au démarrage par exemple ) ou de façon "constante" dés que je branche ou débranche cette dernière à tout moment ?

Dans le premier cas, lsusb est effectivement plus simple , dans le second cas je n'ai pas d'autre solution que d'utiliser udev ( enfin , je n'en connais pas d'autre, il doit en exister smile )

Ch.

Hors ligne

#10 02-08-2012 13:35:09

sahariel
Membre
Lieu : /etc/hearth/sahariel.conf
Distrib. : Debian GNU/Linux 6.0.6 (squeeze)
Noyau : Linux 2.6.32-5-amd64
(G)UI : Gnome
Inscription : 11-07-2012

Re : Script : changer un fichier si ...

Il faudrait meiux qu'elle se fasse de façon constante cela serait plus pratique .

HP-620 :
            > 6 Go RAM
      >Debian 6.0 amd64

Hors ligne

Pied de page des forums