GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de reglas udev para ejecutar un script en la inserción USB

Yo tuve el mismo problema. Esto funcionó para mí:

Intenta copiar tu script en /usr/local/bin y cambia el directorio en tu .rules archivo.

Además, no sé qué es SYSFS, pero preferiría usar las propiedades ATTR.

La siguiente línea es el contenido de mi .rules archivo:

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/backup.sh"

notify-send requiere acceso a su bus de sesión DBus, que no puede tener por dos razones:

  • No hay información sobre la sesión. Cuando lo inicia udev, su script no sabe nada acerca de dónde ha iniciado sesión o si ha iniciado sesión en absoluto. El uso de varios puestos con X11 sigue siendo complicado, pero el cambio de usuario funciona tanto para X11 como para sesiones de consola. Mucha gente también usa SSH, VNC y NX a través de la red.

    (DISPLAY=:0 funcionaría la mitad del tiempo, pero eso sigue siendo adivinanzas en el mejor de los casos).

  • Denegado por la política de DBus. Incluso si su script de alguna manera encuentra su sesión X11, no podrá enviar notificaciones debido a que el script se ejecuta como root en lugar de su cuenta de usuario.


Linux
  1. Uso de una secuencia de comandos contenedora de Cron

  2. ¿Cómo activar un evento en el script de Shell cuando se quita un dispositivo USB?

  3. ¿Procesos en una sesión en un shell interactivo versus en un script?

  4. ¿Cómo ejecutar un script?

  5. Cómo ejecutar un script cuando se conectan o eliminan dispositivos USB mediante UDEV

Consejos para usar tmux

Cómo ejecutar un script de Python en PHP

Cómo ejecutar un script Bash

¿Script al inicio?

Ejecute el script bash después de iniciar sesión

Ejecute un script de shell como un usuario diferente