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

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

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

Спасибо заранее!

11
задан 13 April 2017 в 15:23

3 ответа

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

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!

0
ответ дан 13 April 2017 в 15:23

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

0
ответ дан 13 April 2017 в 15:23

Посмотрите на это, каракатица .

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: