Bash verificar se o dispositivo USB está ligado em / sys

2

Eu tenho um script bash que liga / desativa um dispositivo USB definindo o valor de um driver no diretório /sys . Aqui estão os comandos:

'X-Y.Z' é o endereço do dispositivo.

Dispositivo de vinculação: sh -c "echo 'X-Y.Z' > /sys/bus/usb/drivers/usb/bind"

Desativar dispositivo: sh -c "echo 'X-Y.Z' > /sys/bus/usb/drivers/usb/unbind"

Depois de fazer, eu preciso do meu script para verificar se o dispositivo está ligado ou não.

Não encontrei uma maneira de ler os arquivos /sys/bus/usb/drivers/usb/bind e /sys/bus/usb/drivers/usb/unbind . Existe um comando que possa ler esses arquivos?

Existe alguma outra maneira de o meu script bash saber que o dispositivo está ligado apenas por ter o endereço X-Y.Z format do dispositivo?

    
por TheKitsuneWithATie 15.08.2016 / 16:04

1 resposta

2

Quando você liga seu dispositivo, você o encontrará listado no diretório em que você fez a ligação. Mas você também pode verificar se o link /sys/bus/usb/devices/X-Y.Z/driver existe e, nesse caso, aponta para o driver que está sendo usado.

Por exemplo, para um dispositivo usb serial% ftdi 3-2.4:1.0 atualmente vinculado ao driver ftdi_sio, ele aparece no diretório do driver e há um link do diretório devices:

$ ls /sys/bus/usb/drivers/ftdi_sio/
3-2.4:1.0  bind  uevent  unbind
$ ls -l /sys/bus/usb/devices/3-2.4:1.0/
...
lrwxrwxrwx 1 root root    0 Aug 16 18:33 driver -> ../../../../../../../../bus/usb/drivers/ftdi_sio

Após uma desvinculação, não está mais no diretório e o link do driver não existe:

$ sudo sh -c 'echo 3-2.4:1.0 >/sys/bus/usb/drivers/ftdi_sio/unbind '
$ ls /sys/bus/usb/drivers/ftdi_sio/
bind  uevent  unbind
$ ls -l /sys/bus/usb/devices/3-2.4:1.0/driver
/bin/ls: cannot access /sys/bus/usb/devices/3-2.4:1.0/driver: No such file or directory
    
por 16.08.2016 / 18:43