Обнаружение новых USB-устройств с помощью bash?

833
tjt263

Я пишу Баш скрипт, который должен определить, когда запоминающее устройство USB вставляется и присвоить его переменной, которая бы в противном случае, как правило, выглядит примерно так: usb=/dev/sdb.

У меня есть несколько абстрактных идей, которые включают использование watch, некоторую конструкцию if/ whilelooping и, возможно, lsblk -o kname/ lsblk -o pkname; но мне еще предстоит полностью осознать что-либо подходящее.

Как лучше всего это реализовать?

1

1 ответ на вопрос

1
varlogtim

Вы можете запустить сценарий, используя UDEV. «udev также обрабатывает все события пользовательского пространства, возникающие при добавлении или удалении аппаратных устройств в систему» ​​(из http://wiki.archlinux.org/index.php/Udev ).

Внутри файла с именем: /etc/udev/rules.d/10-usb.rulesдобавьте следующее:

KERNEL=="sd*[!0-9]|sr*", ENV!="?*", SUBSYSTEMS=="usb", RUN+="/path/to/script.sh" 

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