新しいUSBストレージデバイスが検出されたときにシェルスクリプトを実行する方法


17

ログをダンプし、USB大容量ストレージがプラグインされるとすぐにログを開始するスクリプトが必要です(ファイル 'OKdump'を使用)。スクリーンショットを撮って同じドライブに保存します。

回答:


13

Udevを使用します。Udevはデバイスマネージャーデーモンです。とりわけ、デバイスの命名を担当します。rulesディレクトリに特定の構文のファイルを配置することにより、udev-rulesを定義できます。ルールは多くのことを実行できます-特に、特定のデバイスが接続されたときにスクリプトを実行できます。

問題を解決する方法:

まず、デバイスの情報を収集する必要があります。あなたがそれを接続し、名前の下にあると知っているとしましょう/dev/sdb1。実行する場合:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)

このコマンドは、デバイスに関する情報を出力します。かなり長いです。デバイスを一意に識別するものを見つける必要があります。それはのようなシリアルかもしれないATTRS{serial}=="UA04FLGC"かのような他の属性の組み合わせATTRS{idVendor}と、ATTRS{idProduct}。ほとんどの名前は多かれ少なかれ自明です。合理的と思われる1つまたはいくつかの組み合わせを選択します。それらが機能しない場合は、別のものを試してください。

一意の識別子が見つかったら/etc/udev/rules.d、2桁で始まりで終わるファイルを作成します.rules。2桁は、これらの.rulesファイルを処理する順序を指定します- 70-usb-log-custom.rulesあなたにとって最適な選択です。このルールファイルの構文は非常に複雑になる場合があります。興味があれば、udevをグーグルで検索してください。新しく作成したファイルを開いて、次のように編集するだけではない場合:

# /etc/udev/rules.d/70-usb-log-custom.rules

KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"

これは私が使用している実際のudevファイルです。3つのルールがあります。すべての行は独自のルールです。最初の行は、暗号化されたディスクが接続されるたびに、復号化されたデバイスを作成するスクリプトを実行します。2行目は、復号化されたデバイスが削除された場合に、異なるオプションで同じスクリプトを呼び出します。3行目は、別の関連デバイスのアクセス許可を設定します。

ほとんどの場合、最初の行のみが必要です。残りを削除し、正しいシリアル(またはデバイスを識別するために選択したパラメーターの組み合わせ)を挿入します。

私のファイルの説明:

KERNEL=="sd?1"このルールで探しているデバイスは、のラインに沿って名前が付けられている/dev/sda1/dev/sdc1またはそのようなものです。疑問符は、任意の文字のワイルドカードです。ATTRS{serial}=="UA04FLGC"ここで一意の識別子です。私が話していた他の装置(第3行)のために私はシリアル番号が、の組み合わせを使用していないSYSFS{idVendor}=="1781"SYSFS{idProduct}=="0c9f"て識別しています。

ACTION=="add"デバイスが追加されたときにのみ動作するようにルールに指示します。削除されたときではありません。

SYMLINK+="cusb1"は、ディスクへのシンボリックリンクを作成します/dev/cusb1

RUN+="/home/confus/bin/usb-encrypt.sh add %k" スクリプトを実行し、「add」と「%k」(デバイス名)を渡します。

udevルールに関する優れたチュートリアルがあるので、これ以上詳しくは説明しません。あなたがここで読んだものは、しかし凝視するのに十分なはずです。


優れた答えですが、今はログを記録するスクリプトが必要です
Amith KK

4
次に、あなたはそれを書くか、それがあなたがまさに望んでいるものについてより具体的にしなければなりません。例えば、スクリーンショットがあなたに何を伝えるかわかりません。また、「システムログをダンプ」する場所 「異常なもの」もかなり広い用語です。私たちはあなたの個人的な軍隊ではありません。bashスクリプトについて1つまたは2つのことを知っていれば、自分でスクリプトを作成するために必要なすべてのツールが手に入ります。
CON-F-使用

:Dごめんなさい@ con-f-use
アミスKK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.