Bem, depois de muitas horas pesquisando e perguntando em fóruns, eu comecei a trabalhar (parece). Qualquer pessoa que queira obter uma notificação visual e / ou de áudio agradável quando algum dispositivo USB estiver conectado / desconectado pode instalar meu script, consulte os detalhes da instalação abaixo.
Primeiro de tudo, respostas sobre minhas próprias perguntas.
1. Como obter o título real do dispositivo anexado, o mesmo que posso ver em lsusb
output?
Não há tais títulos no kernel (no caso comum). Existe um arquivo de banco de dados com títulos para muitos pares vendor_id:product_id
, geralmente é /usr/share/hwdata/usb.ids
file. Este banco de dados pode ser atualizado por /usr/sbin/update-usbids.sh
. Obrigado ao pessoal do linux.org.ru para essa informação.
Eu não sei se existe alguma ferramenta especial para obter o título do dispositivo pelo par vendor_id:product_id
, então eu tive que hackear um pouco com lsusb
e grep
: por exemplo, lsusb | grep '0458:003a'
2. Atualmente, muitas notificações são ativadas. Digamos, quando eu conecto meu pendrive, recebi cerca de 15 notificações!
Devo admitir que não descobri como escrever regras para isso, mas encontrei outra maneira de filtrá-lo.
udev
nos permite usar algumas substituições para RUN+="..."
: digamos, podemos obter o número do barramento e o número do dispositivo em $attr{busnum}
e $attr{devnum}
, respectivamente. Em primeiro lugar, no meu script eu armazeno a lista de dispositivos conectados no arquivo especial, para que se o script tiver um novo evento "plug" e o busnum e devnum do dispositivo já estiverem armazenados em nosso arquivo, a notificação não será gerada. E, em segundo lugar, essas substituições $attr{busnum}
e $attr{devnum}
estão geralmente disponíveis apenas para um dos dispositivos da "série" de eventos. Mas, de qualquer forma, o algoritmo explicado deve resolvê-lo em qualquer caso.
Página do projeto atual: my-udev-notify .
Parece assim:
Detalhesdainstalação.
TestadonoLinuxMint13,acreditoquefuncionenoUbuntueemoutrosderivadosdoUbuntu,eesperoquefuncioneemqualquersistema*nixcomudev
.
- Acessea
página do projeto , obtenha fontes de lá e coloque-as em algum lugar. Há apenas um script principal: my-udev-notify.sh
, mas o arquivo também contém sons para plug / desconectar notificações, além de mais algumas informações, consultereadme.txt
para obter detalhes. - Crie o arquivo
/etc/udev/rules.d/my-udev-notify.rules
com o seguinte conteúdo: (não se esqueça de modificar o caminho para o caminho real no qual você descompactoumy-udev-notify.sh
!)
ACTION=="add", RUN+="/bin/bash /path/to/my-udev-notify.sh -a add -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'"
ACTION=="remove", RUN+="/bin/bash /path/to/my-udev-notify.sh -a remove -p '%p' -b '$attr{busnum}' -d '$attr{devnum}'"
Depois disso, ele deve funcionar para dispositivos recém-conectados. Isto é, se você desconectar algum dispositivo, você não receberá uma notificação. Mas quando você liga de volta, você vai. (sim, para mim funciona sem reiniciar o udev. Se não for para você, tente reinicializando)
Para que funcione para todos os dispositivos, basta reiniciar o sistema. NOTA que pode haver
muitas notificações durante a primeira inicialização (consulte os problemas conhecidos no readme.txt
). Na segunda
inicialização, não haverá notificações (a menos que você conecte um novo dispositivo
o sistema está desligado)
Você pode personalizá-lo (ativar / desativar notificações visuais e sonoras ou alterar sons), verifique o arquivo readme.txt no arquivo para obter detalhes.