Quando um novo dispositivo aparece, o udev é notificado. Normalmente cria um arquivo de dispositivo em /dev
com base nas regras internas¹. Você pode substituir essas regras para alterar o local do arquivo do dispositivo ou executar um programa arbitrário. Aqui está uma amostra da regra do udev:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
A diretiva NAME=
altera o local do arquivo do dispositivo, incluí-lo para fins de ilustração, mas provavelmente não é útil para seu caso de uso. As regras ATTRS
identificam o dispositivo; execute udevinfo -a -n /dev/sdz
quando a unidade estiver disponível como /dev/sdz
para ver quais atributos ela possui. Tenha em atenção que só pode utilizar ATTRS
regras de uma única secção da udevinfo
input (além disso, pode utilizar ATTR
rules da secção inicial). Consulte Entenda a saída de 'udevadm info -a -n / dev / sdb ' para mais informações. Esta regra entra em um arquivo chamado algo como /etc/udev/rules.d/local-storage-keypass.rules
.
Coloque os comandos que você deseja executar no script fornecido na diretiva RUN
. Algo como:
#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
[ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &
Se você estiver com problemas para executar um programa GUI a partir de um script acionado pelo udev, consulte Posso iniciar um programa gráfico na área de trabalho de outro usuário como root?
¹ Não em sistemas modernos em que /dev
está em udevtmpfs.