1

Temat: HUAWEI E3372 i wysyłanie SMSów

Witam,
Właśnie uruchomiłem modem E3372 na ruterze TPLink TP1043 - internet śmiga.
Mam jednak problem z wysyłaniem SMSów.
Czy jest jakiś sposób na ich programowe wysyłanie, z poziomu samego rutera?
Jakaś komenda, API HiLink w ruterze, itp?

Z tego co widzę nie mam żadnego urządzenia /dev/cdcXXX, ani dev/ttyUSBX, z którego mógłbym ewentualnie skorzystać:

root@Gargoyle:~# ls /dev
bsg        mtd0       mtd4       mtdblock4  random     ttyS12     ttyS6
bus        mtd0ro     mtd4ro     mtdblock5  sda        ttyS13     ttyS7
console    mtd1       mtd5       net        shm        ttyS14     ttyS8
full       mtd1ro     mtd5ro     null       tty        ttyS15     ttyS9
fuse       mtd2       mtdblock0  port       ttyS0      ttyS2      urandom
kmsg       mtd2ro     mtdblock1  ppp        ttyS1      ttyS3      watchdog
log        mtd3       mtdblock2  ptmx       ttyS10     ttyS4      zero
mem        mtd3ro     mtdblock3  pts        ttyS11     ttyS5

2

Odp: HUAWEI E3372 i wysyłanie SMSów

W trybie Hilink, nie ma.

3

Odp: HUAWEI E3372 i wysyłanie SMSów

Tu jest więcej:
http://www.bez-kabli.pl/viewtopic.php?t … p;start=15
Niby problem SMSów rozwiązano,  ale zadania są podzielone co do wydajności...

4

Odp: HUAWEI E3372 i wysyłanie SMSów

A jednak da się. Trzeba wykorzystać dwa API w tym modemie:
Najpierw pobieramy token (cokolwiek by to znaczyło, bo jego znaczenia nie udało mi się znaleźć, choćby na jak długo starcza jeden token):

curl "http://192.168.8.1/api/webserver/token"
<?xml version="1.0" encoding="UTF-8"?>
<response>
<token>695328588</token>
</response>

I teraz komponujemy wysyłanie SMSa, wrzucając otrzymany token jako __RequestVerificationToken:

curl "http://192.168.8.1/api/sms/send-sms" -H "__RequestVerificationToken: 695328588" --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>xxxxxxxxx</Phone></Phones><Sca></Sca><Content>ala ma kota</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"

5 (edytowany przez areq 2015-12-15 18:43:06)

Odp: HUAWEI E3372 i wysyłanie SMSów

na moim E5373s-155 z firmware 21.295.03.00.1202 (z plusa)
po pobraniu tokena trzeba z nim się jeszcze zalogować

curl "http://192.168.8.1/api/user/login" \
-H "__RequestVerificationToken: 695328588" \
--data "<request><Username>admin</Username><Password>YWRtaW4=</Password></request>"

Password to base64 z hasła ( w przykładzie admin)

i dopiero teraz można wołać send-sms

6

Odp: HUAWEI E3372 i wysyłanie SMSów

Mam w robocie jakiś nowy soft hilinka z autoryzacją to sprawdzę. A wiesz może jak sprawdzić czy autoryzacja przez user/pass jest w ogóle wymagana?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez areq 2015-12-15 19:25:48)

Odp: HUAWEI E3372 i wysyłanie SMSów

u mnie bez logowania dostaję na send-sms error 100003 - brak uprawnień

mam jeszcze HUAWEI E5573, ale tam jest jeszcze inaczej nie ma /api/webserver/token tylko /api/webserver/SesTokInfo, ale jeszcze sms mi się nim wysłać nie udało, nie przechodzę logowania - dostaję 108006 nieprawidłowa nazwa użytkownika lub hasło

8 (edytowany przez Cezary 2015-12-18 14:52:10)

Odp: HUAWEI E3372 i wysyłanie SMSów

Mam to samo - nie działa. E3372 hilink z softem 17.100.11.03.1185/22.300.09.00.1185 i dostaję to samo - 108006

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9 (edytowany przez areq 2015-12-18 14:49:17)

Odp: HUAWEI E3372 i wysyłanie SMSów

na E3372:
HardwareVersion:CL2E3372HM
SoftwareVersion:22.200.03.00.17
WebUIVersion:17.100.08.00.17

wysyłam tak:

#!/bin/sh

cc=`curl -s -X GET http://192.168.8.1/api/webserver/SesTokInfo`
c=`echo "$cc"| grep SessionID=| cut -b 10-147`
t=`echo "$cc"| grep TokInfo| cut -b 10-41`

curl -v http://192.168.8.1/api/sms/send-sms \
 -H "Cookie: $c" -H "__RequestVerificationToken: $t" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
 --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>605999888</Phone></Phones><Sca></Sca><Content>ala ma kota</Content><Length>11</Length><Reserved>1</Reserved><Date>-1</Date></request>"

i działa

10

Odp: HUAWEI E3372 i wysyłanie SMSów

A jak radzicie sobie z polskimi znakami?
Właśnie napisałem sobie skrypcik do wysyłania sms-ów i nie przechodzą mi polskie znaki. Zamiast nich mam jakieś śmieci. Na pewno wprowadzam w UTF-8. Wysyłam tak:

curl -X POST "http://192.168.8.1/api/sms/send-sms"\
  -H "__RequestVerificationToken: $token"\
  -H "Content-Type: text/xml"\
  --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones>$receivers</Phones><Sca></Sca><Content>$message</Content><Length>-1</Length><Reserved>-1</Reserved><Date>-1</Date></request>"

Hardware: CL1E3372SM Ver.A
Firmware: 22.286.03.00.00
WebUI: 16.100.05.00.03

11

Odp: HUAWEI E3372 i wysyłanie SMSów

Nawet nigdy nie próbowałem z polskimi znakami wink Musisz tak wysyłać?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: HUAWEI E3372 i wysyłanie SMSów

wysyłam w UTF-8 i jest OK, ale nie robię tego curl, tylko python urllb2

13

Odp: HUAWEI E3372 i wysyłanie SMSów

Witajcie,
jak przerobić:
c=`echo "$cc"| grep SessionID=| cut -b 10-147`
t=`echo "$cc"| grep TokInfo| cut -b 10-41`

na PHP?
smile

14

Odp: HUAWEI E3372 i wysyłanie SMSów

Nie związane z tematyką forum. http://php.net/manual/en/function.exec.php

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez desperat 2017-08-19 23:41:21)

Odp: HUAWEI E3372 i wysyłanie SMSów

Jakby ktos potrzebowal to na poniższej konfiguracji :

Device name:    E3372
Serial number:    L8FDW14CXXXXXXXX
Hardware version:    CL1E3372SM
Software version:    22.300.09.00.00
Web UI version:    17.100.13.01.03-Mod1.2

działa mi wysyłanie smsów:

#!/bin/sh
# skrypt w pliku send.sh
# używanie: sh send.sh "+48507123456" "test kolejny :) ąśćź"

if [ $# -lt 2 ]
then
echo "Podałeś za mało paramerów ustawiam domyslne"
number="+48507123456"
content="testowy sms do $number"
echo -e "Numer: $number\ntreść: $content"
else
number="$1"
content="$2"
echo -e "Podałeś numer: $number\ntreść: $content"
fi 
length=${#content}
# echo $length
cc=`curl -s -X GET http://192.168.1.1/api/webserver/SesTokInfo`
c=`echo "$cc"| grep SessionID=| cut -b 10-147`
t=`echo "$cc"| grep TokInfo| cut -b 10-41`
date=$(date +"%Y-%m-%d %H:%M:%S")
# echo $date

curl -v http://192.168.1.1/api/sms/send-sms \
 -H "Cookie: $c" -H "__RequestVerificationToken: $t" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
 --data "<?xml version="1.0" encoding="UTF-8"?><request><Index>-1</Index><Phones><Phone>$number</Phone></Phones><Sca></Sca><Content>$content</Content><Length>$length</Length><Reserved>1</Reserved><Date>$date</Date></request>"

i czytanie smsów

#!/bin/sh

RESPONSE=`curl -s -X GET http://192.168.1.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.1.1/api/sms/sms-list --header "__RequestVerificationToken: $TOKEN" --header "Content-Type:text/xml"

Wyżej kolega

areq napisał/a:

wysyłam w UTF-8 i jest OK, ale nie robię tego curl, tylko python urllb2

czyli ma kod dla pythona do czynności wysyłania. Jest szansa aby się podzielił ze mną?
Czysty python 2 byłby dla mnie teraz cenniejszy do tego celu niż to co poniżej bo to armata na mrówki. Pozdrawiam.

#! /usr/bin/python2
# -*- coding: utf-8 -*-

# wysylanie smsa przez html api huawei poprzez powyżej umieszczone skrypty bash'a
def sms_huawei(numer_kom, tresc_sms):
    import os
    import subprocess
    command=['/usr/bin/sh', '/......path....to..../send.sh']
    command.extend([numer_kom])
    command.extend([tresc_sms])
    # print command
    ret_code = subprocess.call(command,
        stdout=open(os.devnull, 'w'),
        stderr=open(os.devnull, 'w'))
    print(ret_code)

sms_huawei('+48numerkom', 'testuje sobie to coś')

W każdym razie działa ... całkiem szybciutko

Netgear R6220
TP-LINK TL-SG1008P
ZyXEL WSM20

16 (edytowany przez edass 2019-11-25 15:59:15)

Odp: HUAWEI E3372 i wysyłanie SMSów

Cześć
Sorry za wykopaliska ale uważam ,że warto aby całość była w jednym wątku.

Skrypty kol @desperat niestety nie działały u mnie poprawnie - musiałem usunąć puste linie oraz kilka ukośników "\". Po wykonaniu skryptu pokazywały się takie błędy np. takie:

 
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>100005</code>
<message></message>
</error>

Po tych małych zmianach wysyłanie SMS oraz ich odczytywanie działa bardzo sprawnie. Może komuś przydadzą się te poprawione skrypty oraz info o sofcie w modemie.

Modem E3372s-153 
fw E3372s-153_Update_22.300.09.00.00_M_AT_05.11
Webui WEBUI_17.100.17.00.143_HILINK_Mod1.20_BV7R2HS_CPIO 

read.sh

#!/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"

send.sh

#!/bin/sh
# skrypt w pliku send.sh
# używanie: sh send.sh "+48507123456" "test kolejny :) ąśćź"
if [ $# -lt 2 ]
then
echo "Podałeś za mało paramerów ustawiam domyslne"
number="+48507123456"
content="testowy sms do $number"
echo -e "Numer: $number\ntreść: $content"
else
number="$1"
content="$2"
echo -e "Podałeś numer: $number\ntreść: $content"
fi 
length=${#content}
# echo $length
cc=`curl -s -X GET http://192.168.8.1/api/webserver/SesTokInfo`
c=`echo "$cc"| grep SessionID=| cut -b 10-147`
t=`echo "$cc"| grep TokInfo| cut -b 10-41`
date=$(date +"%Y-%m-%d %H:%M:%S")
# echo $date
curl -v http://192.168.8.1/api/sms/send-sms -H "Cookie: $c" -H "__RequestVerificationToken: $t" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" --data "<?xml version="1.0" encoding="UTF-8"?><request><Index>-1</Index><Phones><Phone>$number</Phone></Phones><Sca></Sca><Content>$content</Content><Length>$length</Length><Reserved>1</Reserved><Date>$date</Date></request>" 

Pozdrawiam!

Asus Merlin RT-AC86U + 2xRT-AC68U
OpenWRT rPi3+ E3372
rPi5 HA, rPi4 OH