2016-06-21 2 views
0

У меня есть сценарий, который использует команду udevadm для получения информации об устройстве/dev, информация, необходимая для моего скрипта, - это значение ID_SERIAL, потому что я хочу фильтровать устройства tty's10, которые представляют определенный продукт подключен к порту USB. Проблема в том, что версия udevadm udevm, присутствующая на окружении, - 128, и эта версия udevadm не имеет запроса property avaiable. Как я могу фильтровать устройство, подключенное к портам USB по-другому?Альтернатива использованию команды udevadm

EDIT 1 Command.sh

#!/bin/bash 

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev);do 
    (syspath="${sysdevpath%/dev}"; 
    echo "syspath = $syspath"; 
    devname="$(udevadm info -q name -p $syspath)"; 
    [[ "$devname" == "bus/"* ]]&& continue; 
    echo "Passou"; 
    eval "$(udevadm info -q property --export -p $syspath)"; 
    [[ -z "$ID_SERIAL" ]] && continue; 
    temporario=${ID_SERIAL,,}; 
    if [[ $temporario == *"ManufacturerName"* ]]; 
    then 
     echo "/dev/$devname"; 
    fi); 
done; 
+0

Могу ли я предположить, что вы не можете обновить udev в своей среде? –

+0

Если вы не можете заставить 'udevadm' фильтровать именно то, как вы хотите, возможно, вы можете использовать другие инструменты, такие как' grep', 'sed' или' awk', чтобы дополнительно фильтровать вывод из 'udevadm'. –

+0

Я не могу обновить среду. – JulianOliveira

ответ

0

Не проще использовать выход dmesg? Когда я подключить мой последовательный порт, я получаю этот выход:

[332144.226566] usb 1-2.1.2: new full-speed USB device number 6 using ehci-pci 
[332144.302766] usb 1-2.1.2: New USB device found, idVendor=067b, idProduct=2303 
[332144.302770] usb 1-2.1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 
[332144.512664] usbcore: registered new interface driver usbserial 
[332144.512679] usbcore: registered new interface driver usbserial_generic 
[332144.512691] usbserial: USB Serial support registered for generic 
[332144.522042] usbcore: registered new interface driver pl2303 
[332144.522060] usbserial: USB Serial support registered for pl2303 
[332144.522090] pl2303 1-2.1.2:1.0: pl2303 converter detected 
[332144.523681] usb 1-2.1.2: pl2303 converter now attached to ttyUSB0 

В последней строке упоминает ttyUSB0, и вы можете связать это с 1-2.1.2, если вы хотите, чтобы идентифицировать REMOVE-событие тоже:

[332342.342682] usb 1-2.1.2: USB disconnect, device number 6 
[332342.342891] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0 
[332342.342903] pl2303 1-2.1.2:1.0: device disconnected 

Другая возможность - использовать систему inotify, где вы можете получать уведомление, когда диск подключен. Проверьте this article on how to use the system.