GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come eseguire il programma C++ ogni volta che viene inserita un'unità flash USB?

Ho un programma C++ che accede a pen drive USB/unità flash. Funziona con l'unità flash attualmente inserita. Un normale programma C++ non viene eseguito finché non lo eseguiamo. Ma volevo che il programma venisse eseguito automaticamente ogni volta che viene inserita un'unità flash. Come posso farlo?

Risposta accettata:

Per uso generale, se desideri eseguire il tuo programma per qualsiasi memoria USB. Usa il driver per la corrispondenza delle regole.

  1. Aggiungi un udev file delle regole

    sudo nano /etc/udev/rules.d/90-detect-storage.rules
    
  2. Aggiungi questa regola

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

    Se vuoi che il tuo programma distingua i dischi, in modo che esegua diverse operazioni, usa (puoi passare il suo numero di serie o qualsiasi attributo che ti piace):

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
    
  3. Ricarica tutte le regole

    sudo udevadm control --reload-rules
    
  4. Scollega e ricollega l'unità flash

Note:

  • Ho usato questa regola solo per testare quale crea un registro quando la regola viene attivata:

    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'"
    
  • Puoi commentare le regole che non desideri aggiungendo # all'inizio della riga. Il file delle regole può contenere più regole.

  • Per controllare tutti gli env disponibili variabili, utilizzare:

    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'"
    
  • Per verificare i parametri da utilizzare per la corrispondenza delle regole, esegui:

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

Riferimenti:

  • Passa ATTR{idVendor} come argomento nello script udev
  • Scrivere regole udev di Daniel Drake

Ubuntu
  1. Come crittografare l'unità USB su Ubuntu 18.04 LTS

  2. Come copiare automaticamente il contenuto di un'unità USB (flash) in un'altra directory?

  3. Non riesci a rendere avviabile USB su Mac?

  4. Come montare un'unità flash USB in Linux

  5. Come creare un Memtest86+ avviabile su un'unità flash USB?

Come creare un'unità USB avviabile Ubuntu 22.04 su Windows

Come mostrare la notifica quando viene inserito un dispositivo USB?

Come creare facilmente un CD su un'unità flash da Cli?

Come crittografare un'unità flash USB in Ubuntu – Crittografia LUKS con cryptsetup

Come trasferire file da Ubuntu a Ipad Air 4 con chiavetta USB

Come creare un'unità flash USB avviabile da Linux [Tutorial]