Eu sou forçado a trabalhar com um monte de sistemas de ponto de venda executando o SuSE 8. Eles são os computadores do meu cliente. Estamos presos em lidar com esses sistemas antigos até que eles atualizem toda a sua frota para o SLE 11.
O problema: o sistema agora tem dois dispositivos que competem pelos nós do dispositivo de caractere ttyUSB *. Eles possuem ID de fornecedor e ID de produto diferentes. O SuSE 8 não tem o udev, mas o devfs.
Conhecendo o ID do fornecedor e o ID do produto do dispositivo e o módulo do kernel responsável pelo dispositivo (é o módulo do kernel ipaq), como descobrir qual nó do dispositivo de caractere ele foi atribuído, de uma forma que possa ser armazenado em uma string (por exemplo, $ DeviceNode) em um script de shell POSIX?
Neste momento, estou fazendo isso de uma maneira muito burra no meu shell script:
DeviceNode=$(dmesg | tac | grep "PocketPC PDA converter now attached to" | set -n 's/.*now attached to \([[:alnum:]]\{1,\}\).*//p')
Então eu recebo, por exemplo
> echo $DeviceNode
ttyUSB1
>
É claro que um dos problemas é que o dispositivo já pode ter sido desconectado e eu não seria capaz de dizer com esse método ingênuo.
Existe alguma maneira melhor?
EDITAR: Então, encontrei este artigo esta manhã. Posso supor que, em / proc / tty / driver / usbserial, a partir da segunda linha, o primeiro número de cada linha é o número menor de um dos ttyUSBx?
EDIT 2: Uma solução alternativa (e talvez melhor) seria obter associação de nó persistente (por exemplo, sempre obtendo um dispositivo com um ID de fornecedor conhecido e um ID de produto conhecido a ser associado a ttyUSB1). Isso é possível em devfs?