Huawei modem linux sms

Sending and receiving SMS by command line with Huawei E3131 and HiLink on a debian system

Following the question: How to send / receive sms by command line on a debian based linux system with E3131?

4 Answers 4

Step 1 — Get session id

For getting the session id I use the following command in an own shell script:

#!/bin/bash curl -b session.txt -c session.txt http://192.168.8.1/html/index.html > /dev/null 2>&1 

Step 2 — Get token

For getting the token I use the following commands, also in an own shell script:

#!/bin/bash TOKEN=$(curl -s -b session.txt -c session.txt http://192.168.8.1/html/smsinbox.html) TOKEN=$(echo $TOKEN | cut -d'"' -f 10) echo $TOKEN > token.txt 

Step 3 Part A — Send SMS

Finally a third shell script for sending the sms, which also invokes the two other scripts:

#!/bin/bash NUMBER=$1 MESSAGE=$2 ./session.sh ./token.sh LENGTH=$ TIME=$(date +"%Y-%m-%d %T") TOKEN=$( 

Step 3 Part B — Receive SMS

And for receiving the last unread sms (or, if not avaiable, the last read sms) I use the following script:

#!/bin/bash ./session.sh ./token.sh TOKEN=$( 

This is maybe not very good coding, but it works.

Bro! You are genius! It works like a sharm! You saved my day. Thanls a lot! Do u know how to send non-enlglish text?

Although Peter has explained it really nicely, but I like to have single script, and also I use it on OpenWrt routers instead of Debian.

So here is my version for sending SMS:

#!/bin/sh RESPONSE=`curl -s -X GET http://192.168.8.1/api/webserver/SesTokInfo` COOKIE=`echo "$RESPONSE"| grep SessionID=| cut -b 10-147` TOKEN=`echo "$RESPONSE"| grep TokInfo| cut -b 10-41` NUMBER=$1 SMS=$2 DATA="-1$NUMBER $SMS111-1" curl -v http://192.168.8.1/api/sms/send-sms \ -H "Cookie: $COOKIE" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \ --data $DATA 

And here is script for reading last three sms messages:

#!/bin/sh RESPONSE=`curl -s -X GET http://192.168.8.1/api/webserver/SesTokInfo` COOKIE=`echo "$RESPONSE"| grep SessionID=| cut -b 10-147` TOKEN=`echo "$RESPONSE"| grep TokInfo| cut -b 10-41` DATA="131001" curl -b $COOKIE -c $COOKIE -H "X-Requested-With: XMLHttpRequest" --data "$DATA" http://192.168.8.1/api/sms/sms-list --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml" 

Источник

Читайте также:  Linux создать ссылку на исполняемый файл

Обработка SMS-сообщений с помощью GSM-модема Huawei e1550 и smstools на Debian 9 Stretch

В поисках решения организации SMS шлюза, посредством GSM-модема (прим. Huawei E1550), наткнулся на пакет «smstools», который прекрасно справляется со своими обязанностями (отправка\получение SMS).

Рассмотрим как развернуть пакет «smstools» на Debian 9 Stretch и настроить его на GSM-модема Huawei e1550 (так же тестировал ниже описанное на e3372h с прошивкой stick).

Подготовка системы

Обновляем систему до актуального состояния:

apt-get update && apt-get upgrade

Устанавливаем необходимые для работы пакеты:

apt-get install gcc make recode usb-modeswitch minicom

Подключаем GSM-модем Huawei E1550, проверяем появились ли устройства ttyUSB*:

ls -al /dev | grep ttyUSB crw-rw---- 1 root dialout 188, 0 фев 27 11:34 ttyUSB0 crw-rw---- 1 root dialout 188, 1 фев 27 11:33 ttyUSB1 crw-rw---- 1 root dialout 188, 2 фев 27 12:37 ttyUSB2

Установка и настройка smstools

Скачиваем исходники «smstools», распаковываем их и переходим в распакованный каталог:

cd /opt wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.21.tar.gz tar -zxvf smstools3-3.1.21.tar.gz cd smstools3

Компилируем исходники и выполняем установку пакета:

После установки, сразу создадим необходимые каталоги:

mkdir -p /var/spool/sms/ mkdir -p /var/log/sms

Конфигурация «smstools» производится в файле (/etc/smsd.conf). Моя типовая конфигурация выглядит так:

devices = GSM1 outgoing = /var/spool/sms/outgoing checked = /var/spool/sms/checked incoming = /var/spool/sms/incoming failed = /var/spool/sms/failed sent = /var/spool/sms/sent logfile = /var/log/smsd.log loglevel = 5 checkhandler = /usr/local/sbin/sms_smshandler.sh [GSM1] device = /dev/ttyUSB2 incoming = high check_memory_method = 31 ussd_convert = 1 eventhandler = /usr/local/sbin/sms_smshandler.sh eventhandler_ussd = /usr/local/sbin/sms_smshandler.sh regular_run_cmd = AT+CUSD=1,"AA180C3602",15; regular_run_interval = 86400 regular_run_logfile = /var/log/sms/regular_run.log

Файл кон­фи­гу­ра­ции раз­де­лен на две части. Сна­чала идут гло­баль­ные опции, а потом сек­ция (прим. [GSM1]) с опци­ями для GSM-модема. Опи­са­ние всех опций файла кон­фи­гу­ра­ции можно найти на офи­ци­аль­ном сайте пакета «smstools».

Заострю внимание на опциях checkhandler, eventhandler, eventhandler_ussd:

  • В строке «checkhandler» зада­ется обра­бот­чик исходящих SMS-сообщений.
  • В строке «eventhandler» зада­ется обра­бот­чик вхо­дя­щих SMS-сообщений.
  • В строке «eventhandler_ussd» зада­ется обра­бот­чик отве­тов на USSD-запросы.
Читайте также:  Linux driver microsoft lifecam

В моем слу­чае я использую это один и тот же скрипт «sms_smshandler.sh», в котором описывается обработка тех или иных событий.

Теперь можно запустить демон smstools:

Отправка SMS-сообщений

Для отправки исполь­зу­ется скрипт «sendsms», который иду­щий в ком­плекте пакета «smstools».

sendsms 79999999999 'This is a test message!' sendsms 79999999999 'Это тестовое сообщение!'

В версии smstools 3.1.21, сообщения нормально отправляются на кириллице, перекодировка реализована на уровне скрипта sendsms.

Команда «sendsms» формирует текстовый файл в каталоге «outgoing», который затем будет автоматически обработан сервисом smsd и отправлен, после чего перемещен в каталог «sent».

Прием SMS-сообщений

Входящие SMS попадают в каталог «incoming». В случае если сообщение на кириллице, то оно будет закодировано в UCS2 формат, чтобы его прочесть, требуется перекодировать его (прим. в формат UFT-8).

Рассмотрим скрипт «sms_smshandler.sh», указанный в файле конфигурации (/etc/smsd.conf) в опциях «eventhandler», «eventhandler_ussd», который будет обрабатывать события.

В скрипте обрабатывается два пере­дан­ных пара­метра ($1, $2):

  • Пер­вый ($1) — это тип собы­тия, возможные зна­че­ния «CALL, RECEIVED, USSD, SENT, FAILED, REPORT».
  • Вто­рой ($2) — это имя файла с SMS-сообщением.
nano /usr/local/sbin/sms_smshandler.sh

Добавим в него следующие содержание:

#!/bin/bash case "$1" in # События при поступлении SMS-сообщения. RECEIVED) # Проверка кодировки тела входящего SMS-сообщения. # Если кодировка UCS2, то перекодируем в UTF-8 if grep "Alphabet: UCS2" $2 > /dev/null; then head -5 "$2" | grep -e "^From: " -e "^Received: " >> /var/log/sms/incoming.txt sed -e '1,/^$/ d' $2 | recode UCS-2..utf8 >> /var/log/sms/incoming.txt echo "========================================" >> /var/log/sms/incoming.txt else head -5 "$2" | grep -e "^From: " -e "^Received: " >> /var/log/sms/incoming.txt sed -e '1,/^$/ d' $2 >> /var/log/sms/incoming.txt echo "========================================" >> /var/log/sms/incoming.txt fi ;; # События при исходящих SMS-сообщениях. SENT) # Проверяем кодировку тела исходящего SMS-сообщения. # Если кодировка UCS, то перекодируем в UTF-8 if grep "Alphabet: UCS" $2 > /dev/null; then sed -e '1,/^$/ d' $2 | recode UCS-2..utf8 >> /var/log/sms/send.txt echo "========================================" >> /var/log/sms/send.txt else sed -e '1,/^$/ d' $2 >> /var/log/sms/send.txt echo "======================================= i-2">Дополнительно (возможные проблемы) 

Опишу ситуацию, с которой я столкнулся в ходе тестирования «smstools».

На GSM-модеме Huawei e1550, «smstools» не получал входящие SMS-сообщения. Проблема оказалась в том, что «smstools» обращался по-умолчанию к памяти на SIM-карте (SM), а в параметрах GSM-модема было указано использование внутренней памяти (ME).

Посмотреть текущую настройку GSM-модема, можно командой (AT+CPMS=?) выполненной в терминальном подключении к GSM-модема.

AT+CPMS=? +CPMS: ("ME","SM"),("ME","SM"),("ME","SM")

Для решения данной проблемы, можно указать в файле конфигурации (/etc/smsd.conf), в секции описания GSM-модема (прим. [GSM1]), какой тип памяти использовать:

После внесения изменений в файле конфигурации (/etc/smsd.conf), не забываем перезагрузить демона «smstools» (/etc/init.d/sms3 restart)

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

Так же в логах «smstools» заметил что сыпется много сообщений вида:

2019-05-30 16:55:05,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:55:38,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:56:01,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:56:34,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:57:07,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:57:41,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20 2019-05-30 16:58:03,3, GSM1: Unexpected input: ^BOOT:43967939,0,0,0,20

На работу GSM-модема это никак не влияло, SMS успешно отправлялись и принимались, но не нравилось что лог-файл засоряется этими сообщениями. Решил данную проблему путем отключения вывода «boot» сообщений.

В файле конфигурации (/etc/smsd.conf), в секции описания GSM-модема (прим. [GSM1]), указываем параметр:

upd.1 — от пользователя Вася решение

В конфиге (обычно /etc/smsd.conf) в основной секции добавить

eventhandler=/usr/local/bin/smstools-eventhandler

Собственно, по указанному пути /usr/local/bin/ (или любому своему) создать исполняемый файл с именем smstools-eventhandler
А в него я вписал следующее, чтобы и отправленные и полученные СМС хранились в нормальной кодировке UTF-8, а не UCS

ConvertUCS2UTF() < if sed -e ‘/^$/ q’ /dev/null; then TMPFILE=`mktemp /tmp/smsd_XXXXXX` sed -e ‘/^$/ q’ $TMPFILE sed -e ‘1,/^$/ d’ >$TMPFILE mv -f $TMPFILE $2 fi > case $1 in SENT) ConvertUCS2UTF «UCS» $2 ;; RECEIVED) ConvertUCS2UTF «UCS2» $2 ;; FAILED) # TODO: Action when failed to send message ;; *) # When unknown status is received, terminate the script with exit code 1 exit 1 ;; esac exit 0
Понравилась или оказалась полезной статья, поблагодари автора

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Источник

Оцените статью
Adblock
detector