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