Пожалуйста, не отмечайте это как дубликат, так как это другой вопрос!
Я пытаюсь запустить скрипт всякий раз, когда Pendrive подключен к моей системе. Я следил за этим и этим вопросом, и он работает, но все же есть некоторые проблемы.
Это мой файл правил udev:
ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
и это мой сценарий:
#!
/ Бен / Баш
env> /tmp/env.out
cp -r / media / * имя устройства * / * ~ / test /
У меня есть 2 вопроса:
1.При каждом подключении моего скрипта USB-устройства выполняется, потому что файл / env.out генерируется в / tmp, но данные с USB-устройства не копируются в тестовый каталог , если я запускаю скрипт вручную, он работает нормально! Почему??
2.Как можно сделать мой файл правил более общим, чтобы он работал на любом подключенном USB-устройстве, не зная его идентификатора?
Моя идея заключается в том, чтобы автоматически копировать все данные с подключенного USB-устройства на мой компьютер, когда он подключен.
Заранее спасибо!
Ответы:
Чтобы ответить на мой собственный вопрос:
1. JavaScript не работает, потому что ему нужны
sudo
права для запуска ..Решение этого:
Сделайте этот скрипт
sudo
исполняемым!РЕДАКТИРОВАТЬ файл 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!
Наслаждаться!
источник
Попробуйте заменить тильду полным путем к домашней директории. Я не знаю, сработает ли это, но вы говорите, что скрипт работает, когда вы запускаете его напрямую, но когда он запускается автоматически, он этого не делает: это заставляет меня думать, что проблема может быть связана с тем, что он запускается другим пользователь, когда он запускается автоматически, и тильда разрешает разные значения для разных пользователей.
источник
Взгляни на это, каракатица .
источник