Запуск скрипта при подключении USB-устройства
Пожалуйста, не отмечайте это как дубликат, так как это другой вопрос!
Я пытаюсь запустить скрипт всякий раз, когда 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-устройства на мой компьютер, когда он подключен.
Заранее спасибо!
3 ответа
Чтобы ответить на мой собственный вопрос:
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!
Наслаждаться!
Попробуйте заменить тильду полным путем к вашему домашнему каталогу. Я не знаю, сработает ли это, но вы говорите, что скрипт работает, когда вы запускаете его напрямую, но когда он запускается автоматически, он этого не делает: это заставляет меня думать, что проблема может быть связана с тем, что он запускается другим пользователь, когда он запускается автоматически, и тильда разрешает разные значения для разных пользователей.