Autorun um script depois de ter ligado ou desconectado um dispositivo USB

20

O que posso fazer para executar automaticamente um script depois de montar / plug-in ou desmontar / desconectar um dispositivo USB?

    
por Radu Rădeanu 22.04.2013 / 17:15

2 respostas

16

Graças a MinimusHeximus e os respectivos contribuidores para o thread ele mencionou em seu comentário à minha pergunta semelhante, eu acho Agora posso lhe oferecer a seguinte resposta.

Você precisará de 5 (cinco) arquivos para um dispositivo USB como este, basta preencher os respectivos valores <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>

Notas:

  1. Você pode capturar os valores <yourvendorid> e <yourproductid> digitando o comando lsusb no Terminal - quando o dispositivo USB estiver conectado -, que listará todos os seus dispositivos USB disponíveis no momento, como Bus 003 Device 002: ID 8087:07da Intel Corp. , onde 8087 é o VendorID e 07da é o ProductID .
  2. E <yourdevice> pode ser qualquer nome arbitrário que você possa escolher para o seu dispositivo USB; por exemplo, optei por usar o nome genérico " teclado " ao criar arquivos para o meu teclado USB que exigiam a aplicação de um layout de teclado diferente sempre que ele estivesse conectado.
  3. Em alguns cenários, pode não ser necessário usar a linha ACTION=="remove" no arquivo de regras do udev e, portanto, os 2 (dois) arquivos " out " associados, quando você não precisa fazer nada ( por exemplo, reverter uma alteração feita quando o dispositivo está conectado) após o dispositivo ser conectado.
por Sadi 20.09.2013 / 15:58
3

O gerenciador de arquivos SpaceFM permite isso. Veja as configurações do Execução automática , por exemplo, Auto Executar | On Mount ou Execução Automática | Na desmontagem .

    
por jpfleury 15.05.2013 / 18:06