Rsync при обнаружении USB? [dубликат]

мне нужен скрипт, который выводит лог и начинает запись о нем, как только в качестве запоминающего USB подключен (с OKdump файл на него).И если что-нибудь ненормальное(как об ошибке, которая визуально представить) обнаруживается, я хочу сделать скриншот и сохранить его на том же диске.

17
задан 25 June 2011 в 17:57

9 ответов

Использовать Udev. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы связали это, и знаете, что это идет под именем /dev/sdb1. Если это так:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS{serial}=="UA04FLGC" или комбинация других атрибутов, таких как ATTRS{idVendor} и ATTRS{idProduct}. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

Как только вы нашли уникальный идентификатор, создайте файл в /etc/udev/rules.d, который начинается с двух цифр и заканчивается на .rules. Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

# /etc/udev/rules.d/70-usb-log-custom.rules KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k" ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k" SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL=="sd?1" говорит, что устройство, которое мы смотрим поскольку в этом правиле указано по строкам /dev/sda1, /dev/sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS{serial}=="UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS{idVendor}=="1781" и SYSFS{idProduct}=="0c9f", чтобы идентифицировать его.

ACTION=="add" сообщает правилу действуют только при добавлении устройства;

SYMLINK+="cusb1" создает символическую ссылку на диск, поэтому вы найдете ее под /dev/cusb1.

RUN+="/home/confus/bin/usb-encrypt.sh add %k" запускает скрипт и передает 'add' и '% k' (имя устройства).

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 18 July 2018 в 06:16

Использовать Udev. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы связали это, и знаете, что это идет под именем /dev/sdb1. Если это так:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS{serial}=="UA04FLGC" или комбинация других атрибутов, таких как ATTRS{idVendor} и ATTRS{idProduct}. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

Как только вы нашли уникальный идентификатор, создайте файл в /etc/udev/rules.d, который начинается с двух цифр и заканчивается на .rules. Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

# /etc/udev/rules.d/70-usb-log-custom.rules KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k" ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k" SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL=="sd?1" говорит, что устройство, которое мы смотрим поскольку в этом правиле указано по строкам /dev/sda1, /dev/sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS{serial}=="UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS{idVendor}=="1781" и SYSFS{idProduct}=="0c9f", чтобы идентифицировать его.

ACTION=="add" сообщает правилу действуют только при добавлении устройства;

SYMLINK+="cusb1" создает символическую ссылку на диск, поэтому вы найдете ее под /dev/cusb1.

RUN+="/home/confus/bin/usb-encrypt.sh add %k" запускает скрипт и передает 'add' и '% k' (имя устройства).

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 24 July 2018 в 18:34

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 31 July 2018 в 21:35

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 2 August 2018 в 14:52

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 3 August 2018 в 18:55

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 5 August 2018 в 03:49

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 6 August 2018 в 20:46

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 9 August 2018 в 01:17

Используйте Удева. Удэв - демон-диспетчер устройств. Помимо всего прочего, он отвечает за именование ваших устройств. Вы можете определить udev-правила, поместив файлы с определенным синтаксисом в каталог правил.

Как решить вашу проблему:

Сначала вам нужно собрать информацию на своем устройстве , Предположим, вы подключили его, и знаете, что он идет под именем / dev / sdb1 . Если это так:

  udevadm info -a -p $ (udevadm info -q path -n / dev / sdb1)  

Команда выведет информацию о вашем устройстве. Это довольно длинный. Вам нужно найти то, что однозначно идентифицирует устройство. Это может быть серийный номер, например ATTRS {serial} == "UA04FLGC" или комбинация других атрибутов, таких как ATTRS {idVendor} и ATTRS {idProduct} [ ! d4]. Большинство имен более или менее понятны. Выберите один или несколько из нескольких, которые кажутся разумными - если они не работают, попробуйте что-то еще.

После того, как вы нашли уникальный идентификатор, создайте файл в / etc / udev / rules .d , который начинается с двух цифр и заканчивается .rules . Две цифры указывают порядок обработки этих .rules-файлов - 70-usb-log-custom.rules - прекрасный выбор для вас. Синтаксис этого файла правил может быть очень сложным. Если вам интересно, google udev. Если вы не просто открываете вновь созданный файл и редактируете его, чтобы выглядеть примерно так:

  # /etc/udev/rules.d/70-usb-log-custom.rules KERNEL == "  sd? 1 ", ATTRS {serial} ==" UA04FLGC ", ACTION ==" добавить ", SYMLINK + =" cusb1 ", RUN + =" / home / confus / bin / usb-encrypt.sh добавить% k "ENV {ID_FS_USAGE  } == "crypto", ACTION == "remove", RUN + = "/ home / confus / bin / usb-encrypt.sh удалить% k" SUBSYSTEM == "usb", SYSFS {idVendor} == "1781",  SYSFS {idProduct} == "0c9f", GROUP = "users", MODE = "0666"  

Это фактический файл udev, который я использую. В нем есть три правила. Каждая строка является правилом ее собственной. Первая строка запускает скрипт для создания расшифрованного устройства всякий раз, когда подключен зашифрованный диск. Вторая строка вызывает тот же скрипт с различными параметрами в случае удаления дешифрованного устройства. Третья строка устанавливает разрешения для другого связанного устройства.

Скорее всего, вам понадобится только первая строка. Удалите остальные и вставьте правильный серийный номер (или составные параметры, выбранные вами для идентификации вашего устройства).

Объяснение моего файла:

KERNEL == "sd? 1 « говорит, что устройство, которое мы ищем в этом правиле, называется по строкам / dev / sda1 , / dev / sdc1 или что-то в этом роде. Вопросительный знак является шаблоном для любой буквы. ATTRS {serial} == "UA04FLGC" - уникальный идентификатор здесь. Для другого устройства, о котором я говорил (третья строка), я не использую серийный номер, а комбинацию SYSFS {idVendor} == "1781" и SYSFS {idProduct} == «0c9f» , чтобы идентифицировать его.

ACTION == "add" сообщает правилу, что он должен действовать только при добавлении устройства;

SYMLINK + = "cusb1" создает символическую ссылку на диск, поэтому вы найдете ее в / dev / cusb1 .

RUN + = "/ home / confus / bin / usb-encrypt.sh add% k" запускает скрипт и передает 'add' и '% k' (имя устройства) в это.

Я не буду более подробно описывать, так как есть отличные уроки по правилам udev. То, что вы читаете здесь, должно быть достаточно, чтобы смотреть на него.

13
ответ дан 14 August 2018 в 19:26
  • 1
    Отличный ответ, но теперь я хочу, чтобы скрипт выполнял протоколирование – Amith KK 25 June 2011 в 14:01
  • 2
    Тогда вам нужно будет написать или уточнить, что именно вы хотите. Например. Я не вижу, что скажет вам скриншот. Также «сбрасывает системный журнал» где? «Любое ненормальное» - довольно широкий термин. Мы не ваша личная армия - если вы знаете кое-что о bash-scripting, то теперь у вас есть все инструменты, необходимые для написания сценария самостоятельно. – con-f-use 25 June 2011 в 16:20
  • 3
    : D sorry @ con-f-use – Amith KK 9 July 2011 в 16:45

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

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