Chạy Script khi kết nối thiết bị USB


12

Vui lòng không đánh dấu đây là trùng lặp vì đây là một câu hỏi khác!

Tôi đang cố gắng chạy một kịch bản bất cứ khi nào một ổ đĩa được kết nối với hệ thống của tôi. Tôi đi theo nàynày câu hỏi Và nó đang làm việc nhưng vẫn còn một số vấn đề.

Đây là tập tin quy tắc udev của tôi:

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

và đây là kịch bản của tôi:

#!/ thùng / bash

env> /tmp/env.out
cp -r / media / * tên thiết bị * / * ~ / test /

Tôi có 2 câu hỏi:

1. Khi tôi cắm vào tập lệnh thiết bị usb của mình được thực thi vì một tệp env.out được tạo trong / tmp nhưng dữ liệu từ thiết bị usb không được sao chép vào thư mục kiểm tra , nếu tôi chạy tập lệnh theo cách thủ công thì nó hoạt động tốt! Tại sao??

2.Làm thế nào để tập tin quy tắc của tôi tổng quát hơn để nó hoạt động cho mọi thiết bị USB được kết nối mà không biết ID của nó?

Ý tưởng của tôi đằng sau việc này là tự động sao chép tất cả dữ liệu từ thiết bị USB được kết nối sang máy tính của tôi khi nó được kết nối.

Cảm ơn trong nâng cao!


không phải bạn đang cố gắng làm điều này sao? Askubfox.com/questions/474/ trộm
virtualxtc

@virtualxtc Cảm ơn lời đề nghị này! Nhưng tôi muốn biết Điều gì là sai với phương pháp này?
trỏ Null

bạn có thể vui lòng cho tôi biết những gì là sai với kịch bản của tôi? Tại sao nó không làm việc?
trỏ Null

Ngoài ra, chỉ cần ngẩng cao đầu - Tôi đã học được một cách khó khăn rằng những câu hỏi cụ thể như thế này thường phù hợp với siêu người dùng hơn là hỏi trên Ubuntu.
virtualxtc

Nếu đây là vấn đề của quyền thì nó sẽ xuất hiện khi tôi cố chạy nó bằng tay, phải không?
trỏ Null

Câu trả lời:


8

Để trả lời câu hỏi của riêng tôi:

1.Script không chạy vì nó cần sudoquyền để chạy ..

Giải pháp cho vấn đề này:

Làm cho kịch bản này sudothực thi!

EDIT tập tin sudoers bằng cách sử dụng

sudo visudo

Sau dòng 25 (tức là %sudo ALL=(ALL)) Thêm cái này

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

Bây giờ chúng ta có thể sử dụng sudotrong tập lệnh này mà không bị yêu cầu nhập mật khẩu sudo

nhưng nó có thể gây ra một số vấn đề bảo mật vì vậy vui lòng tham khảo liên kết này

2. Trả lời câu hỏi thứ hai của tôi:

Để làm cho tập lệnh này hoạt động cho mọi thiết bị USB được kết nối, hãy thay đổi tệp quy tắc thành

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

asterik (*) nói rằng điều này nên được thực hiện cho mọi thiết bị USB được kết nối!

Đó là nó! Đảm bảo rằng tập lệnh có thể thực thi được và Cắm USB của bạn !!

Thưởng thức!


0

Hãy thử thay thế dấu ngã với đường dẫn đầy đủ đến thư mục chính của bạn. Tôi không biết điều này có hoạt động không, nhưng bạn nói rằng kịch bản hoạt động khi bạn chạy trực tiếp nhưng khi nó tự động chạy thì không: Điều này khiến tôi nghĩ rằng vấn đề có thể xảy ra với việc nó được chạy bởi một người khác người dùng khi nó chạy tự động và dấu ngã giải quyết các giá trị khác nhau cho những người dùng khác nhau.


Vui lòng đọc các bình luận trước khi trả lời câu hỏi
trỏ Null

Tôi đã đọc các bình luận, sau đó tôi trả lời câu hỏi. Tôi đã làm gì sai sao? Những bình luận cụ thể mà bạn đang đề cập đến?
Toby 1 Kenobi

Trong các bình luận, những đề xuất này đã được đưa ra và chúng không hiệu quả với tôi..đó là lý do tại sao tôi nói đọc các bình luận
trỏ Null

Ồ vâng, xin lỗi, 5 bình luận cuối cùng đã bị ẩn khỏi tôi và tôi đã không chú ý đến chúng. Lỗi của tôi!
Toby 1 Kenobi

@Nullpulum: vui lòng chỉnh sửa câu hỏi của bạn và giữ thông tin đầy đủ trong câu hỏi để mọi người không cần đọc bình luận ... Nhận xét không phải là một phần của câu hỏi ... ;-)
Fabby 11/03/2015

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.