Como posso acionar um evento no shell script quando um dispositivo USB é removido?

4

Eu preciso fazer algumas ações quando um dispositivo USB específico for removido / adicionado. Eu preciso de uma resposta rápida na ordem de milissegundos.

Como posso fazer isso em um script de shell?

    
por Eduard Florinescu 06.01.2014 / 17:00

2 respostas

9

Supondo que você esteja usando uma distribuição do Linux com suporte ao udev e tenha acesso root / administrador a ele, use as regras do udev para acionar em operações específicas.

Se o exemplo a seguir for adicionado a um /etc/udev/rules.d/example.rules , ele executará o script especificado quando um dispositivo de bloco for adicionado aos parâmetros especificados.

ACTION=="add", SUBSYSTEM=="block", ATTRS{manufacturer}=="HitachiGST", ATTRS{serial}=="31001206110000000000", RUN+="/a/script/to/run.sh"

Essa regra específica é executada quando meu disco rígido USB é inserido e anexado ao sistema de blocos. É muito fácil ajustar as regras para corresponder a um evento USB de nível baixo específico.

Eu encontrei a página wiki Debian UDEV e Escrevendo as Regras do Udev para ser muito útil para obter as regras corretas para a minha situação.

    
por 06.01.2014 / 18:03
2

Como resposta inicial, você pode ouvir alterações no arquivo /proc/bus/input/devices e verificar USB entries . Com isso, você pode evitar o polling do dispositivo. Ou você pode realizar uma pesquisa de loop quando o dispositivo é inserido.

Provavelmente, o script de shell não será tão rápido quanto você deseja. Seria melhor usar outra linguagem de script Python ou C/C++ .

link link

    
por 06.01.2014 / 17:35