Je suis un débutant Linux sur Gentoo. J'essaie d'écrire une règle udev qui exécuterait un script Python et transmettrait certaines informations chaque fois qu'un périphérique usb (spécifiquement un modem usb) est inséré. J'ai :
SUBSYSTEM == "usb", ACTION == "add", $ATTRS{vendor} = "?*", RUN += "/home/.../notify.py %k '$attr{vendor}'"
comme point de départ.
Pour l'instant, notify.py est un exécutable qui essaie de m'aider à déboguer et qui ressemble à ceci :
#!/usr/bin/python
import sys
log = open("log.txt", 'a')
for a in sys.argv:
log.write(a + "\n")
fi.close()
Je n'arrive pas à trouver comment faire passer "$attr{vendor}" ; pour l'instant, seul %k (le noyau du périphérique) est passé et imprimé, ainsi que tous les autres arguments de chaîne que j'ai envie d'ajouter. J'ai fait le tour d'internet, j'ai essayé "$attr{vendor}" (ne donne rien), "$attrs{vendor}" (donne "s{vendor}"), et "%s{vendor}" (ne donne rien). J'ai essayé de changer la priorité de cette règle, au cas où les variables ne seraient pas encore définies ou autre. J'ai examiné d'autres fichiers de règles, et aucun d'entre eux ne fait tout à fait ce que je fais, mais ils parviennent à utiliser "$attr{[quelque chose]}".
Ce qui est encore plus déroutant, c'est que si j'écris quelque chose comme
GOTO+="$attr{vendor}"
vi le met en évidence comme une chaîne de caractères, mais
RUN+="$attr{vendor}"
et vi fait ressortir tout différemment. J'ai l'impression que le bogue a quelque chose à voir avec la façon dont RUN fonctionne, ou avec mon utilisation incorrecte de "$attr", mais je suis totalement perdu.
Ces postes semblent faire quelque chose de similaire à ce que j'essaie de faire. J'apprécierais toute aide ou contribution sur ce problème.