Tolong jangan tandai ini sebagai duplikat karena ini adalah pertanyaan yang berbeda!
Saya mencoba menjalankan skrip setiap kali pendrive terhubung ke sistem saya. Saya mengikuti ini dan pertanyaan ini Dan itu berhasil tetapi masih ada beberapa masalah.
Ini adalah file aturan udev saya:
ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
dan ini skrip saya:
#!
/ bin / bash
env> /tmp/env.out
cp -r / media / * nama-perangkat * / * ~ / test /
Saya punya 2 pertanyaan:
1.Setelah saya pasang skrip perangkat usb saya dijalankan karena file env.out dihasilkan dalam / tmp tetapi data dari perangkat usb tidak disalin ke direktori tes , jika saya menjalankan skrip secara manual maka berfungsi dengan baik! Mengapa??
2.Bagaimana bisa membuat file aturan saya lebih umum sehingga akan berfungsi untuk perangkat USB apa pun yang terhubung tanpa mengetahui ID-nya?
Ide saya di balik ini adalah untuk menyalin semua data dari perangkat USB yang terhubung ke komputer saya secara otomatis, ketika terhubung.
Terima kasih sudah mahir!
Jawaban:
Untuk menjawab pertanyaan saya sendiri:
1.Script tidak berjalan karena membutuhkan
sudo
hak untuk menjalankan ..Solusi untuk ini:
Jadikan skrip ini
sudo
dapat dieksekusi!EDIT file sudoers menggunakan
sudo visudo
Setelah baris 25 (yaitu
%sudo ALL=(ALL)
) Tambahkan iniusername ALL=(ALL) NOPASSWD: /home/username/my_script.sh
Sekarang kita dapat menggunakan
sudo
skrip ini tanpa diminta kata sandi sudotetapi hal itu dapat menyebabkan beberapa masalah keamanan jadi silakan merujuk tautan ini
2. Jawab pertanyaan kedua saya:
Untuk membuat skrip ini berfungsi untuk semua perangkat USB yang terhubung, ubah file aturan menjadi ini
ACTION=="add", ATTRS{idVendor}=="
****
", ATTRS{idProduct}=="****
", RUN+="/usr/local/my_script.sh"asterik (*) memberi tahu bahwa ini harus dilakukan untuk setiap perangkat USB yang terhubung!
Itu dia! Pastikan skrip dapat dieksekusi dan Hubungkan USB Anda !!
Nikmati!
sumber
Coba ganti tilde dengan path lengkap ke direktori home Anda. Saya tidak tahu apakah ini akan berhasil, tetapi Anda mengatakan bahwa skrip bekerja ketika Anda menjalankannya secara langsung tetapi ketika itu dijalankan secara otomatis, itu tidak: Ini membuat saya berpikir bahwa masalahnya mungkin berkaitan dengan itu dijalankan oleh yang berbeda pengguna ketika dijalankan secara otomatis, dan tilde memutuskan untuk nilai yang berbeda untuk pengguna yang berbeda.
sumber
Lihat ini, cumi-cumi .
sumber