Меню Рубрики

Как отправить смс сообщение в linux имея usb модем

Приём и обработка SMS-сообщений на Linux-машине

В одном из наших свежих проектов команде разработчиков была поставлена задача собрать максимально реальные контактные данные о пользователях нашего сайта. Жаркое обсуждение правильных и неправильных форм регистрации, одно- и двушаговые, дополнение информации по мере пользования сайтом… Казалось поток идей не остановится. Однако ни одна из них не гарантировала, что в результате мы не получим кучу никчемных данных. Валидировать? Можно, но разве все предусмотришь? Активация учетной записи через почтовый ящик для его валидации? Но куча сервисов типа 10 Minute Mail сводят на нет эффект. К тому же, специфика проекта не позволяла слишком растягивать процесс регистрации. Решено было, что пользователь должен зайти, сделать своё дело, а потом уже активировать или нет свою учетную запись. В конце концов прозвучала фраза «А давайте активировать по SMS!». Поиск провайдеров, изучение прайс-листов и отказ от идеи взвалить обработку SMS на стороннюю контору… Стало понятно, что принимать и обрабатывать их придется самим.

Скромный опыт работы с VOIP/Asterisk и подбора оборудования для VOIP-шлюза имелся. Полез по старым ссылкам к китайским братьям искать SMS-gateway. Но во-первых время поджимало, во-вторых по опыту работы с ними с первого раза редко что-то выходит, поэтому стало интересно, сможет ли обычный USB GSM-модем справиться. И, забегая вперед, скажу что это решение было правильным. По крайней мере на данном этапе.

Настройка сервера

Итак, ко мне в руки попал модемчик Huawei E1750 (HSPA USB Stick) с контрактом. Первое с чем столкнется человек взявшийся за подобную задачу, это то, что все свежие модели GSM-модемов, в угоду пользователям Windows, опознаются в системе сначала как устройство хранения данных (SCSI CD-ROM). С него запускается autorun, который установит драйвера и переключит модем в режим модема (о как!). Сразу как я узнал это, я решил «приехали». Однако еще полчаса, и была найдена утилита usb_modeswitch, которая выполняет переключение режимов модема. Только после этого модем заработает по его прямому назначению. Запускается и настраивается она просто, тут писать особо нечего.

Ну, с богом! Информации к этому моменту уже было нарыто не сказать чтоб много, но достаточно, чтобы копать в нужном направлении. Существующие решения были отфильтрованы по признаку «работает как демон», в итоге остался один кандидат — SMS Server Tools. Нужно отметить, что оригинальный пакет уже не развивается, но его продолжение SMS Server Tools 3 не только развивается, но и отлично поддерживается своим создателем Mr. Keijo «Keke» Kasvi.

К сожалению, в моей любимой Gentoo не нашлось ebuild-а для свежей версии, последняя имеющаяся версия 2.2.20. Но, недолго погуглив, я нашел уже готовый ebuild для 3-й версии, который и скомпилировал после небольшой его правки. На данный момент у меня установлена и стабильно работает версия 3.1.14.

Как оказалось, настройка smstools является настолько простой, что практически с начальным конфигом можно уже начинать принимать сообщения. Нет, ну конечно, если у вас симка закрыта пин-кодом, Вам его придется добавить в конфигурацию, но это делается очень просто.

Структура файла конфигурации тоже понятна до безобразия (viva unix-way!). В начале файла прописываем глобальные настройки демона, а затем в секциях описываем настройки наших устройств:
# Глобальные настройки демона
.
.

# Наш модем и его настройки
[Huawei E1750 ]
.

# И еще одно устройство, если оно у нас есть, со своими настройками
[AnotherModem]
.

Глобальные настройки

Самый важный параметр, это какие устройства демон будет опрашивать на предмет наличия новых сообщений. Если у вас всего одно устройство, как у меня, просто пропишите devices = HuaweiE1750 , если их у Вас несколько, перечислите их тут через запятую.

Еще два важных параметра — это user = smsd и group = sms . Людям, знакомым с линукс, объяснять их значение не надо, я же ограничусь лишь напоминанием о правильных правах на все ресурсы, к которым демон должен иметь доступ. Ну и упомяну про такие инструкции, как pidfile = /var/run/smsd/smsd.pid , logfile = /var/log/smsd/smsd.log , значение которых тоже должно быть понятно. Кстати, на момент отладки рекомендую вставить в конфигурацию также инструкцию loglevel = 7 , это позволит Вам отслеживать, что же происходит внутри демона. В дальнейшем я выставил loglevel = 5 .

Настройки модема

В принципе, тут тоже, как было обещано, все просто. Однако я столкнулся с некоторыми проблемами, из-за которых я собственно и решился поделиться с Вами информацией.

Одной проблемой стало жгучее желание модема все время соскочить на новое устройство. Один раз он определялся как /dev/ttyUSB0 , в другой раз под другим номером. Такое положение дел не устраивало меня. Поэтому, я стал искать как писать udev правила для устройств. Однако, когда я уже был готов внести свои изменения, обнаружилось, что ebuild usb_modeswitch уже сделал это за меня добавив в систему файл /lib64/udev/rules.d/40-usb_modeswitch.rules , согласно которому в системе появлялся симлинк на девайс по адресу /dev/gsmmodem . Его мы и пропишем в конфигурации.

Второй проблемой стало зависание модема время от времени. К сожалению, вычитывать матчасть времени уже не было, да и гугл выдал такое количество вариантов, что пробовать их все не имело смысла. Поэтому, не особо рассчитывая на помощь, я пополз на форум smstools3. Каковы же были мои удивление и радость, когда keke ответил на мой пост через жалких 2-3 часа. Нет, точного решения он не давал, однако две строки которые он рекомендовал добавить в конфиг раз и навсегда избавили меня от зависаний. Для меня до сих пор остаётся загадкой, где брать значения для них, я не нашел технической документации по модему:
check_memory_method = 1
memory_start = 0

Ну, и третьей проблемой, из-за которой затевался весь сыр-бор, стало написание обработчика SMS. Для этого в конфиг была добавлена инструкция eventhandler = /usr/local/scripts/activate , внутри которого происходила отправка на сервер проекта запроса на активацию учетной записи. Скрипт, получает два параметра — тип события и файл сообщения. Выдергивает из него нужные нам данные, и отсылает на сервер.

Итого, получили вот такой короткий конфиг:
devices = Huawei
loglevel = 5

user = smsd
group = sms
logfile = /var/log/smsd/smsd.log
infofile = /var/run/smsd/smsd.running
pidfile = /var/run/smsd/smsd.pid

alarmlevel = 7
alarmhandler = /usr/local/scripts/activate/smsd-alarm

[Huawei]
device = /dev/gsmmodem
baudrate = 115200
pin = 1111
incoming = high
cmgl_value = 0
check_memory_method = 1
memory_start = 0
eventhandler = /usr/local/scripts/activate

Неожиданный profit

Изначально форма регистрации содержала поле Мобильный телефон — это было в требованиях проекта. Пришедшее SMS должно было быть отправлено с указанного телефона, и учетная запись с этим телефоном активировалась. Однако, как оказалось, пользователи становятся в тупик, когда им в сообщении ничего не надо писать. Сначала после регистрации появилась инструкция «Отправьте на номер 12345678 сообщение с текстом «F»». Потом родилась другая, гениальная как сейчас кажется, идея: из формы было убрано поле Мобильный телефон, после короткой регистрации (Имя, Фамилия, E-mail/login, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.

Источник

Отправьте SMS-сообщение с командной строки Ubuntu Linux через модем GSM

Отправьте SMS-сообщение с командной строки Ubuntu Linux через модем GSM

Хотите узнать, как отправлять SMS-сообщения из командной строки Ubuntu Linux? В этом уроке мы расскажем вам все шаги, необходимые для отправки SMS-сообщений, используя только командную строку компьютера под управлением Ubuntu Linux и USB-модема USB.

• Версия Ubuntu: 18.04
• USB-модем GSM: DWM-221

Этот учебник будет работать только в том случае, если вы используете USB-модем USB.

Будьте осторожны, некоторые устройства выглядят как USB-модем, но являются USB-маршрутизаторами, такими как DWR-910.

Список оборудования:

В следующем разделе представлен список оборудования, используемого для создания этого учебника Ubuntu.

USB GSM Modem — DWM-221

Все перечисленные выше аппаратные средства можно найти на веб-сайте Amazon.

Ubuntu Playlist:

На этой странице мы предлагаем быстрый доступ к списку видеороликов, связанных с установкой Ubuntu.

Не забудьте подписаться на наш канал YouTube, названный FKIT.

Учебное пособие по Ubuntu:

На этой странице мы предлагаем быстрый доступ к списку руководств по установке Ubuntu.

Учебник — отправьте SMS-сообщение из командной строки Ubuntu Linux

Во-первых, нам нужно подключить USB-модем USB к компьютеру под управлением Ubuntu Linux.

После подключения USB-модема USB вам необходимо проверить, обнаружена ли система устройством.

Используйте следующую команду, чтобы проверить, обнаружен ли системой USB-модем USB.

Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 005: ID 2001:a406 D-Link Corp. ***HERE***

Система обнаружила, что к компьютеру подключено USB-устройство от Dlink.

Теперь нам нужно проверить, какой тип устройства ядро Linux назначено устройству.

Используйте следующую команду для проверки типа устройства, назначенного системой.

[ 615.241221] usb 3-1: USB disconnect, device number 4

[ 643.023683] usb 3-1: new high-speed USB device number 5 using xhci_hcd

[ 643.173168] usb 3-1: New USB device found, idVendor=2001, idProduct=a406

[ 643.173169] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 643.173170] usb 3-1: Product: Mobile Connect

[ 643.173171] usb 3-1: Manufacturer: Mobile Connect

[ 643.173172] usb 3-1: SerialNumber: 0123456789ABCDEF

[ 643.173939] usb-storage 3-1:1.0: USB Mass Storage device detected

[ 643.174216] scsi host6: usb-storage 3-1:1.0

[ 644.188294] scsi 6:0:0:0: Direct-Access SD Storage 0000 PQ: 0 ANSI: 2

[ 644.188982] scsi 6:0:0:1: CD-ROM Mass Storage 0000 PQ: 0 ANSI: 2

[ 644.189313] sd 6:0:0:0: Attached scsi generic sg1 type 0

[ 644.190462] sd 6:0:0:0: [sdb] Unit Not Ready

[ 644.190465] sd 6:0:0:0: [sdb] Sense Key : Illegal Request [current] [ 644.190467] sd 6:0:0:0: [sdb] Add. Sense: Invalid command operation code

[ 644.190785] sr 6:0:0:1: [sr0] scsi-1 drive

[ 644.190915] sr 6:0:0:1: Attached scsi CD-ROM sr0 ***

Система обнаружила USB-модем USB в качестве единства CDRom с именем sr0.

Используйте следующую команду для извлечения единства CDRom sr0.

После извлечения поддельного дисковода CDRom подождите 10 секунд и снова используйте команду dmesg.

[ 1270.366092] usb 3-1: New USB device found, idVendor=2001, idProduct=7e19

[ 1270.366094] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 1270.366096] usb 3-1: Product: Mobile Connect

[ 1270.366098] usb 3-1: Manufacturer: Mobile Connect

[ 1270.366099] usb 3-1: SerialNumber: 0123456789ABCDEF

[ 1270.367882] option 3-1:1.0: GSM modem (1-port) converter detected

[ 1270.368033] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0 ***HERE***

[ 1270.368183] option 3-1:1.1: GSM modem (1-port) converter detected

[ 1270.368299] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1 ***HERE***

[ 1270.368437] option 3-1:1.2: GSM modem (1-port) converter detected

[ 1270.368541] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2 ***HERE***

[ 1270.368681] option 3-1:1.3: GSM modem (1-port) converter detected

[ 1270.368787] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB3 ***HERE***

Используйте следующие команды для установки необходимого программного обеспечения.

# apt-get update
# apt install wvdial

Используйте команду wvdialconf для обнаружения связи GSM.

Scanning your serial ports for a modem.

ttyS0 : ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyS0 : ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud
ttyS0 : ATQ0 V1 E1 — and failed too at 115200, giving up.
Modem Port Scan : S1 S2 S3 S4 S5 S6 S7 S8
Modem Port Scan : S9 S10 S11 S12 S13 S14 S15 S16
Modem Port Scan : S17 S18 S19 S20 S21 S22 S23 S24
Modem Port Scan : S25 S26 S27 S28 S29 S30 S31
ttyUSB0 : ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB0 : ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB0 : ATQ0 V1 E1 — and failed too at 115200, giving up.
ttyUSB1 : ATQ0 V1 E1 — OK
ttyUSB1 : ATQ0 V1 E1 Z — OK
ttyUSB1 : ATQ0 V1 E1 S0=0 — OK
ttyUSB1 : ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB1 : ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB1 : ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB1 : Modem Identifier: ATI — Manufacturer:
ttyUSB1 : Speed 9600: AT — OK
ttyUSB1 : Max speed is 9600; that should be safe.
ttyUSB1 : ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB2 : ATQ0 V1 E1 — OK
ttyUSB2 : ATQ0 V1 E1 Z — OK
ttyUSB2 : ATQ0 V1 E1 S0=0 — OK
ttyUSB2 : ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB2 : ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB2 : ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB2 : Modem Identifier: ATI — Manufacturer:
ttyUSB2 : Speed 9600: AT — OK
ttyUSB2 : Max speed is 9600; that should be safe.
ttyUSB2 : ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB3 : ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB3 : ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB3 : ATQ0 V1 E1 — and failed too at 115200, giving up.

Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1: Speed 9600; init «ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0» ***HERE***
ttyUSB2: Speed 9600; init «ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0» ***HERE***

Вот краткое описание того, что команда wvdialconf обнаружила:

• Порт ttyUSB1 с использованием скорости 9600 и AT-связи в порядке
• Порт ttyUSB2 с использованием скорости 9600 и AT-связи в порядке

Теперь мы знаем, что для отправки SMS может работать один из следующих интерфейсов:

• Порт ttyUSB1
• Порт ttyUSB2

Используйте следующую команду для установки программного обеспечения Gammu.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как открыть флешку в терминале linux
  • Как открыть флешку в linux mint
  • Как открыть файлы linux в windows
  • Как открыть файл через терминал в linux
  • Как открыть файл через консоль linux