Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/04/2010, à 11:50

oaxley

udev les rules et l'éxécution automatique

Bonjour,

Je lance un nouveau projet basé sur udev

J'ai déjà creusé un peu le sujet mais rien n'est vraiment conclunat.

Voila de quoi il s'agit:

Détecter un nouveau device pluggué en USB sur mon système et enregistrer les informations les plus génériques mais aussi les plus précises possibles afin de pouvoir l'identifier à coup sur.

Objectif: un nouveau disque externe est pluggué. Il n'est pas encore connu alors je l'identifie de manière sure et unique. Je garde ces infos pour les futures connexions
Comme ce disque est nouveau, je me propose de déclencher une application APP1 (shell, perl, flex,...) qui me propose de le formater, de créer une partition, un label, .... Les infos seront versées ds une db avec les éléments fondamentaux à sa reconnaissance (UUID par exemple)

Mes test se sont portés sur une rules du type COMMAND="add", +RUN="/usr/local/bin/add_scrip.sh"

Mais je bute sur le lancement du prog. lui même.

La suite est simple:
Une fois le disque "enregistré", le reconnaitre, le monter /mnt/id_disk/, lancer un script de backup par exemple, demonter le FS (COMMAND="remove" +RUN="/usr/local/bin/rmv_scrip.sh"

QUESTION:
Y'a t'il des personnes ayant une experience sur le sujet et voulant bien me faire un retour ?

A l'issu de mon projet, nous pourrions ainsi proposer une doc regroupant l'ensemble.

Qu'en dites vous ?

Merci de votre aide.

Bien cordialement, Oaxley from Linux Moon

Hors ligne

#2 Le 22/04/2010, à 13:59

fabux

Re : udev les rules et l'éxécution automatique

Salut,

jamais trop fais mais je trouve que la doc udev est déjà bien fourni non?

oaxley a écrit :

Objectif: un nouveau disque externe est pluggué. Il n'est pas encore connu alors je l'identifie de manière sure et unique. Je garde ces infos pour les futures connexions
Comme ce disque est nouveau, je me propose de déclencher une application APP1 (shell, perl, flex,...) qui me propose de le formater, de créer une partition, un label, .... Les infos seront versées ds une db avec les éléments fondamentaux à sa reconnaissance (UUID par exemple)

Euh si tu branche le disque de quelqu'un d'autre mais et qu'il a des données dessus? Il apparait bien comme nouveau donc sera formaté? ou alors j'ai loupé l'objectif.

Hors ligne

#3 Le 22/04/2010, à 14:47

oaxley

Re : udev les rules et l'éxécution automatique

Hello,

Euh si tu branche le disque de quelqu'un d'autre mais et qu'il a des données dessus? Il apparait bien comme nouveau donc sera formaté? ou alors j'ai loupé l'objectif.

Oui et non.
En fait le but est de dédier des disques à un usage bien précis... élément déterminant de la suite de mon projet.
Le disque sera préparé s'il ne réponds pas aux critères pré déterminés, conséquences de cette phase.
Bien entendu c'est l'application appelé qui devra être capable de gérer cette phase avec warning, validation, etc... Du classqiue quoi yikes

Le principal ds tt ca est de pouvoir détecter le device quand il est pluggué, identifier s'il est valide ou non en fonction du cahier des charges défini, proposer de le préparer si besoin puis enchainer avec le protocole établi. Mais ceci n'est que du dev.

Pour ce qui est de la doc, oui il y en a.

Je fais appel a contribution afin de profiter de l'expérience de ceux qui ont déjà travaille ds ce sens
car je pense que l'echange est tjrs fructueux !

A +

Oaxley from Linux Moon

Hors ligne

#4 Le 22/04/2010, à 15:08

fabux

Re : udev les rules et l'éxécution automatique

Si j'ai bien suivi, en gros:

Avec le montage auto, une fois le disque inséré, tu lances ton script qui vérifies avec mount où il se met, fait ton analyse d'info sur ce point de montage (ou sa position physique que renvoi le mount) et selon soit agir sur le point de montage soit démonter pour formater (entre autre).

Je crois que je vais pas t'être très utile big_smile

Hors ligne

#5 Le 22/04/2010, à 15:55

oaxley

Re : udev les rules et l'éxécution automatique

He he...

Oui c'est un peu ca, en effet.

Oaxley from Linux Moon

Hors ligne

#6 Le 23/04/2010, à 10:51

oaxley

Re : udev les rules et l'éxécution automatique

UP...

Pas de candidats ? sad

Dernière modification par oaxley (Le 23/04/2010, à 11:51)

Hors ligne

#7 Le 23/04/2010, à 11:55

fabux

Re : udev les rules et l'éxécution automatique

C'est encore moi big_smile
En fait tu butte sur quoi exactement? Sur la règle ou ton script? ou tu voulais avoir quelqu'un qui est déjà fais un truc similaire et du coup avoir le taf de maché?

Par contre je ne suis pas sûr que ton post soit au bonne endroit. Demande peut-être son déplacement dans "Autres logiciels et problèmes généraux" (ou Autres environnement et personnalisation).

Hors ligne

#8 Le 23/04/2010, à 16:05

oaxley

Re : udev les rules et l'éxécution automatique

reSalut, Fabux

Effectivement ce Forum n'est pas très réactif... Peut ^tre pas le bon endroit ou bien pb trop complexe.
Je reste cependant fort étonné que personne n'est jamais buté sur ce sujet.

Le souci est simple:

Un disque inconnu est pluggué sur le serveur.
Je cherche à détecter cet évènement, et proposer une action adaptée (formatage et nommage par exemple).
Ce même disque lors de sa seconde connexion (et a fortiori les suivantes), devra être reconnu comme valide, monté dans un FS et une action adaptée (backup par exemple) devra être lancée.

Voila ce sur quoi je bute, surtout la première action (le disque qui n'a jamais ete connecté)

Merci de ton aide.

Oaxley from Linux Moon

Hors ligne

#9 Le 23/04/2010, à 16:43

fabux

Re : udev les rules et l'éxécution automatique

A mon avis il faut voir le truc en plusieurs étapes:
1 - la détection (sur sdb par exemple) qui lancerait pour commencer un terminal (dans le cadre d'un test uniquement pour voir si le disque est bien vu)
2 - diviser ton script en deux:
2.1 - reconnaissance complète du disque (pas forcément l'uuid vu que le même disque peut avoir subi des formatages sur autre machine par exemple)
2.2 - ajouter ou comparer la ref de ce disque dans une base
2.3 - si ajouter dans la base --> formatage
2.4 - si déjà dans la base --> script back-up

Pour la base je ne sais pas trop ,mais plutôt que d'utiliser une base, il y a peut-être moyen d' ajouter une clef de signature sur le disque pour qu'elle soit détectée au second plug (ou ajouter un label lors du formatage)
Par contre, un disque inconnu mais qui n'a pas besoin d'être formaté, il faudra poser la question avant de lancer l'action.

Déjà as-tu passé l'étape du 1? (pas essayé mais un truc style

Bus=="usb",KERNEL=="sdb", RUN+="/usr/bin/xterm"

en admettant que sdb soit la position du port. Mais je n'ai pas trop regardé ce que faisait les "options" données ici

Hors ligne

#10 Le 23/04/2010, à 17:12

oaxley

Re : udev les rules et l'éxécution automatique

reSalut Fabux,

Effectivement l'idée est la:
de 2.1 à 2.4 pas trop de soucis, plusieurs options sont disponibles. MySQL est deja utilisé, un tag disk est envisageable, etc...

Ce qui me pose vraiment pb c'est la premiere detection vu que je n'ai a ma disposition aucune information sur ce qui va arriver.
Je m'explique :
Avec des tests a la mano, pas bien difficile:

ls -ld /dev/sd*

etat initial
tu plug ton nouveau disk

ls -ld /dev/sd*

etat post initial => tu check la difference et tu en deduis qu'elle est le nouveau device
On pourrait aussi lire /var/log/messages ou syslog et faire le grep qui va bien.
Le reste s'enchaine facile

udevadm info --qery=all /dev/sdb

par exemple ou qquelque chose d'approchant.

Seulement il y a un Hic. Il me faut trouver un systeme universel qui fonctionnera sur tous mes serveurs.
Ils sont loin, sont installés en mode serveur (donc pas de fioritures X, etc...) et je ne peux pas vraiment limiter le device USB employé. Mais ttes les install sont identiques (version de l'OS et paquets installés)

Mon idee est de peut etre faire un etat des lieux du systeme, le sauvegarder en DB, trouver la bonne commande udev et comparer.

Il me semble qu'il y avait avant 2.5, 2.6 la commande

udevinfo -e

qui aurait pu faire l'etat mais je ne trouve pas l'equivalent en udevadm.

hmm

Hors ligne

#11 Le 23/04/2010, à 17:45

fabux

Re : udev les rules et l'éxécution automatique

hdparm peut-être? lshw ou peut-être hwinfo (pas devant pour voir).
mais pourquoi pas

Bus=="usb",KERNEL=="sd*", NAME="disk_save", RUN+="/usr/bin/xterm"

Si j'ai bien capté le truc d'udev (j'ai jamais trop poussé l'étude des règles), tu indiques que pour tout périphériques connecté sur le bus USB qui sera un disque (donc ce que tu veux), le node serait renommé en /dev/disk_save et lancera ton script (bon ici xterm). Du coup dans ton script avec hdparm ou lshw ou autre (lsusb -v peut-être même tiens) tu vérifies bien qu'il s'agit d'un disque dur et non d'une clé (sauf si ce cas ne se présentera pas ou ne te gène pas) puis monte ou formate /dev/disk_save (sans cherché à savoir si c'est sdb, sdc ou sdf...

Hors ligne

#12 Le 08/07/2014, à 12:01

patrick L

Re : udev les rules et l'éxécution automatique

oaxley a écrit :

reSalut, Fabux

Effectivement ce Forum n'est pas très réactif... Peut ^tre pas le bon endroit ou bien pb trop complexe.
Je reste cependant fort étonné que personne n'est jamais buté sur ce sujet.

Le souci est simple:

Un disque inconnu est pluggué sur le serveur.
Je cherche à détecter cet évènement, et proposer une action adaptée (formatage et nommage par exemple).
Ce même disque lors de sa seconde connexion (et a fortiori les suivantes), devra être reconnu comme valide, monté dans un FS et une action adaptée (backup par exemple) devra être lancée.

Voila ce sur quoi je bute, surtout la première action (le disque qui n'a jamais ete connecté)

Merci de ton aide.

Oaxley from Linux Moon


deterrage alors ...

bon je  juge pas ton projet...   bien que  !!! l'avis sur le formatage soit pertinent..   

j'ai rien essayé sur ta manip...   tu veux detecter un disque "inconnu"...   alors le plus simple est :


soit tu as des regles ...  sur les disques connus... 

subsystem=="usb", attrs{serial}=="FDTOIRODKR", action=="add",  SYMLINK+="connu_0001", LABEL="FIN"
subsystem=="usb", attrs{serial}=="FROREDKLMKR", action=="add",  SYMLINK+="connu_0002", LABEL="FIN"
#surtout pas oublier le disque du patron...
subsystem=="usb", attrs{serial}=="FDTOIEZEZOEZ", action=="add",  SYMLINK+="connu_0003", LABEL="FIN" 
## Ici le disque inconnu... 
subsystem=="usb",  action=="add" ,  run+="cequetuveux %k"
label="FIN"

Hors ligne