GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ubuntu:attivare un'azione quando è collegato un volume specifico?

Ho una chiave USB che contiene il mio database di password keepass2 e vorrei eseguire alcune azioni quando è collegata al mio computer, vale a dire:

  • Montalo automaticamente in una posizione specifica
  • Quando il montaggio è stato eseguito correttamente, avviare keepass2 sul file del database delle password

Compiti semplici immagino, ma non riesco a trovare come farlo.

Sto usando Ubuntu 12.10 e monta automaticamente il dispositivo come una "chiave USB multimediale" e prova ad aprire le immagini su di esso (anche se non ce ne sono).

Qual è il modo migliore per farlo e disabilitare il montaggio automatico di Ubuntu (in modo che non sia in conflitto)?

Risposta accettata:

Quando viene visualizzato un nuovo dispositivo, udev viene avvisato. Normalmente crea un file dispositivo sotto /dev sulla base di regole integrate¹. È possibile ignorare queste regole per modificare la posizione del file del dispositivo o eseguire un programma arbitrario. Ecco un esempio di questa regola udev:

KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"

Il NAME= la direttiva cambia la posizione del file del dispositivo, l'ho incluso a scopo illustrativo ma probabilmente non è utile per il tuo caso d'uso. Il ATTRS le regole identificano il dispositivo; esegui udevinfo -a -n /dev/sdz quando l'unità è disponibile come /dev/sdz per vedere quali attributi ha. Fai attenzione che puoi usare solo ATTRS regole da una singola sezione di udevinfo input (inoltre, puoi usare ATTR regole della sezione iniziale). Vedere Comprendere l'output di `udevadm info -a -n /dev/sdb` per ulteriori informazioni. Questa regola va in un file chiamato qualcosa come /etc/udev/rules.d/local-storage-keypass.rules .

Inserisci i comandi che desideri eseguire nello script fornito in RUN direttiva. Qualcosa come:

#!/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' &

Se riscontri problemi con l'esecuzione di un programma GUI da uno script attivato da udev, consulta Posso avviare un programma grafico sul desktop di un altro utente come root?

¹ Non sui sistemi moderni dove /dev è su udevtmpfs.


Ubuntu
  1. Come aggiungere un file di scambio su Ubuntu

  2. Quando i file eseguibili non lo sono?

  3. Nessun suono di avvio in Ubuntu 11.10?

  4. Come aggiornare Ubuntu quando non è connesso a Internet?

  5. Come installare g++ su Ubuntu

Come disabilitare automaticamente il touchpad quando il mouse è collegato al tuo sistema Ubuntu

Come installare CouchPotato su Ubuntu

Come rinominare i file in Ubuntu 20.04

Cosa fare quando vedi "Il repository non ha un file di rilascio" Errore in Ubuntu

Il dispositivo di uscita audio selezionato non persiste tra i riavvii in Gnome-control-center?

Connettiti automaticamente a VPN quando usi una rete specifica in Ubuntu Gnome 16.04?