2010-11-30 22 views
1

Ich benutze Ruby 1.8 und Linux (Ubuntu und SLAX), und ich muss ein Skript in Ruby schreiben, das herausfindet, ob ein bestimmtes USB - Gerät mit dem System verbunden ist und an welchem ​​USB - Port (0,1 , 2, usw.). Es wurde vorher mit Hilfe von HAL (hal-find-by-capability-capability serial) gemacht, aber jetzt kann ich diesen Ansatz nicht verwenden. Ich versuchte,/var/log/messages Datei zu lesen, die versucht, die Nummer des USB-Hafens zu finden, aber es scheint, dass diese Zahl in einigen Systemen nicht geschrieben werden kann. Andere Sache, die ich versuchte, ist zu überprüfen,/dev Ordner und Suche nach ttyUSB # Datei, aber es erscheint nicht auf irgendeinem System, wenn neues Gerät an USB anschließt. Ich würde jede Idee, wie dies zu tun wäre, schätzen.Finden Sie heraus, ob das USB-Gerät angeschlossen ist. Ruby in Linux

Antwort

3

lsusb ist ein Linux-Befehl zum Anzeigen Ihrer USB-Hubs und Auflisten der Geräte, die mit ihnen verbunden sind. In Ruby glaube ich Sie wäre in der Lage, so etwas zu tun:

ls_results = `lsusb` 

sollten Sie in der Lage sein, das zu analysieren, für was auch immer Gerät Sie suchen.

+0

Eigentlich muss ich einen Port finden, mit dem dieses Gerät in Form von "tty #" verbunden ist. lsusb gibt mir sowas wie Bus 007 Gerät 001: ID 1d6b: 0001 Linux Foundation 1.1 Root Hub Bus 006 Gerät 001: ID 1d6b: 0001 Linux Foundation 1.1 Root Hub Bus 005 Gerät 002: ID 045e: 00cb Microsoft Corp. Basic Optical Mouse v2.0 etc, aber wie findet man die entsprechende tty-Datei in/dev? – lugger1

+0

Nun können Sie "dmesg | grep usb" verwenden, um den Speicherort zu erhalten, nachdem das USB-Gerät eingefügt wurde, aber Sie müssten auch diese Informationen analysieren. – wajiw

+0

@wajiw: mmesg zeigt nur die letzten Kernelmeldungen an, so dass es nicht funktioniert, wenn sie das Gerät nicht kürzlich angeschlossen haben. –

0

Sie haben libusb Ruby-Bindungen, die USB-Geräte steuern lassen: Sie können meine Schnipsel finden Sie hier.