Есть ли какой-нибудь способ сообщить, когда в linux было обнаружено изменение в оборудовании, кроме неоднократного опроса всего оборудования и проверки на наличие изменений?

Например, я написал скрипт, чтобы смонтировать память моего телефона и сделать резервную копию всех новых снимков, которые я сделал. Я бы хотел, чтобы скрипт автоматически запускался при подключении телефона к порту usb.

Есть ли какой-нибудь способ, которым моя ОС (debian jessie) может сообщить мне, когда произойдет смена оборудования?

2 ответа2

3

Вот способ запустить скрипт bash при обнаружении USB-накопителя.

Подключите ваше устройство и запустите lsusb чтобы получить информацию об устройстве. Вы должны увидеть что-то похожее на это:

$ lsusb
Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC

В этом случае идентификатор поставщика устройства равен 0bc2 а идентификатор продукта - 2100 .
Теперь вы можете создать правило UDEV .

$sudo vi /etc/udev/rules.d/85-my_usb_device_rule.rules

И добавьте это:

ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0bc2", SYSFS{idProduct}=="2100", RUN+="/home/myhome/my_script"

/home/myhome/my_script - это путь к вашему сценарию, который будет делать все, что вы захотите.

Чтобы убедиться, что скрипт обнаружения будет выполнен сразу же, перезагрузите правила UDEV :

$sudo udevadm control --reload-rules
0

Каждая "файловая система" имеет доступный UUID. У некоторых также есть "ярлык". (Прочтите "man mount"). Как только вы подключите USB-накопитель, ваш скрипт запустится. Затем этот скрипт может запрашивать UUID или метку вновь подключенной файловой системы. Вооружившись этим идентификатором, сопоставьте его с реальным рабочим скриптом для запуска на этом диске. Я бы предложил таблицу {IDENT} {COMMAND} {COMMENT}, так что вам нужно всего лишь редактировать, чтобы добавить новые диски в обработку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .