2009-10-05 4 views
5

フラッシュドライブが接続されているときは、どのように検出できますか?私はGUIを使わずにDebianのインストールをしていますが、新しいフラッシュドライブが現れたときにPythonスクリプトに通知したいのですが... D-BUSはそのような情報を配布していますが、D-BUSは使いたくありません。その情報へのより裸のアクセスがありますか?/procや/ sysの下では使えないはずですか?そのソースにどのように「接続」できますか?Linuxでフラッシュドライブが接続されていることを検出するにはどうすればよいですか?

さようなら ファルスタッフ

答えて

6

あなたはNetlinkソケット経由uevents from kernelを読み、"ACTION""add"(デバイスからパーティションをマウントまたはアンマウント、またはデバイスが削除されている場合された場合にも見ることができる)であるイベントを探すことができます。これは、ユーザ空間に入るイベントのソースに近いものです。私の知る限りでは、これはudevが挿入されたリムーバブルメディアを検出する方法です。

おそらくusing D-Bus/HAL API via Python bingingsはもっと簡単になります(データ解析などはありません)。なぜあなたはこれに反対しているのか分かりません。あなたはPythonを使用しているので、私はリソースが本当に問題ではないと考えています。

+0

ありがとう!私はあなたやPeterMmmのアプローチを試しています。私はudevを使うつもりかどうかはまだ分かりません...私はpythonを使って、マシン上のプロトタイプをプログラマーにします。これはリソースの問題はありませんが、そのD-Bus/HALのすべてのものをインストールしたい... – falstaff

0

の/ proc /パーティションは、カーネルに知られているすべてのパーティションを示しています。

+0

はい、どのように挿入イベントを検出するのに役立ちますか?特に、すべてのLinuxディストリビューションがデフォルトで自動マウントされるわけではありません。 – sleske

+0

マウントされていないパーティションも/ proc/partitionsに表示されます。ファイルをポーリングできます。しかし、falstaffが2.4シリーズカーネルを使用していない限り、udevがそこにあるので、Peterの答え(udev)はおそらくもっと良いでしょう。 – Kimvais

+0

それは本当です、それを考えなかったのです。 udevはまだまだ良い解決策ですが、ポーリングを行う必要がある場合は、うまくいくはずです。 – sleske

9

すべての市長Linuxディストリビューションにはudevが含まれており、ハードウェアイベントにカスタムスクリプトを書き込むことができます。

1

USBデバイスが接続されていると、syslogはこれに関するメッセージを/ var/log/messagesに書き込みます。 "dmesg"コマンドはこのログを表示します。ログの終わり付近で、デバイスが接続されているチャネルを確認できます。システムに接続されているパーティションとシリアルディスクの数によって、通常は/ dev/sd(文字)(数字)になります。

+0

しかしこれがうまくいくためにはdmesgをポーリングする必要があります。これは非常に醜い(ポーリングはパフォーマンスを損ない、電源管理を妨害します)。 – sleske

+0

私はそれを/ dev/sd **に付けることに言及しています** ...とにかく、とにかく多くのポーリングが続けられます。前の1つはポーリングについても言及しています。 – whatnick

+0

@whatnick:はい、その理由を最初に打ち明けました: - /。 – sleske

4

埋め込みデバイスをターゲティングする場合は、udevではなくmdevを実行できます。 次に、非常に単純なmdevルールを記述して、スクリプトをトリガすることができます。

もちろん、あなたのスクリプトから直接監視しているわけではありませんが、mdevはそれをやっていますが、どのコマンドでも起動できます。あなたはおそらくudevで同じことをすることができますが、それはいつも私にとってかなり複雑に見えました。

+2

埋め込みターゲットを取得するための+1。 – whatnick

0

私はこの使用してRHEL6上のルールとスクリプトとudevでzenityを使うなかった:=

KERNEL == "SD [BD]"、DRIVERS == "USB"、ACTION == "追加"、RUNの+を"/ path/to/script"

関連する問題