Beobachten Sie die Hersteller-ID, die Produkt-ID und die Revision der USB-Verbindungen

8

Ich möchte einfach alle Geräte beobachten, die zu meinem System hinzugefügt und daraus entfernt wurden, und deren USB-Hersteller-ID, Produkt-ID und Revision sowie andere relevante Informationen anzeigen. Wie kann ich das unter Linux machen? Gibt es eine Protokolldatei, die ich kann tail -foder erfordert dies etwas anderes?

Naftuli Kay
quelle
Ist dmesgdetailliert genug?
Rany Albeg Wein
Ich sehe keine Ausgabe von tailing / var / log / dmesg. Einstecken / Entfernen = nichts.
Naftuli Kay
1
@RanyAlbegWein dmesgzeigt nicht alle USB-Ereignisse an, sondern nur diejenigen, für die ein Handler vorhanden ist und die aufgerufen werden printk().
Chris Down
Gibt es also eine Möglichkeit, udev nach Informationen zu durchsuchen?
Naftuli Kay

Antworten:

6

Diese Informationen werden in den Kernel-Protokollen angezeigt - normalerweise in /var/log/kern.logoder /var/log/syslogoder einer anderen Datei (abhängig von Ihrer Syslog-Konfiguration haben unterschiedliche Distributionen unterschiedliche Standardeinstellungen).

Wenn Sie etwas vorgefiltert haben möchten, können Sie eine udev-Regel hinzufügen. Erstellen Sie eine Datei, /etc/udev/rules.d/tkk-log-usb.rulesdie Folgendes enthält:

SUBSYSTEM=="usb", RUN+="/usr/local/sbin/tkk-usb-event"

Die Umgebung des Programms enthält viele Variablen, die das Gerät beschreiben, darunter:

  • ACTION( addoder remove)
  • DEVICE ist ein Pfad zum Gerät, wenn Sie darauf zugreifen möchten
  • ID_MODEL_IDund ID_VENDOR_IDenthalten die Modell- und Lieferanten-ID ID_MODELsowie ID_VENDORden entsprechenden Text
  • ID_SERIAL enthält die Seriennummer des Geräts (falls verfügbar)
Gilles 'SO - hör auf böse zu sein'
quelle
10

Sie können das tun mit udevadm:

udevadm monitor --subsystem-match=usb --property

oder

udevadm monitor --subsystem-match=usb --property --udev

um nur udevEreignisse zu filtern . Wenn Sie möchten grepfür eine bestimmte Eigenschaft sind Sie in der un-Puffer haben udevadmAusgang (mit Werkzeugen wie stdbuf, script, unbuffer...):

stdbuf -i 0 -o 0 -e 0 udevadm monitor --subsystem-match=usb --property --udev | grep DEVPATH

oder

script -q /dev/null -c "udevadm monitor --subsystem-match=usb --property --udev" | grep PRODUCT

oder

unbuffer udevadm monitor --subsystem-match=usb --property --udev | grep -E 'ID_VENDOR_ID|ID_MODEL_ID'
don_crissti
quelle
0

Wenn Sie nur die aktuell angeschlossenen USB-Geräte überwachen möchten, watch --no-title lsusbkönnte dies genau das Richtige für Sie sein.

Frederik Deweerdt
quelle