Executando o script quando detecta E / S

3

Eu tenho o script de configuração xinput do mouse bluetooth para ser executado sempre que eu conectar o mouse. Atualmente eu sou simplesmente alias a tecla curta como 'bm' para a execução do arquivo bash, mas eu quero saber se existe uma maneira automática de executar o arquivo bash ou o comando alias sempre que ele detecta a conexão do mouse.

Agradeço antecipadamente!

ubuntu 16.10

    
por user3869196 02.11.2016 / 13:40

2 respostas

0

Eu usaria um arquivo .

Primeiro, descubra o ID_VENDOR_ID e o ID_MODEL_ID do seu mouse. Desconecte o mouse, execute este comando e conecte o mouse (a parte |grep ID é apenas para filtrar informações que você não precisa).

udevadm monitor --property|grep ID

Digamos que você receba estes valores:

ID_VENDOR_ID=0a12
ID_MODEL_ID=0001

Agora crie um arquivo na pasta de regras (96 é a prioridade da regra):

sudo gedit /etc/udev/rules.d/96-myusb.rules

Adicione essas duas linhas usando seus valores para ID_VENDOR_ID e ID_MODEL_ID . Se você não quiser fazer nada ao removê-lo, não inclua a segunda linha.

ACTION=="add", SUBSYSTEM=="usb",ENV{ID_VENDOR_ID}=="0a12", ENV{ID_MODEL_ID}=="0001",RUN+="/usr/local/bin/myusb-add.sh"

ACTION=="remove", SUBSYSTEM=="usb",ENV{ID_VENDOR_ID}=="0a12",ENV{ID_MODEL_ID}=="0001",RUN+="/usr/local/bin/myusb-remove.sh"

Você pode testar se funciona criando os dois scripts:

$ sudo gedit /usr/local/bin/myusb-add.sh

Adicione algo assim (altere add para remove no outro):

#!/bin/bash
echo "added" >> /tmp/myusb.log

Por fim, siga o arquivo com tail -f /tmp/myusb.log e conecte / desconecte o mouse. Você deve ver que o texto é adicionado ao arquivo.

    
por Katu 02.11.2016 / 15:47
2

O que você quer é usar a abordagem de pesquisa, ler continuamente a saída de xinput --list --name-only e descobrir se o nome do seu mouse está lá ou não, e se estiver - execute o script. Isso seria algo assim:

while true; do
    if xinput --list --name-only | grep -q -i 'Mouse Name' ; 
    then 
        echo "yes" # this is where you run script
        break # exit the loop after running the script.   
    fi 
done

Nesse caso, saímos do loop assim que o mouse está lá. No entanto, você provavelmente quer que isso seja contínuo para que você possa conectar e desconectar o mouse. Em vez de break , usaria outro loop while , que faz o oposto - espera que o nome do mouse desapareça. O corpo desse loop while pode ser apenas isso - true ou : .

    
por Sergiy Kolodyazhnyy 02.11.2016 / 13:55