%20%E8%88%87%E7%89%B9%E5%AE%9A%E4%BB%8B%E9%9D%A2%20(wwan0)%20%E7%9B%B8%E9%97%9C.png)
標題幾乎說明了一切,但這是我的場景,以防相關:
我正在嘗試在 USB 數據機首次插入時自動使其聯機。對應的數據機需要透過其設備檔案接收“AT^NDISDUP=1,1”命令才能上線。我編寫了一個 if-up 掛鉤,可以在其中存取新連接的介面名稱,但我不知道如何將它們連結到相應的裝置檔案。
如果這是不可能的或只是不是一個好的做事方式,我也願意聽取其他想法。非常感謝。
更新
根據卡米爾的建議,我深入研究了 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*
用任何適合您的數據機設備的設備進行替換,但這一個非常通用並且應該可以工作。