Keepass2パスワードデータベースを含むUSBキーがあり、コンピューターに接続されたときにいくつかのアクションを実行したいと思います。
簡単な作業だと思いますが、その方法がわかりません。
私はUbuntu12.10を使用していますが、デバイスを「メディアUSBキー」として自動マウントし、イメージを開こうとします(イメージがない場合でも)。
それを行い、ubuntuの自動マウントを無効にする(競合しないようにする)ための最良の方法は何ですか?
新しいデバイスが表示されると、 dev が通知されます。通常、組み込みのルール¹に基づいて/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にある最新のシステムではありません。
これを行う最良の方法は、このデバイス用に独自のudevルールを作成することです。残念ながら、これを行う方法についてのヒントを提供することはできません。したがって、他の誰かがより詳細な答えを持っていない限り、「udevルール」をグーグルで検索し、/ lib/udevで例を探してください。カスタムudevルールは/etc/udev/rules.dに配置する必要があります