
Я хотел бы, чтобы скрипт оболочки выполнялся каждый раз, когда я подключаю USB-модем.
Как бы я это сделал?
решение1
Этого можно добиться с помощью некоторых правил udev, как предложил @Rinzwind.
Во-первых, сохраните ваш скрипт в месте, доступном другим пользователям. Например, вы можете сохранить его как /usr/local/bin/script.sh
.
Теперь сделайте скрипт доступным для других.
sudo chmod 555 /usr/local/bin/script.sh
Теперь подключите свой USB-модем и запустите lsusb
. Ниже приведен пример вывода:
$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. Mini stick Suunto
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Найдите строку с именем вашего модема в конце. Теперь найдите часть около середины в формате ID XXXX:####
. Части XXXX
и ####
будут,Идентификатор поставщикаиИдентификатор устройствасоответственно.
Для этого примера для третьей строки, которая читается как … ID 0fcf:1008 Dynastream …
, идентификатор поставщика — 0fcf
, а идентификатор устройства — 1008
. Ваше устройство будет иметь разные значения для этих идентификаторов.
Теперь мы будем использовать эти идентификаторы для создания правила для udev.
Теперь создайте правило для этого устройства с помощью udev.
Создайте файл правил с
sudo nano /etc/udev/rules.d/90-local.rules
Добавьте следующую строку:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"
Заменить XXXX
наидентификатор поставщикаиз более раннего, и замените ####
наКод товараиз более раннего.
Теперь заставьте udev перезагрузить свои правила (или вы можете пропустить этот шаг и перезагрузиться)
udevadm control --reload-rules
sudo service udev restart
И вы сделали!
Источники:Аналогичный вопрос на SU относительно правил udev,Создание правил udev