OK, acho que o título da pergunta é um pouco involuntariamente enganoso, já que no texto você está dizendo que já encontrou o dispositivo e está perguntando como fazer isso programaticamente. Uma pergunta que vem à mente é como você encontrou manualmente e porque você não poderia simplesmente escrever um roteiro. Responderei a pergunta da melhor maneira possível na sua forma atual, desculpas antecipadamente se eu perder a marca.
Coisas como essa são incrivelmente variáveis e específicas de dispositivos. São considerações como essa que exigem adaptadores de drivers / software, mesmo em softwares de nível superior. Então você provavelmente deve se acostumar com a ideia de que este script fará essa coisa em particular, em vez de abstrair para algum processo genérico (que é o que eu estou supondo que você está tentando fazer).
Como pano de fundo: Cada sistema tipo barramento (USB, SCSI, PCI, etc) precisa de algum tipo de dispositivo de endereçamento. Com lspci
, esses são os valores que você vê à esquerda de cada linha na saída padrão.
Exemplo abreviado:
[root@hypervisor pyadmin]# lspci
00:00.0 Host bridge: Intel Corporation 5400 Chipset Memory Controller Hub (rev 20)
00:1d.1 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (rev 09)
00:1d.2 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (rev 09)
04:00.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E1 (rev 01)
04:01.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E2 (rev 01)
07:05.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
07:06.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
08:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5754 Gigabit Ethernet PCI Express (rev 02)
Os endereços PCI são 08: 00.0, 07: 06.0, etc.
Como você disse, o diretório sysfs que você está vendo é para um dos módulos ( usbled
), então você está vendo as informações que o sysfs tem nesse módulo, que inclui dispositivos que usam o módulo (ou vice-versa). versa, se você quiser). O 1-1.2:1.0
que você está vendo representa o dispositivo e está sendo referenciado pelo seu Endereço USB (na terminologia do USB, o "ponto final").
Então, se você já conhece o módulo, eu basicamente filtraria os valores conhecidos e só procuraria por denters que contenham ambos dois pontos e pontos, pois há pouquíssima chance de outro dentry nesse% específico O diretóriosysfs
já foi criado com um nome como esse, se não for um dispositivo conectado.
Eu sei que é um pouco em todo o lugar, mas tenho certeza que sua resposta está em algum lugar.