Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3387 / 105
Регистрация: 24.05.2011
Сообщений: 14,618
Записей в блоге: 8

Вывести Vid:Pid USB модема

10.02.2020, 18:39. Показов 5788. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется практическая задача: написать скрипт автонастройки подключения USB-модемов
В числе прочего для начала требуется узнать vid:pid воткнутого модема.

Итак, задача сводится к выводу и фильтрации значений выхлопа lsusb
Модемки у нас бывают zte и huawei (могут быть и другие прочие, но в данный момент и в текущем контексте это пока не суть важно).
Полный выхлоп lsusb выглядит примерно вот так:
Bash
1
2
3
4
5
6
7
8
lsusb
Bus 001 Device 003: ID 19d2:2002 ZTE WCDMA Technologies MSM
Bus 001 Device 002: ID 04f2:b1d8 Chicony Electronics Co., Ltd 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
И из этого всего нужно (для данного случая!) вытащить только 19d2:2002, определив искомую строку по наличию в ней ZTE или Huawei.
То бишь, если я выполняю
Bash
1
lsusb | grep -i zte | awk '{print $6}'
то для данного случая оно мне выдаст всё правильно - 19d2:2002
Но как мне подставить в эту строку другой паттерн для grep?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2020, 18:39
Ответы с готовыми решениями:

Вывести процессы PID которых больше 2000
Утро доброе, как можно вывести процессы с PID'ом больше, например, 2000, используя команду ps или другую. Заранее спасибо

Как вывести информацию о процессах, PID которых больше заданного?
Есть следующая задача: Сгенерировать следующую информацию о m (m>2) процессах системы, имеющих значение идентификатора больше...

Не могу получить PID,VID устройства USB
Linux, Qt, hidapi/hidraw Пишу некую программу, которая должна работать с несколькими устройствами. Использую библиотеку hidapi-hidraw...

10
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
10.02.2020, 18:43
а что мешает в шаблон подставить именно 19d2:2002 ?
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3387 / 105
Регистрация: 24.05.2011
Сообщений: 14,618
Записей в блоге: 8
10.02.2020, 18:56  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
а что мешает в шаблон подставить именно 19d2:2002
Мне и предстоит узнать эти цифирки в зависимости от того, какой модели воткнут модем - у каждой модели они свои. И мне эти цифры нужны именно для того, чтобы я по ним обращался к конкретному файлу.
То бишь, я их изначально не знаю. Мне нужно их получить из модемки.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
10.02.2020, 19:14
вообще-то есть в линуксах такая прога - usb-modeswitch. может стоит почитать о ней, и задача угадывания отпадет сама собой?
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
10.02.2020, 20:17
Лучший ответ Сообщение было отмечено NeoMatrix как решение

Решение

Да сколько угодно шаблонов или я не правильно поняла?
Bash
1
lsusb | grep -i 'zte\|huawei' | cut -d' ' -f6
Добавлено через 10 минут
Bash
1
awk -vIGNORECASE=1 '/zte|huawei/ {print $6}'
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3387 / 105
Регистрация: 24.05.2011
Сообщений: 14,618
Записей в блоге: 8
10.02.2020, 22:47  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
вообще-то есть в линуксах такая прога - usb-modeswitch
Вот для её настройки для конкретного свистка мне этот скрипт и требуется - я хочу автоматизировать весь процесс от и до.
Собственно, сначала в скрипте с временным (моим мобильным подключением, запуск скрипта от рута) я ставлю
Bash
1
apt install ppp usb-modeswitch wvdial
После чего втыкается свисток и приложению usb-modeswitch требуется подсунуть строку инициализации модема, которая (сюрприз!) для каждой модельки свистка своя.
Да, эта строка прописана во вложенном в архив /usr/share/usb_modeswitch/configPack.tar.gz файле с именем vid:pid, которые соответствуют модели свистка.
И именно для того, чтобы обратиться к нужному из множества файлов в архиве мне и требуется определять эти самые vid:pid
После этого данные из файла, включая строку MessageContent="5553424312345678000000000000061e000000000000000000000000000000", которой там, к слову, может и не оказаться, как это случилось у меня неделю назад, нужно прописать в файл /etc/usb_modeswitch.conf, после чего прописать в ещё один конфиг /etc/wvdial.conf соответствующие этой же модели (правда, более касаемые метода дозвона на узел опсоса) свистка данные
Code
1
2
3
4
5
6
7
8
9
10
11
12
[Dialer 3g]
Init1 = ATZ
Init2 = ATQ
Init3 = AT+CGDCONT=1,"IP","internet"
Stupid Mode = 1
Modem Type = Analog Modem
ISDN = 0
Phone = *99#
Modem = /dev/ttyUSB0
Username = { }
Password = { }
Baud = 460800
И в завершение - парой команд пнуть на запуск свисток.
Ну и напоследок, если всё удачно завершилось и появилось подключение - прописать в крон последнюю команду на запуск при включении и раз в несколько минут - чтобы автоматически устанавливалось\возобновлялось подключение при включении и/или обрыве соединения.

И вот всё это я и хочу уложить в один скрипт. И именно для выполнения всей этой чехарды мне и нужно прежде всего остального получить эти самые vid:pid свистка.

nezabudka, сердечное спасибо!
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
10.02.2020, 22:56
Цитата Сообщение от NeoMatrix Посмотреть сообщение
требуется подсунуть строку инициализации модема, которая (сюрприз!) для каждой модельки свистка своя.
главный сюрприз, как мне кажется, в "недочитанности". у проги есть своя база (которая (по крайней мере в бубунтах) ставится отдельным пакетом), и она сама ее шерстит на предмет совпадений. а "левые телодвижения" нужны лишь для ("типа сильно новых") моделей, не включенных в "старую имеющуюся" базу данных...
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3387 / 105
Регистрация: 24.05.2011
Сообщений: 14,618
Записей в блоге: 8
10.02.2020, 23:07  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
а "левые телодвижения" нужны лишь для ("типа сильно новых") моделей, не включенных в "старую имеющуюся" базу данных
Пусть так, но у меня неделю назад именно вот такой левый случай и оказался. Посему мне и нужно вытащить исходные отправные данные, которые, если не отработал в нормальном режиме основной вариант, будут использоваться для поиска по имеющемуся у меня файлу, где записаны эти самые данные для левых случаев.
Короче: я выбираю эту подстроку из выхлопа lsusb и далее её использую в скрипте для настройки и подключения ЛЮБОГО свистка.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
12.02.2020, 13:11
Bash
1
sed -nr '/zte|huawei/I s/.*\s([[:xdigit:]]*:[[:xdigit:]]*).*/\1/p'
1
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
12.02.2020, 17:53
Bash
1
grep -ioP '\S+:\S+\s*(?=huawei|zte)'
Добавлено через 23 минуты
Bash
1
grep -ioP '\S+:\S+(?=\s(huawei|zte))'
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
13.02.2020, 12:14
nezabudka, не стоит увлекаться перловыми регэксами
Code
1
2
3
-P, --perl-regexp
      Interpret the pattern as a Perl-compatible regular expression (PCRE).  This is experimental and grep -P
      may warn of unimplemented features.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2020, 12:14
Помогаю со студенческими работами здесь

Нужна момощь в получении VID и PID usb накопителя
Здравствуйте, уважаемые форумчане. Уже несколько дней пытаюсь решить задачу получения VID и PID usb накопителя используя winapi. ...

RegisterDeviceNotification / WM_DEVICECHANGE / VID _ PID
Не могу подписаться на WM_DEVICECHANGE какие-то неизвестные ошибки не пойму что не так virtual void WndProc(Message% m) override ...

Отключение оборудования по vid\pid
Приветствую. Может кто занимался таки делом, хоть чуток информации. Дело в том что это usb hub например (вложение). С USB девайсом...

OpenCVSharp VID/PID камеры
Здравствуйте. Такой вопрос: Как в OpenCVSharp можно различать камеры? Какой функцией можно выяснить Vid и Pid камеры? Простые камеры...

Получить VID и PID юсб флешки
Всем привет, собственно необходимо получить информацию о флешке хотя бы VID и PID номера... Пробовал через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru