Menjalankan Script saat menghubungkan perangkat USB

12

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!

Pointer kosong
sumber
bukankah kamu hanya mencoba melakukan ini? askubuntu.com/questions/474/…
virtualxtc
@virtualxtc Terima kasih atas saran ini! Tetapi saya ingin tahu. Apa yang salah dengan pendekatan ini?
Null pointer
dapatkah Anda memberi tahu saya apa yang salah dengan skrip saya? Kenapa tidak bekerja?
Null pointer
Selain itu, tunggu sebentar - Saya telah mempelajari cara sulit bahwa pertanyaan spesifik seperti ini biasanya lebih cocok untuk pengguna super daripada askubuntu.
virtualxtc
Jika ini akan menjadi masalah perizinan maka itu akan muncul ketika saya mencoba menjalankannya secara manual, bukan?
Null pointer

Jawaban:

8

Untuk menjawab pertanyaan saya sendiri:

1.Script tidak berjalan karena membutuhkan sudohak untuk menjalankan ..

Solusi untuk ini:

Jadikan skrip ini sudodapat dieksekusi!

EDIT file sudoers menggunakan

sudo visudo

Setelah baris 25 (yaitu %sudo ALL=(ALL)) Tambahkan ini

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

Sekarang kita dapat menggunakan sudoskrip ini tanpa diminta kata sandi sudo

tetapi 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!

Pointer kosong
sumber
0

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.

Toby 1 Kenobi
sumber
Silakan baca komentar sebelum menjawab pertanyaan
Null pointer
Saya memang membaca komentar, lalu saya menjawab pertanyaan. Apakah saya melakukan sesuatu yang salah? Komentar khusus apa yang Anda maksud?
Toby 1 Kenobi
Dalam komentar, saran-saran ini sudah diberikan dan mereka tidak bekerja untuk saya .. itu sebabnya saya katakan baca komentar
Null pointer
Oh ya, maaf, 5 komentar terakhir disembunyikan dari saya dan saya tidak memperhatikannya. Kesalahanku!
Toby 1 Kenobi
@Nullpointer: silakan edit pertanyaan Anda dan simpan informasi lengkap dalam pertanyaan itu sehingga orang tidak perlu membaca komentar ... Komentar bukan bagian dari pertanyaan ... ;-)
Fabby