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


13

Пожалуйста, не отмечайте это как дубликат, так как это другой вопрос!

Я пытаюсь запустить скрипт всякий раз, когда 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-устройства на мой компьютер, когда он подключен.

Заранее спасибо!


ты просто не пытаешься сделать это? askubuntu.com/questions/474/…
virtualxtc

@virtualxtc Спасибо за это предложение! Но я хочу знать, что не так с этим подходом?
Нулевой указатель

Подскажите, пожалуйста, что не так с моим сценарием? Почему это не работает?
Нулевой указатель

Кроме того, просто напоследок - я усвоил, что конкретные вопросы, подобные этим, обычно лучше подходят для суперпользователя, чем для Askubuntu.
virtualxtc

Если бы это была проблема с разрешениями, то она бы появилась, когда я попытался запустить ее вручную, не так ли?
Нулевой указатель

Ответы:


8

Чтобы ответить на мой собственный вопрос:

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!

Наслаждаться!


0

Попробуйте заменить тильду полным путем к домашней директории. Я не знаю, сработает ли это, но вы говорите, что скрипт работает, когда вы запускаете его напрямую, но когда он запускается автоматически, он этого не делает: это заставляет меня думать, что проблема может быть связана с тем, что он запускается другим пользователь, когда он запускается автоматически, и тильда разрешает разные значения для разных пользователей.


Пожалуйста, прочитайте комментарии, прежде чем ответить на вопрос
нулевой указатель

Я прочитал комментарии, а затем ответил на вопрос. Я сделал что-то неправильно? Какой конкретно комментарий вы имеете в виду?
Тоби 1 Кеноби

В комментариях эти предложения уже были даны, и они не работали для меня .. именно поэтому я сказал, прочитайте комментарии
нулевой указатель

О да, извините, последние 5 комментариев были скрыты от меня, и я их не заметил. Моя ошибка!
Тоби 1 Кеноби

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.