Bitte markieren Sie dies nicht als Duplikat, da dies eine andere Frage ist!
Ich versuche, ein Skript auszuführen, wenn ein Pendrive mit meinem System verbunden ist. Ich bin dieser und jener Frage gefolgt. Und es funktioniert, aber es gibt immer noch einige Probleme.
Dies ist meine udev-Regeldatei:
ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
und das ist mein Skript:
#!
/ bin / bash
env> /tmp/env.out
cp -r / media / * Gerätename * / * ~ / test /
Ich habe 2 Fragen:
1.Wenn ich mein USB- Geräteskript anschließe, wird es ausgeführt, weil in / tmp eine Datei env.out generiert wird, aber die Daten vom USB-Gerät nicht in das Testverzeichnis kopiert werden. Wenn ich das Skript manuell ausführe, funktioniert es einwandfrei! Warum??
2.Wie kann ich meine Regeldatei allgemeiner gestalten, damit sie für jedes angeschlossene USB-Gerät funktioniert, ohne die ID zu kennen?
Meine Idee dahinter ist, alle Daten vom angeschlossenen USB-Gerät automatisch auf meinen Computer zu kopieren, wenn es angeschlossen ist.
Danke im Voraus!
Antworten:
Um meine eigene Frage zu beantworten:
1.Script wurde nicht ausgeführt, da
sudo
zum Ausführen Rechte erforderlich waren.Lösung dafür:
Machen Sie dieses Skript
sudo
ausführbar!EDIT sudoers Datei mit
sudo visudo
Nach Zeile 25 (dh
%sudo ALL=(ALL)
) Fügen Sie dies hinzuusername ALL=(ALL) NOPASSWD: /home/username/my_script.sh
Jetzt können wir
sudo
in diesem Skript verwenden, ohne nach dem Sudo-Passwort gefragt zu werdenEs kann jedoch zu Sicherheitsproblemen kommen. Verweisen Sie daher auf diesen Link
2.Antwort auf meine zweite Frage:
Damit dieses Skript für jedes angeschlossene USB-Gerät funktioniert, ändern Sie die Regeldatei in diese
ACTION=="add", ATTRS{idVendor}=="
****
", ATTRS{idProduct}=="****
", RUN+="/usr/local/my_script.sh"asterik (*) gibt an, dass dies für jedes angeschlossene USB-Gerät erfolgen soll!
Das ist es! Stellen Sie sicher, dass das Skript ausführbar ist und schließen Sie Ihren USB an !!
Genießen!
quelle
Versuchen Sie, die Tilde durch den vollständigen Pfad zu Ihrem Home-Verzeichnis zu ersetzen. Ich weiß nicht, ob dies funktionieren wird, aber Sie sagen, dass das Skript funktioniert, wenn Sie es direkt ausführen, aber wenn es automatisch ausgeführt wird, funktioniert es nicht: Dies lässt mich denken, dass das Problem möglicherweise darin besteht, dass es von einem anderen ausgeführt wird Benutzer, wenn es automatisch ausgeführt wird und die Tilde für verschiedene Benutzer in unterschiedliche Werte aufgelöst wird.
quelle
Schau dir das an, Tintenfisch .
quelle