2016-06-21 8 views
0

Ich habe ein Skript, das den Befehl udevadm verwendet, um Informationen über ein/dev Gerät zu erhalten, die Informationen für mein Skript ist der ID_SERIAL Wert, weil ich die tty's Geräte, die ein bestimmtes Produkt darstellt filtern möchten verbunden mit dem USB-Anschluss. Das Problem ist, dass die udevadm-Version des udevm, das in der Umgebung vorhanden ist, 128 ist und diese Version von udevadm die Abfrage property nicht verfügbar hat. Wie kann ich das an USB Ports angeschlossene Gerät auf andere Weise filtern?Alternative zur Verwendung von udevadm Befehl

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

Darf ich annehmen, dass Sie udev nicht in Ihrer Umgebung aktualisieren können? –

+0

Wenn "udevadm" nicht genau nach Ihren Wünschen gefiltert werden kann, können Sie auch andere Tools wie 'grep',' sed' oder 'awk' verwenden, um die Ausgabe von' udevadm' weiter zu filtern. –

+0

Ich kann die Umgebung nicht aktualisieren. – JulianOliveira

Antwort

0

Ist das nicht einfacher ist es, die Ausgabe von dmesg zu benutzen? Als ich in meinen seriellen Port anschließen, erhalte ich diese Ausgabe:

[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 

Die letzte Zeile erwähnt ttyUSB0, und Sie können diese beziehen sich auf das 1-2.1.2, wenn Sie die remove-Ereignis identifizieren möchten:

[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 

Eine andere Möglichkeit wäre, das System inotify zu verwenden, wo Sie eine Benachrichtigung erhalten könnten, wenn das Laufwerk angeschlossen ist. Überprüfen Sie this article on how to use the system.