udev Executar comandos não em execução

6

Estou tentando criar uma regra do udev para desbloquear meu computador quando conecto meu telefone por USB. Eu não pude descobrir que aquela regra estava sendo executada e então eu tentei uma regra muito mais simples. Esta é a regra (anônima):

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

Eu sei que a regra está sendo executada porque o link phone -> sdc1 está sendo criado, mas o arquivo não está sendo criado. Existe configuração de segurança que eu tenho que habilitar para o arquivo para executar um programa externo?

    
por Andrew Redd 10.10.2011 / 22:19

3 respostas

4

Você deve usar o caminho completo na chave RUN porque ( man udev )

  

Se nenhum caminho absoluto for dado, espera-se que o programa resida em   / lib / udev, caso contrário, o caminho absoluto deve ser especificado. Nome do programa   e argumentos são separados por espaços. Aspas simples podem ser usadas para   especifique argumentos com espaços.

No entanto, o próprio script (bash) deve se comportar normalmente, ou seja, você não precisa especificar o caminho.

    
por arrange 10.10.2011 / 22:54
3

Eu estava tendo o mesmo problema com o udev. Eu tentei quase tudo para que os scripts funcionassem ao adicionar e remover dispositivos.

Este é o código que eu fiz:

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

A adição do parâmetro OPTIONS="last_rule" resolveu o problema.

    
por Luke 11.05.2014 / 01:43
3

Eu tive esse problema também, e posso confirmar que a partir de 12.04 você precisa especificar o script bash completo e bash completo para o comando EXECUTAR funcionar.

    
por pedricus 09.07.2012 / 16:40

Tags