Koozali.org: home of the SME Server

Clés ou Disques USB : montage automatique à l'insertion...

Offline STRyk

  • ****
  • 190
  • +0/-0
Clés ou Disques USB : montage automatique à l'insertion...
« on: February 19, 2017, 04:50:46 AM »
Bonjour les gens :)
Je cherche depuis des jours quelque chose pour monter automatiquement les périphériques de stockage USB automatiquement sur SME 9.1 x64.
J'avais un script qui était super sympa sur sme 7 mais il ne fonctionne plus à cause de "/etc/hotplug.d/" qui n'existe plus...
J'ai lu tellement de chose que je ne sais plus ou chercher. Hal ?
J'ai essayé l'appli smeserver-usbdisksmanager-1.0-3.el6.sme.noarch.rpm sans succès.
Si vous avez des pistes je ne sais plus comment faire.
Pour info j'utilisais beep, pour le volume une fois monté, idem lors du démontage.

Pour rappel, encore merci aux contributeurs ;)
http://alt.e-smith.fr.narkive.com/3oZ13HpR/copie-en-automation-lors-de-l-insertion-d-une-clef-usb-le-script

A bientôt !
« Last Edit: February 19, 2017, 07:05:22 AM by STRyk »

Offline Jean-Philippe Pialasse

  • *
  • 2,747
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Clés ou Disques USB : montage automatique à l'insertion...
« Reply #1 on: February 19, 2017, 02:56:54 PM »
haha, merci d'avoir retrouvé le sujet.
C'est marrant comment les mêmes questions arrivent en même temps : https://forums.contribs.org/index.php?topic=52894.

et je vois que j'ai toujours pas fait de rpm... je regarde pour peut etre integrer cela a la contrib smeserver-usbdisk et ajouter un lien vers le script à utilisier.

Offline STRyk

  • ****
  • 190
  • +0/-0
Re: Clés ou Disques USB : montage automatique à l'insertion...
« Reply #2 on: February 19, 2017, 07:09:13 PM »
Merci, je t'avoue patauger complètement sur le sujet.
Comment faire pour détecter automatiquement la clé USB ? Il n' a plus 'hotplug'.
Est-ce HAL qui gère la chose maintenant ?
Parfois je me demande comment font les développeurs, ils doivent être tout les jours dedans ?
Doit on utiliser "udev" su j'ai bien compris ?
Comment faire pour trouver tout ce qu'il faut pour bien détecter la clé usb ou le disque usb ? Surtout qu'il soit formaté en NTFS ou Fat32, qui est souvent le cas.
En gros j'aimerai comprendre comment pouvoir insérer un périphérique USB (ou FireWire), qu'il soit monté automatiquement. Le reste lancer le script ça m'a l'air simple (hihi).
En tout cas, merci pour tout ce que vous faites pour les utilisateurs lambda ! ;)

EDITION :
Je viens de me torde le cerveau, en cherchant du coté de udev. De prime abord il est compliqué de chercher des chemins de réponse sans connaitre le sujet, on ne sait vraiment pas ou chercher car rien n'explique comment le faire simplement.
Voici ce que j'ai fais :

Connecter le périphérique et exécutez la commande suivante sur le périphérique approprié :
Code: [Select]
# udevadm info --name=/dev/sdb --attribute-walk

looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="200mA"
    ATTRS{urbnum}=="580"
    ATTRS{idVendor}=="13fe"
    ATTRS{idProduct}=="3e00"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="        "
    ATTRS{product}=="USB DISK 2.0"
    ATTRS{serial}=="07B610020C6B02E5"

Création du script de test:
Code: [Select]
# vi /root/test.sh
#---------------------------test.sh-----------------------------------------
#!/bin/sh
echo "testeuhhhh... okaille !!" >> /root/test-ok.txt
#---------------------------test.sh-----------------------------------------

Rendre le script exécutable :
Code: [Select]
# chmod +x test.sh
Ajout de règles udev, création du fichier dans /etc/udev/rules.d
Code: [Select]
# vi /etc/udev/rules.d/96-test-disk.rules
KERNEL=="sd[a-z]1", SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="13fe", ATTRS{serial}=="07B610020C6B02E5", RUN+="/root/test.sh"

Forcez une nouvelle exécution des scripts (Sera fait lors du redémarrage) :
Code: [Select]
# udevadm control --reload-rules
# udevadm test -a -p $(udevadm info -q path -n /dev/sdb)

Le script a dû s' exécuter, vérifions :
Code: [Select]
# cat test-ok.txt
testeuhhhh... okaille !!

Il ne reste plus qu'à faire un script plus complexe car visiblement la clé n'est pas monté pour autant...

EDITION AGAIN:
Ca marchait sur la machine virtuelle, mais sur la vrai machine : niet... :(
Il ne lance pas le script !!! Pfffff
3 heures pour rien.
J'ai même essayer de comprendre plus en détail "hal", j'ai ajouté "SUBSYSTEM=="block"" mais rien de plus.
Sur SME10 il n'y aura plus hal, alors comment faire autrement ?
Ca me désole de devoir à chaque fois refaire le monde, perdre du temps pour rien et devoir sans cesse demander de l'aide sur ces trucs là :(

Sur les deux machines (la virtuelle et la vrai), je teste avec :
Code: [Select]
# udevadm test -a -p $(udevadm info -q path -n /dev/sdd)
Oui, la clé USB est sur /dev/sdd sur la vrai machine, donc j'ai tout mis en conséquence bien sûr.

Avec ou sans clés usb j'ai bien les mêmes réponse (erreur sans clé, ok avec clé), mais sur la vrai machine (de prod) le script ne se lance pas...

J'ai meme utilisé ceci pour voir en temps réel :
Code: [Select]
# udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [1487564116.906791] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/scsi_generic/sg4 (scsi_generic)
UDEV  [1487564116.906816] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/bsg/16:0:0:0 (bsg)
UDEV  [1487564116.906831] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/scsi_disk/16:0:0:0 (scsi_disk)
UDEV  [1487564116.906844] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/scsi_device/16:0:0:0 (scsi_device)
UDEV  [1487564116.906858] remove   /devices/virtual/bdi/8:48 (bdi)
UDEV  [1487564116.907173] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/scsi_host/host16 (scsi_host)
UDEV  [1487564116.907761] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/block/sdd/sdd1 (block)
UDEV  [1487564116.908519] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0/block/sdd (block)
UDEV  [1487564116.909175] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0/16:0:0:0 (scsi)
UDEV  [1487564116.909193] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16/target16:0:0 (scsi)
UDEV  [1487564116.909207] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host16 (scsi)
UDEV  [1487564116.909224] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 (usb)
UDEV  [1487564116.909351] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb)
UDEV  [1487564122.937345] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb)
UDEV  [1487564122.939423] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 (usb)
UDEV  [1487564122.939999] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17 (scsi)
UDEV  [1487564122.940798] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/scsi_host/host17 (scsi_host)
UDEV  [1487564124.032047] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0 (scsi)
UDEV  [1487564124.034324] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0 (scsi)
UDEV  [1487564124.035846] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/scsi_disk/17:0:0:0 (scsi_disk)
UDEV  [1487564124.035940] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/bsg/17:0:0:0 (bsg)
UDEV  [1487564124.036249] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/scsi_generic/sg4 (scsi_generic)
UDEV  [1487564124.037253] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/scsi_device/17:0:0:0 (scsi_device)
UDEV  [1487564124.848341] add      /devices/virtual/bdi/8:48 (bdi)
UDEV  [1487564124.848859] change   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0 (scsi)
UDEV  [1487564125.912447] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/block/sdd (block)
UDEV  [1487564126.083778] add      /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host17/target17:0:0/17:0:0:0/block/sdd/sdd1 (block)

Etrange !

EDITION AGAIN (haine) AGAIN:
Le délire, j'ai du modifié le RUN en :
Code: [Select]
RUN+="/bin/sh /root/test.sh"
C'est fou ! Maintenant ça marche. Les pros me dirons sans doute pourquoi. ;)
Le volume usb étant reconnu, le script lancé, comment monter ce volume ?
Le script de l'époque n'est plus bon du coups :(

Le top serait de pouvoir monter 1 ou 2 volume USB, que l'on ne soit pas obliger d'aller mettre les mains dans le camboui. Je m'explique :
Madame doit faire une sauvegarde de sa clé USB 1 fois par semaine, elle devrait connecter sa clé afin d'en faire une copie sur la SME.
Elle ne connait pas le SSH ;)

Merci pour vos infos à venir !
« Last Edit: February 20, 2017, 08:02:52 AM by STRyk »

Offline Jean-Philippe Pialasse

  • *
  • 2,747
  • +11/-0
  • aka Unnilennium
    • http://smeserver.pialasse.com
Re: Clés ou Disques USB : montage automatique à l'insertion...
« Reply #3 on: February 20, 2017, 06:06:23 PM »
je dois mettre à jour la contrib smeserver-usbdisk qui ne fonctionne pas sur SME, je vais integrer cela dans le serveur manager.

Offline STRyk

  • ****
  • 190
  • +0/-0
Re: Clés ou Disques USB : montage automatique à l'insertion...
« Reply #4 on: February 21, 2017, 12:14:36 AM »
Bravo pour le travail !
Si tu as besoin de beta tester, n'hésite pas.
;)