Noyau 2.6, udev rules et des cheveux en moins

Bonjour,

Je lance un nouveau projet basé sur udev

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

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 expérience 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.

Merci de votre aide.

Bien cordialement, Oaxley from Linux Moon

Hum… Pas de réponses ?

:unamused:

Sil, ci dessous un exemple de script exécuté à l’introduction d’une clef (cf [url]http://clefagreg.dnsalias.org/[/ur): le répertoire home de l’utilisateur agreg
est recrée et la session X relancé à l’introduction de la clef USB:

#!/bin/bash date >> /tmp/interne mkdir -p /mnt_ mknod /tmp/$DEVNAME block $MAJOR $MINOR mount -t $ID_FS_TYPE /tmp/$DEVNAME /mnt_ if [ -d /mnt_/home ] ; then PIDAG=`ps xa | grep -E "tty1.*bash" | awk '{print $1}'` PIDXAG=`ps xa | grep "/usr/bin/startx" | grep -v grep | awk '{print $1}'` kill $PIDXAG kill -9 $PIDXAG pushd /home/agreg ls -a /home/agreg/ | grep -v "\.$" | grep -v "\.wine$" | awk '{print "rm -Rf \""$0"\""}' | sh rm -Rf /oldroot/ramdisk/home/agreg/.wine (cd /etc/skel ; tar c . ) | tar x --owner=agreg --group=agreg (cd /etc/skel ; tar c . ) | tar t | awk '{print "chown agreg.agreg \""$0"\""}' | sh mkdir -p /tmp/homeagreg pushd /tmp/homeagreg (cd /mnt_/home ; tar c . ) | tar x --owner=agreg --group=agreg if [ -f /mnt_/droitshome.txt ] ; then sed -e '1,$s|/ramdisk||' /mnt_/droitshome.txt | /bin/bash fi popd chown -R agreg.agreg /tmp/homeagreg (cd /tmp/homeagreg ; tar c . ) | tar x --owner=agreg --group=agreg rm -Rf /tmp/homeagreg popd kill $PIDAG kill -9 $PIDAG fi umount /mnt_ rmdir /mnt_ rm /tmp/$DEVNAME
la règle udev est

les principales difficultés viennent du fait que le fichier /dev/??? correspondant n’existe pas par exemple.

Il y a eu pas mal de demandes de ce type dans le forum programmation.

Hello fran.b,

Merci pour ton retour.

Je vais déjà étudier ton idée et faire d’autres tests.

A bientôt :O)

Je vais également fouiner du cote de forum prog, merci du tuyau !