どの USB デバイス ファイル (/dev/ttyUSB0) が特定のインターフェイス (wwan0) に関連しているかを知る方法はありますか?

どの USB デバイス ファイル (/dev/ttyUSB0) が特定のインターフェイス (wwan0) に関連しているかを知る方法はありますか?

タイトルがほぼすべてを物語っていますが、関連性がある場合に備えて私のシナリオを以下に示します。

USB モデムを最初に接続したときにオンラインにする処理を自動化しようとしています。私のハードウェアと携帯電話サービスでは、wwan0 インターフェイスが最初に接続されると、169.254.xx (未接続) アドレスが割り当てられます。対応するモデムは、デバイス ファイル経由で "AT^NDISDUP=1,1" コマンドを受信して​​からでないと、オンラインになりません。新しい接続のインターフェイス名にアクセスできる if-up フックを作成しましたが、それらを対応するデバイス ファイルにリンクする方法がわかりません。

もしこれが不可能だったり、単に良い方法ではない場合は、他のアイデアもぜひお聞かせください。 どうぞよろしくお願いいたします。

アップデート

Kamil の提案に従って、sysfs を詳しく調べました。デバイス関連のエントリ (/sys/devices/platform/.../.../ttyUSB0) とインターフェイス関連のエントリ (/sys/class/net/wwan0) がいくつか見つかりましたが、一方を使用して他方を取得する方法がまだわかりません。udevadm を使用してさまざまなエントリから情報を取得していますが、ほとんどの場合、何を見ているのかよくわかりません。

答え1

私は次のスクリプトを使用してこれを実現するために picocom v3 を使用しています:

#!/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

/dev/ttyUSB*モデム デバイスに適合するものに置き換えることができますが、これは非常に汎用的なので機能するはずです。

関連情報