Запуск сценарію на підключенні USB-пристрою


13

Будь ласка, не позначайте це як дублікат, оскільки це вже інше питання!

Я намагаюся запустити сценарій кожного разу, коли підключений до моєї системи маятник. Я дотримувався цього і цього питання. І це працює, але все ж є деякі проблеми.

Це мій файл правил udev:

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

і це мій сценарій:

#!/ бін / баш

env> /tmp/env.out
cp -r / media / * ім'я пристрою * / * ~ / тест /

У мене є 2 питання:

1.Якщо я підключаю сценарій свого usb-пристрою, виконується через те, що файл env.out генерується в / tmp, але дані з usb-пристрою не копіюються в тестовий каталог , якщо я запускаю скрипт вручну, то він працює добре! Чому ??

2.Як можна зробити файл моїх правил більш загальним, щоб він працював на будь-якому USB-пристрої, який підключено, не знаючи його ідентифікатора?

Моя ідея цього полягає в тому, щоб скопіювати всі дані з підключеного USB-пристрою на мій комп'ютер автоматично, коли він підключений.

Дякую заздалегідь!


ви не просто намагаєтесь це зробити? askubuntu.com/questions/474/…
virtualxtc

@virtualxtc Дякую за цю пропозицію! Але я хочу знати, що з цим підходом не так?
Нульовий покажчик

Скажіть, будь ласка, що не так з моїм сценарієм? Чому це не працює?
Нульовий покажчик

Крім того, лише головою вгору - я навчився важко, що конкретні питання, як це, як правило, краще підходять для суперкористувача, ніж для askubuntu.
virtualxtc

Якби це була проблема дозволів, то вона з’явилася б, коли я намагався запустити її вручну, чи не так?
Нульовий вказівник

Відповіді:


8

Щоб відповісти на моє власне запитання:

1.Script не запускався, оскільки sudoдля запуску потрібні права ..

Рішення цього:

Зробіть цей сценарій sudoвиконуваним!

EDIT файл sudoers за допомогою

sudo visudo

Після рядка 25 (тобто %sudo ALL=(ALL)) Додайте це

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

Тепер ми можемо використовувати sudoв цьому сценарії, не вимагаючи пароля sudo

але це може спричинити деякі проблеми із безпекою, тому перейдіть за цим посиланням

2. Відповідь на моє друге питання:

Щоб цей скрипт працював на будь-якому підключеному USB-пристрої , змініть файл правил на цей

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

asterik (*) повідомляє, що це слід робити для кожного підключеного USB-пристрою!

Це воно! Переконайтеся, що сценарій виконується, і підключіть ваш USB !!

Насолоджуйтесь!


0

Спробуйте замінити тильду повним шляхом до домашнього каталогу. Я не знаю, чи це спрацює, але ви говорите, що сценарій працює, коли ви запускаєте його безпосередньо, але коли він запускається автоматично, він не робить: Це змушує мене думати, що проблема може бути пов'язана з тим, що він працює іншим користувач, коли він запускається автоматично, і тильда визначається різними значеннями для різних користувачів.


Будь ласка, прочитайте коментарі, перш ніж відповісти на запитання
Нульовий покажчик

Я прочитав коментарі, потім відповів на питання. Я щось не так зробив? Який коментар, зокрема, ви маєте на увазі?
Toby 1 Kenobi

У коментарях ці пропозиції вже були надані, і вони не спрацювали для мене. Ось чому я сказав прочитати коментарі
Нульовий вказівник

О так, вибачте, останні 5 коментарів були приховані від мене, і я їх не помічав. Моя помилка!
Toby 1 Kenobi

@Nullpointer: будь ласка, відредагуйте своє запитання та зберігайте повну інформацію у питанні, щоб людям не потрібно було читати коментарі ... Коментарі не є частиною питання ... ;-)
Fabby

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.