GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ubuntu:¿activar una acción cuando se conecta un volumen específico?

Tengo una llave USB que contiene mi base de datos de contraseñas de keepass2 y me gustaría realizar algunas acciones cuando esté conectada a mi computadora, a saber:

  • Montarlo automáticamente en una ubicación específica
  • Cuando el montaje se realiza correctamente, iniciando keepass2 en el archivo de la base de datos de contraseñas

Supongo que son tareas sencillas, pero no encuentro cómo hacerlo.

Estoy usando Ubuntu 12.10 y monta automáticamente el dispositivo como una "llave USB de medios" e intenta abrir las imágenes en él (aunque no hay ninguna).

¿Cuál es la mejor manera de hacer eso y deshabilitar el montaje automático de ubuntu (para que no entre en conflicto)?

Respuesta aceptada:

Cuando aparece un nuevo dispositivo, se notifica a udev. Normalmente crea un archivo de dispositivo en /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"

El 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. Los ATTRS las reglas identifican el dispositivo; ejecute udevinfo -a -n /dev/sdz cuando la unidad está disponible como /dev/sdz para ver que atributos tiene. Tenga en cuenta que solo puede usar ATTRS reglas de una sola sección del udevinfo entrada (además, puede usar ATTR reglas del apartado inicial). Consulte Comprender la salida de `udevadm info -a -n /dev/sdb` para obtener más información. Esta regla va a un archivo llamado algo así como /etc/udev/rules.d/local-storage-keypass.rules .

Coloque los comandos que desea ejecutar en el script proporcionado en 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.


Ubuntu
  1. Cómo agregar un archivo de intercambio en Ubuntu

  2. ¿Cuándo no lo son los archivos ejecutables?

  3. ¿No hay sonido de inicio en Ubuntu 11.10?

  4. ¿Agregar volumen de intercambio?

  5. Cómo instalar g ++ en Ubuntu

Cómo deshabilitar automáticamente el panel táctil cuando el mouse está conectado a su sistema Ubuntu

Cómo instalar CouchPotato en Ubuntu

Cómo cambiar el nombre de los archivos en Ubuntu 20.04

Qué hacer cuando ve el error "El repositorio no tiene un archivo de versión" en Ubuntu

¿El dispositivo de salida de sonido seleccionado no persiste entre reinicios en Gnome-control-center?

¿Conectarse automáticamente a Vpn cuando se usa una red específica en Ubuntu Gnome 16.04?