%20zu%20einer%20bestimmten%20Schnittstelle%20(wwan0)%20geh%C3%B6rt%3F.png)
Der Titel sagt eigentlich schon alles, aber hier ist mein Szenario, falls es relevant ist:
Ich versuche, das Onlineschalten eines USB-Modems zu automatisieren, wenn es zum ersten Mal angeschlossen wird. Mit meiner Hardware und meinem Mobilfunkdienst hat die wwan0-Schnittstelle beim ersten Verbinden die Adresse 169.254.xx (nicht verbunden). Das entsprechende Modem muss über seine Gerätedatei einen Befehl „AT^NDISDUP=1,1“ empfangen, bevor es online geht. Ich habe einen if-up-Hook geschrieben, mit dem ich Zugriff auf die Schnittstellennamen neuer Verbindungen habe, aber ich weiß nicht, wie ich sie mit den entsprechenden Gerätedateien verknüpfen kann.
Ich bin auch offen für andere Ideen, wenn dies unmöglich ist oder einfach keine gute Vorgehensweise darstellt. Vielen Dank.
AKTUALISIEREN
Gemäß Kamils Vorschlag habe ich mich in sysfs vertieft. Ich habe verschiedene gerätebezogene Einträge (/sys/devices/platform/.../.../ttyUSB0) und schnittstellenbezogene Einträge (/sys/class/net/wwan0) gefunden, aber ich finde immer noch keine Möglichkeit, mit einem der Einträge den anderen abzurufen. Ich verwende udevadm, um Informationen aus verschiedenen Einträgen abzurufen, aber ich verstehe die meiste Zeit nicht wirklich, was ich mir da ansehe.
Antwort1
Ich verwende Picocom v3, um dies mit dem folgenden Skript zu erreichen:
#!/usr/bin/env bash
for tty in $(ls /dev/ttyUSB*); do
echo "Checking $tty"
picocom -qrX -b 9600 $tty
sleep 1
result=$(echo "AT&F" | picocom -qrix 1000 $tty)
if [ "$result" = "AT&F" ]; then
echo "Found AT compatible modem at $tty"
else
echo "No AT compatible modem at $tty"
fi
done
Sie können es /dev/ttyUSB*
durch alles ersetzen, was zu Ihrem Modemgerät passt, aber dieses ist ziemlich allgemein und sollte funktionieren.