%20%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%20%D1%81%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%BC%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%BE%D0%BC%20(wwan0)%3F.png)
Название, в общем-то, говорит само за себя, но вот мой сценарий на случай, если это имеет значение:
Я пытаюсь автоматизировать включение USB-модема в сеть при его первом подключении. С моим оборудованием и сотовой связью при первом подключении интерфейса wwan0 у него будет адрес 169.254.xx (не подключен). Соответствующий модем должен получить команду "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*
его на тот, который подходит к вашему модему, но этот вариант довольно универсален и должен подойти.