Cuando aparece un nuevo dispositivo, se notifica a udev . Normalmente crea un archivo de dispositivo /dev
basado en reglas integradas¹. Puede anular estas reglas para cambiar la ubicación del archivo del dispositivo o ejecutar un programa arbitrario. Aquí hay una muestra de dicha regla udev:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
La NAME=
directiva cambia la ubicación del archivo del dispositivo, lo incluí con fines ilustrativos, pero probablemente no sea útil para su caso de uso. Las ATTRS
reglas identifican el dispositivo; ejecutar udevinfo -a -n /dev/sdz
cuando la unidad está disponible /dev/sdz
para ver qué atributos tiene. Tenga en cuenta que solo puede usar ATTRS
reglas de una sola sección de la udevinfo
entrada (además, puede usar ATTR
reglas de la sección inicial). Consulte Comprender la salida de `udevadm info -a -n / dev / sdb` para obtener más información. Esta regla entra en un archivo llamado algo así /etc/udev/rules.d/local-storage-keypass.rules
.
Ponga los comandos que desea ejecutar en el script dado en la RUN
directiva. 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' &
Si tiene problemas para ejecutar un programa GUI desde un script activado desde udev, consulte ¿Puedo iniciar un programa gráfico en el escritorio de otro usuario como root?
¹ No en sistemas modernos donde /dev
está en udevtmpfs.
udevadm info -a -n /dev/sdX
, no puede coincidir en función de varios antepasados. Solo puede coincidir en función de los datos del propio dispositivo y un solo antepasado. Esto está cubiertoman 7 udev
, pero es un pequeño comentario que fácilmente se pasa por alto.