Regras do Udev que correspondem à saída de um comando (ou algo semelhante)

1

Estou escrevendo uma regra comum do udev para implantação em computadores com uma ou duas placas de vídeo Silicon Motion SM501 instaladas. Esta é a regra atual:

TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-*-usb-*_[34]", ENV{ID_SEAT}="seat0", TAG-="master-of-seat"

Eu quero que essa regra seja aplicada se, e somente se, houver exatamente uma carta presente, ou seja, se o comando lspci | grep -c SM501 gerar 1 . Como eu poderia mudar minha regra para atingir esse comportamento?

    
por Laércio de Sousa 29.03.2016 / 21:33

1 resposta

0

Não importa. Eu acho que encontrei uma solução. Acabei de descobrir que há uma estrofe do udev chamada RESULT que corresponde à saída da última chamada PROGRAM anterior. Por isso atualizei minha regra para a seguinte e parece funcionar:

TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-*-usb-*_[34]", PROGRAM="/bin/sh -c '/usr/bin/lspci | /bin/grep -c SM501'", RESULT=="1", ENV{ID_SEAT}="seat0", TAG-="master-of-seat"

Seria possível melhorar essa regra, descartando o wrapper /bin/sh -c '...' em PROGRAM ?

    
por 30.03.2016 / 17:17

Tags