keepass2パスワードデータベースを含むUSBキーがあり、それがコンピューターに接続されたときにいくつかのアクションを実行したいのですが、次のとおりです。
- 特定の場所に自動マウントします
- マウントが適切に行われたら、パスワードデータベースファイルでkeepass2を起動します
簡単な作業だと思いますが、その方法がわかりません。
Ubuntu 12.10を使用していますが、デバイスが「メディアUSBキー」として自動マウントされ、イメージを開こうとします(イメージがない場合でも)。
それを行い、ubuntuの自動マウントを無効にする(競合しないようにする)ための最良の方法は何ですか?
承認された回答:
新しいデバイスが表示されると、udevに通知されます。通常、/dev
の下にデバイスファイルを作成します 組み込みのルールに基づく¹。これらのルールを上書きして、デバイスファイルの場所を変更したり、任意のプログラムを実行したりできます。このようなudevルールのサンプルを次に示します。
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=
ディレクティブはデバイスファイルの場所を変更します。説明のために含めましたが、ユースケースにはおそらく役立ちません。 ATTRS
ルールはデバイスを識別します。 udevinfo -a -n /dev/sdz
を実行します ドライブが/dev/sdz
として利用可能な場合 それがどのような属性を持っているかを確認します。 ATTRS
のみを使用できることに注意してください udevinfo
の単一セクションからのルール 入力(さらに、ATTR
を使用できます 最初のセクションからのルール)。詳細については、 `udevadm info -a -n / dev/sdb`の出力を理解するを参照してください。このルールは、/etc/udev/rules.d/local-storage-keypass.rules
のようなファイルに入ります。 。
実行したいコマンドをRUN
で指定されたスクリプトに入れます 指令。次のようなもの:
#!/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' &
udevからトリガーされたスクリプトからGUIプログラムを実行する際に問題が発生した場合は、「rootとして別のユーザーのデスクトップでグラフィカルプログラムを起動できますか?」を参照してください。
¹/dev
が存在する最新のシステムではありません udevtmpfsにあります。