USBデバイスの接続でスクリプトを実行する


12

これは別の質問なので、重複としてマークしないでください!

ペンドライブがシステムに接続されるたびにスクリプトを実行しようとしています。私はこれこの質問に従ったそしてそれは働いていますが、まだいくつかの問題があります。

これは私のudevルールファイルです:

ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"

これは私のスクリプトです:

#!/ bin / bash

env> /tmp/env.out
cp -r / media / * device-name * / *〜/ test /

2つの質問があります。

ファイルので、私のUSBデバイススクリプトの1.Whenver Iプラグが実行されenv.outがで生成された/ tmpのが、USBデバイスからのデータは、テストディレクトリにコピーされていない、私は手動でスクリプトを実行するならば、それがうまく動作します!なぜ??

2. IDを知らなくても接続されているUSBデバイスで動作するように、ルールファイルをより一般的にするにはどうすればよいですか?

この背後にある私の考えは、接続されたUSBデバイスからすべてのデータをコンピューターに自動的にコピーすることです。

高度に感謝します!


あなたはこれをやろうとしているだけではありませんか?askubuntu.com/questions/474/…– virtualxtc 14
1

@virtualxtcこの提案をありがとう!しかし、このアプローチの何が問題なのか知りたいですか?
ヌルポインター14年

スクリプトの何が問題なのか教えてください。なぜ機能しないのですか?
ヌルポインター14年

また、ちょっと頭に浮かぶ-このような特定の質問が通常、askubuntuよりもスーパーユーザーに適しているという難しい方法を学びました。
virtualxtc 14年

これがアクセス許可の問題だった場合、手動で実行しようとしたときに表示されていたでしょうか?
ヌルポインター14年

回答:


8

私自身の質問に答えるには:

1.実行するためにsudo権限が必要だったため、スクリプトは実行されませんでした。

これに対する解決策:

このスクリプトをsudo実行可能にします!

を使用してsudoersファイル編集

sudo visudo

25行目以降(ie %sudo ALL=(ALL))これを追加

username ALL=(ALL) NOPASSWD: /home/username/my_script.sh

これでsudo、sudoパスワードを求められることなく、このスクリプトで使用できます。

ただし、セキュリティ上の問題が発生する可能性があるため、このリンクを参照しください

2. 2番目の質問への回答:

接続されているすべてのUSBデバイスでこのスクリプトを機能させるには、ルールファイルをこれに変更します

ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/usr/local/my_script.sh"

asterik(*)は、接続されているすべてのUSBデバイスに対してこれを行う必要があることを示しています!

それでおしまい!スクリプトが実行可能であることを確認し、USBに接続してください!!

楽しい!


0

チルダをホームディレクトリへのフルパスに置き換えてみてください。これが機能するかどうかはわかりませんが、スクリプトを直接実行すると機能しますが、自動的に実行すると機能しないと言います:これは、別のユーザーが自動的に実行され、チルダがユーザーごとに異なる値に解決される場合。


質問に答える前にコメントを読んでください
ヌルポインター14年

コメントを読んだ後、質問に答えました。私は何か間違ったことをしましたか?特に言及しているのはどのコメントですか?
トビー1ケノービ14

コメントでは、これらの提案はすでに与えられており、私にはうまくいきませんでした。だから私はコメントを読んだと言ったのです
ヌルポインター14年

ああ、すみません、最後の5つのコメントは私から隠されていました。私の間違い!
トビー1ケノービ14

@Nullpointer:質問を編集し、質問の完全な情報を保持してください。そうすれば、コメントを読む必要はありません...コメントは質問の一部ではありません...
;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.