Linux новичок на Gentoo здесь. Я пытаюсь написать правило udev, которое будет запускать скрипт Python и передавать некоторую информацию всякий раз, когда вставляется USB-устройство (в частности, USB-модем). Я имею:
SUBSYSTEM == "usb", ACTION == "add", $ATTRS{vendor} = "?*", RUN += "/home/.../notify.py %k '$attr{vendor}'"
в качестве отправной точки.
Прямо сейчас notify.py - исполняемый файл, который пытается помочь мне отладить и выглядит так:
#!/usr/bin/python
import sys
log = open("log.txt", 'a')
for a in sys.argv:
log.write(a + "\n")
fi.close()
Я не могу понять, как заставить $ attr {vendor} пройти; прямо сейчас только% k (ядро устройства) передается и печатается вместе с любыми другими строковыми аргументами, которые я хочу добавить. Я был по всему интернету, я пробовал "$ attr {vendor}" (ничего не выводит), "$ attrs {vendor}" (выводит "s {vendor}") и "% s {vendor}" (ничего не выводит). Я попытался изменить приоритет этого правила, если переменные еще не определены или что-то еще. Я просмотрел другие файлы правил, и ни один из них не делает то, что я делаю, но им удается использовать "$ attr {[кое-что]}".
Все еще сбивает с толку, если я напишу что-то вроде
GOTO+="$attr{vendor}"
vi выделяет это как строку, но
RUN+="$attr{vendor}"
и vi выделяет все по-другому. Я чувствую, что ошибка связана с тем, как работает RUN, или с моим неправильным использованием "$ attr", но я полностью потерян.
Эти сообщения, кажется, делают нечто похожее на то, что я пытаюсь сделать. Буду признателен за любую помощь или вклад в эту проблему.