Отправка и получение SMS с помощью командной строки с Huawei E3131 и HiLink в системе debian
Я долго искал в интернете руководство по отправке sms с помощью командной строки с Huawei E3131 и HiLink на Linux-системе, основанной на debian. Все они не работали. Похоже, что произошло обновление программного обеспечения.
HiLink показывает мне следующие версии:
- Имя Устройства: E3131
- аппаратная версия: CU1E3131IM
- Версия Программного Обеспечения: 22.521.23.00.00
- Web-Frontend-Версия: 17.100.08.00.03
Следуя за вопрос: как отправить / получить sms с помощью командной строки в системе Linux на базе debian с E3131?
есть следующий вопрос для настройки оборудования на безголовую систему на суперпользователе
3 ответов:
Необходимы 3 шага:
- Получить идентификатор сеанса
- получить токен
- отправка / получение sms
Шаг 1-Получить идентификатор сеанса
Для получения идентификатора сеанса я использую следующую команду в собственном скрипте оболочки:
#!/bin/bash curl -b session.txt -c session.txt http://192.168.8.1/html/index.html > /dev/null 2>&1
Шаг 2-получить токен
Для получения токена я использую следующие команды, также в собственном скрипте оболочки:
#!/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
Шаг 3 часть а-отправить SMS
Наконец третий shell скрипт для отправки sms, который также вызывает два других скрипта:
#!/bin/bash NUMBER=$1 MESSAGE=$2 ./session.sh ./token.sh LENGTH=${#MESSAGE} TIME=$(date +"%Y-%m-%d %T") TOKEN=$(<token.txt) SMS="<request><Index>-1</Index><Phones><Phone>$NUMBER</Phone></Phones><Sca/><Content>$MESSAGE</Content><Length>$LENGTH</Length><Reserved>1</Reserved><Date>$TIME</Date></request>" echo $SMS curl -v -b session.txt -c session.txt -H "X-Requested-With: XMLHttpRequest" --data "$SMS" http://192.168.8.1/api/sms/send-sms --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml"Использование:
command phonenumber "text"
Шаг 3 часть B-получение SMS
А для получения последнего непрочитанного sms (или, если не доступно, последнего прочитанного sms) я использую следующий скрипт:
#!/bin/bash ./session.sh ./token.sh TOKEN=$(<token.txt) DATA="<request><PageIndex>1</PageIndex><ReadCount>1</ReadCount><BoxType>1</BoxType><SortType>0</SortType><Ascending>0</Ascending><UnreadPreferred>1</UnreadPreferred></request>" curl -b session.txt -c session.txt -H "X-Requested-With: XMLHttpRequest" --data "$DATA" http://192.168.8.1/api/sms/sms-list --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml"
Это, возможно, не очень хорошее кодирование, но оно работает.
Хотя Питер объяснил это очень хорошо, но мне нравится иметь один скрипт, а также я использую его на маршрутизаторах OpenWrt вместо Debian.
Итак, вот моя версия для отправки 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="<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$NUMBER</Phone></Phones><Sca></Sca><Content>$SMS</Content><Length>11</Length><Reserved>1</Reserved><Date>-1</Date></request>" 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А вот скрипт для чтения последних трех смс сообщений:
#!/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="<request><PageIndex>1</PageIndex><ReadCount>3</ReadCount><BoxType>1</BoxType><SortType>0</SortType><Ascending>0</Ascending><UnreadPreferred>1</UnreadPreferred></request>" 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"
Я сделал скрипт python для моего HUAWEI E3276:
import requests, sys import xml.etree.ElementTree as ET msg = "From python" phone = "PHONE_NUMBER" #To fill ip = "192.168.1.1" #Dongle ip #Get token r = requests.get("http://%s/api/webserver/token" % ip) root = ET.fromstring(r.content) token = root[0].text print "token", token #Send sms headers = { "__RequestVerificationToken": token, "Content-Type": "text/xml" } data = "<request><Index>-1</Index><Phones><Phone>%s</Phone></Phones><Sca/><Content>%s</Content><Length>%d</Length><Reserved>1</Reserved><Date>$TIME</Date></request>" % ( phone, msg, len(msg) ) r = requests.post( "http://%s/api/sms/send-sms" % ip, data=data, headers=headers ) print "send-sms", r.headers, r.content
Comments