Як запустити скрипт оболонки при виявленні нового USB-накопичувача?


17

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

Відповіді:


13

Використовуйте Udev. 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" запускає скрипт і передає до нього «додати» та «% k» (назва пристрою).

Не буду детальніше розповідати, оскільки є чудові підручники щодо правил udev. Те, що ви тут прочитали, має бути достатньо, щоб озирнутися.


Відмінна відповідь, але тепер я хочу, щоб сценарій, який веде журнал,
Amith KK

4
Тоді вам доведеться написати це або бути більш конкретним щодо того, що саме ви хочете. Наприклад, я не бачу, що б вам сказав екран. Також "демпінгує системний журнал" куди? "Що-небудь ненормальне" також є досить широким терміном. Ми не ваша особиста армія - якщо ви знаєте щось або дві про баш-сценарії, то тепер у вас є всі інструменти, необхідні для написання сценарію самостійно.
con-f-use

: D вибачте @ con-f-use
Amith KK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.