Quero executar um script quando conectar um dispositivo na minha máquina Linux. Por exemplo, execute xinput
no mouse ou em um backupscript em uma determinada unidade.
Eu já vi muitos artigos sobre isso, mais recentemente aqui e aqui . Mas eu simplesmente não consigo fazê-lo funcionar.
Aqui estão alguns exemplos simples tentando obter pelo menos algum tipo de resposta.
/etc/udev/rules.d/test.rules
#KERNEL=="sd*", ATTRS{vendor}=="*", ATTRS{model}=="*", ATTRS{serial}=="*", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=="add", "SUBSYSTEM=="usb", ATTRS{model}=="My Book 1140 ", ATTRS{serial}=="0841752394756103457194857249", RUN+="/usr/local/bin/test.sh"
#ACTION=="add", "SUBSYSTEM=="usb", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=={add}, RUN+="/usr/local/bin/test.sh"
KERNEL=="sd*", RUN+="/usr/local/bin/test.sh"
KERNEL=="*", RUN+="/usr/local/bin/test.sh"
/usr/local/bin/test.sh
#!/usr/bin/env bash
echo touched >> /var/log/test.log
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
echo ${DEVICE} >> /var/log/test.log
fi
A pasta de regras é monitorada inotify
e deve estar ativa imediatamente. Eu continuo recarregando meu teclado, mouse, tablet, cartão de memória e drive USB, mas nada. Nenhum arquivo de log foi tocado.
Agora, qual seria a maneira mais simples de pelo menos saber que algo está funcionando? É mais fácil trabalhar com algo que está funcionando do que com algo que não está.
3.5.0-23-generic
.
udevadm trigger
ou conectou um dispositivo para aplicar a nova regra?