GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo ejecutar el programa C++ cada vez que se inserta una unidad flash USB?

Tengo un programa C++ que accede a pen drives/flash drives USB. Funciona para la unidad flash actualmente insertada. Un programa C++ normal no se ejecuta hasta que lo ejecutamos. Pero quería que el programa se ejecutara automáticamente cada vez que se inserta una unidad flash. ¿Cómo puedo hacer eso?

Respuesta aceptada:

Para uso general, si desea ejecutar su programa para cualquier almacenamiento USB. Utilice el controlador para la coincidencia de reglas.

  1. Agregar un udev archivo de reglas

    sudo nano /etc/udev/rules.d/90-detect-storage.rules
    
  2. Añadir esta regla

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
    

    Si desea que su programa distinga los discos, para que ejecute diferentes operaciones, use (puede pasar su número de serie o cualquier atributo que desee):

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
    
  3. Recargar todas las reglas

    sudo udevadm control --reload-rules
    
  4. Desconecte y vuelva a conectar la unidad flash

Notas:

  • Usé esta regla solo para probar cuál crea un registro cuando se activa la regla:

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
    
  • Puede comentar las reglas que no desea agregando # al comienzo de la línea. El archivo de reglas puede contener varias reglas.

  • Para comprobar todos los env disponibles variables, utilice:

    ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
    
  • Para comprobar los parámetros que se utilizarán para la coincidencia de reglas, ejecute:

    sudo udevadm info --name=/dev/sdb1 --attribute-walk
    

Referencias:

  • Pase ATTR{idVendor} como argumento en el script udev
  • Escribiendo las reglas de udev por Daniel Drake

Ubuntu
  1. Cómo cifrar una unidad USB en Ubuntu 18.04 LTS

  2. ¿Cómo copiar automáticamente el contenido de una unidad USB (flash) a otro directorio?

  3. ¿No se puede hacer un USB de arranque en Mac?

  4. Cómo montar una unidad flash USB en Linux

  5. ¿Cómo crear un Memtest86+ de arranque en una unidad flash USB?

Cómo crear una unidad USB de arranque Ubuntu 22.04 en Windows

¿Cómo mostrar una notificación cuando se inserta un dispositivo USB?

¿Cómo hacer CD fácilmente en una unidad flash desde CLI?

Cómo cifrar una unidad flash USB en Ubuntu:cifrado LUKS con cryptsetup

Cómo transferir archivos de Ubuntu a Ipad Air 4 con una unidad flash USB

Cómo crear una unidad flash USB de arranque de Linux [Tutorial]