web-dev-qa-db-fra.com

Autorun un script après avoir branché ou débranché un périphérique USB

Que puis-je faire pour exécuter automatiquement un script après avoir monté/plug-in ou démonté/débranché un périphérique USB?

22
Radu Rădeanu

Merci à MinimusHeximus et aux contributeurs respectifs du fil il a mentionné dans son commentaire à ma question similaire, je pense que je peux maintenant vous offrir la réponse suivante.

Vous aurez besoin de 5 (cinq) fichiers pour un tel périphérique USB, comme indiqué ci-dessous, en remplissant simplement les valeurs respectives <fortheseparts>:

/etc/udev/rules.d/00-usb-<yourdevice>.rules

ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"    
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"

/usr/local/bin/usb-<yourdevice>-in_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &

/usr/local/bin/usb-<yourdevice>-in

#!/bin/bash
sleep 1
<yourbashscriptcode>

/usr/local/bin/usb-<yourdevice>-out_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &

/usr/local/bin/usb-<yourdevice>-out

#!/bin/bash
sleep 1
<yourbashscriptcode>

Remarques:

  1. Vous pouvez capturer les valeurs <yourvendorid> et <yourproductid> en entrant la commande lsusbdans Terminal - lorsque votre périphérique USB est branché - qui répertoriera tous vos périphériques USB actuellement disponibles, comme Bus 003 Device 002: ID 8087:07da Intel Corp., où 8087 est le VendorID et 07da est l'ID de produit .
  2. Et <yourdevice> peut être n’importe quel nom arbitraire que vous pouvez choisir pour votre périphérique USB. Par exemple, j’ai choisi d’utiliser le nom générique " keyboard "lors de la création de tels fichiers pour mon clavier USB nécessitant l’application d’une disposition de clavier différente à chaque fois qu’il est branché.
  3. Dans certains scénarios, il peut ne pas être nécessaire d’utiliser la ligne ACTION=="remove" dans le fichier de règles udev, et donc les 2 (deux) fichiers "outname__" associés, lorsque vous n’avez rien à faire (par exemple, inverser une modification apportée lorsque l’appareil est branché) une fois l’appareil branché.
17
Sadi

Le gestionnaire de fichiers SpaceFM le permet. Voir Paramètres d’exécution automatique , par exemple Exécution automatique | Sur montage ou Exécution automatique | Démontage .

4
jpfleury