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.