Você pode fazer isso com algumas regras do udev, como sugerido pelo @Rinzwind.
Primeiro, salve seu script em algum lugar acessível por outros usuários. Por exemplo, você poderia salvá-lo como /usr/local/bin/script.sh
.
Agora, torne o script acessível para os outros.
sudo chmod 555 /usr/local/bin/script.sh
Agora, conecte seu modem USB e execute lsusb
. Abaixo está um exemplo de saída:
$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. Mini stick Suunto
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Encontre a linha com o nome do seu modem no final. Agora, encontre a parte perto do meio no formato ID XXXX:####
. As porções XXXX
e ####
serão, a ID do fornecedor e ID do dispositivo , respectivamente.
Neste exemplo da terceira linha, que mostra … ID 0fcf:1008 Dynastream …
, o ID do fornecedor é 0fcf
e o ID do dispositivo é 1008
. Seu dispositivo terá valores diferentes para esses IDs.
Agora, usaremos esses IDs para criar uma regra para o udev.
Agora, crie uma regra para este dispositivo com o udev.
Crie um arquivo de regras com
sudo nano /etc/udev/rules.d/90-local.rules
Adicione a seguinte linha:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"
Substitua XXXX
pelo ID do fornecedor de antes e substitua ####
pelo ID do produto de antes.
Agora, force o udev a recarregar suas regras (alternativamente, você poderia pular esta etapa e reinicializar)
udevadm control --reload-rules
sudo service udev restart
E pronto!
Fontes: Questão semelhante sobre SU referente às regras do udev , Criando regras do udev