Escrevendo para / dev / kmsg com execução do udev

0

Eu escrevi uma regra do udev simples para nomear meu dispositivo usb:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyUSB-ZStick-5G"

O udev oferece maneiras de executar scripts personalizados em determinados eventos ( ref :

KERNEL=="sdb", RUN+="/usr/bin/my_program"

No entanto, o que eu gostaria para a solução acima é apenas imprimir algumas informações que serão exibidas em dmesg . Isso não é uma complexidade que exigiria um script separado.

Abaixo está algo que eu estava idealmente esperando para trabalhar:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyUSB-ZStick-5G", RUN+="echo 'Made symlink: ttyUSB-ZStick-5G' > /dev/kmsg"

Idéias sobre como fazer isso?

    
por TheMeaningfulEngineer 15.03.2016 / 12:50

1 resposta

1

Como o manual explica:

The program name and following arguments are separated by spaces. Single quotes can be used to specify arguments with spaces.

A string passada para RUN não é alimentada para um shell. É apenas dividido em espaços em branco com um mecanismo de cotação grosseiro. Se você quiser realizar um redirecionamento, você precisa invocar um shell.

… RUN+="sh -c 'echo Made symlink: ttyUSB-ZStick-5G > /dev/kmsg'"

Chamar um roteiro seria mais claro.

    
por 16.03.2016 / 02:03

Tags