Come dire in Linux quando vengono trovati nuovi dispositivi USB?


0

C'è un modo per dire quando è stato trovato un cambiamento nell'hardware in Linux oltre a eseguire ripetutamente il polling per tutto l'hardware e verificare eventuali cambiamenti?

Ad esempio, ho scritto uno script per montare la memoria del mio telefono e eseguire il backup di tutte le nuove foto che ho scattato. Vorrei che lo script venisse eseguito automaticamente quando collego il mio telefono alla porta USB.

C'è un modo in cui posso fare in modo che il mio SO (debian jessie) mi dica quando si verifica una modifica dell'hardware?

Risposte:


3

Ecco un modo per eseguire uno script bash al rilevamento di un'unità USB.

Collega il dispositivo ed esegui lsusbper recuperare le informazioni sul dispositivo. Dovresti vedere qualcosa di simile a questo:

$ lsusb
Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC

In questo caso, l'ID fornitore del dispositivo è 0bc2e l'ID prodotto è 2100.
Ora puoi creare una UDEVregola.

$sudo vi /etc/udev/rules.d/85-my_usb_device_rule.rules

E aggiungi questo:

ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0bc2", SYSFS{idProduct}=="2100", RUN+="/home/myhome/my_script"

/home/myhome/my_script è il percorso della tua sceneggiatura che farebbe qualunque cosa tu voglia.

Per assicurarsi che lo script di rilevamento venga eseguito immediatamente, ricaricare le UDEVregole:

$sudo udevadm control --reload-rules

Due domande, c'è un modo per distinguere due dispositivi che hanno lo stesso fornitore e ID prodotto? Ad esempio due chiavette USB della stessa azienda. Inoltre, perché il file .rules è preceduto da un 85-?
null Utente

@nullUser Questa è una buona domanda. Non ho provato la situazione con due degli stessi dispositivi, quindi non ho una risposta per te. Per quanto riguarda il numero della regola, no, non deve essere 85.
slybloty,

0

Ogni "file system" ha un UUID disponibile. Alcuni hanno anche una "etichetta". (Leggi "man mount") Dopo aver collegato l'unità USB, lo script viene eseguito. Lo script potrebbe quindi richiedere l'UUID o l'etichetta del file system appena connesso. Armato di quell'identificatore, abbinalo allo script di lavoro reale da eseguire per quell'unità. Suggerirei una tabella {IDENT} {COMMAND} {COMMENT} in modo che tu debba solo modificare per aggiungere nuove unità all'elaborazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.