(22.317.01.00.778
WEBUI: 17.100.13.01.03)
Zapytanie POST:
http://%modIPAdr%/api/ussd/send - należy zmienić na właściwy adres
Kod: Zaznacz cały
curl -X POST -d "ZAWARTOSC XMLa" http://%modIPAdr%/api/ussd/send %_SID% %_Token% -H "Content-Type: text/xml"
Kod: Zaznacz cały
curl -X GET http://%modIPAdr%/api/ussd/get %_SID% %_Token%
Kod: Zaznacz cały
curl -X GET http://%modIPAdr%/api/ussd/status %_SID% %_Token% -s | find "<result>0</result>" >nul
if errorlevel 1 (
echo nie znaleziono ciagu
) else (
echo znaleziono ciag
)
Samo pobieranie tokenu:
http://pastebin.com/49k5A30e
Źródło pobieranie tokenu: penknife @ http://forum.jdtech.pl/Watek-hilink-api ... 5#pid31735
Przykładowe wysłanie USSD (zakładam że macie tryb automatyczny lub 4g - umts):
Kod: Zaznacz cały
@echo off &:: HHL_token_test.bat
setlocal
set modIPAdr=192.168.8.1
call :getHHLToken %modIPAdr%
echo *****Stan konta*****
curl -X POST -d "<request><content>*101#</content><codeType></codeType><timeout>5</timeout></request>" http://%modIPAdr%/api/ussd/send %_SID% %_Token% -H "Content-Type: text/xml" >nul
if "%~1"=="" echo.OK
call :usdchecker
curl -X GET http://%modIPAdr%/api/ussd/get %_SID% %_Token%
if "%~1"=="" echo.OK
endlocal
goto :eof
:usdchecker
setlocal EnableDelayedExpansion EnableExtensions
curl -X GET http://192.168.8.1/api/ussd/status %_SID% %_Token% -s | find "<result>0</result>" >nul
if errorlevel 1 (
ping -n 1 127.0.0.1 >nul
goto usdchecker
)
endlocal
goto :eof
:getHHLToken &::[adres IP]:zwraca zmienne %_Token% oraz %_SID% z Huawei HiLink do wykorzystania z curl lub wget, przyjmując opcjonalnie adres IP modemu
setlocal
rem przypisanie zmiennej HHL adresu modemu
SET HHL=hi.link
rem przyjmij pierwszy parametr jako adres IP modemu lecz pierw zweryfikuj
if "%~1" neq "" if /i "%~1" neq "%HHL%" echo. %~1 |findstr /r /c:"^ *[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9] *$" >nul &&set HHL=%~1
rem inicjalizacja niepustych zmiennych
set "_SID= "
set "_Token= "
rem wyczyść zmienną z adresem ze spacji
set HHL=%HHL: =%
set _c=curl -q -s -X GET --stderr nul --max-time 5
rem pobranie tokena oraz ID sesji i przypisanie wartości
for /f "tokens=1-4 delims=<>" %%a in ('%_c% http://%HHL%/api/webserver/SesTokInfo ^|find /i "Info>"') do (
rem if /i "%%~c"=="/SesInfo" - sprawdza czy zmienna nie przekroczyła linii
if /i "%%~a"=="SesInfo" if /i "%%~c"=="/SesInfo" set _SID=--header "Cookie: %%b"
if /i "%%~a"=="TokInfo" if /i "%%~c"=="/TokInfo" set _Token=--header "__RequestVerificationToken: %%b"
rem jeżeli przed pierwszym znakiem < lub > coś występuje:
if /i "%%~b"=="SesInfo" if /i "%%~d"=="/SesInfo" set _SID=--header "Cookie: %%c"
if /i "%%~b"=="TokInfo" if /i "%%~d"=="/TokInfo" set _Token=--header "__RequestVerificationToken: %%c"
)
rem jeśli nowy token nie istnieje uzyskaj stary:
if "%_Token:~0,2%"==" " for /f "tokens=1-3 delims=<>" %%a in ('%_c% http://%HHL%/api/webserver/token ^|find /i "token"') do (
if /i "%%~a"=="token" set _Token=--header "__RequestVerificationToken: %%b"
if /i "%%~b"=="token" set _Token=--header "__RequestVerificationToken: %%c"
)
set _exit=0
if "%_SID:~0,2%"==" " set /a "_exit+=2"
if "%_Token:~0,2%"==" " set /a "_exit+=1"
endlocal &(set "_SID=%_SID%" )&(set "_Token=%_Token%" )& exit /b %_exit%
goto :eof
W załączniku przykładowy skrypt dla Darmowy internet LTE w RedBullu. Przełącza na 4G->UMTS aby działało USSD. Sprawdza stan kona, pakietu MB oraz stan LTE i aktywuje, potem restartuje modem, czeka aż się wybudzi i wymusza tylko LTE. Sam restart modemu jeśli jest wpięty w router nic nie daje. Często bez restartu nie da się z powrotem włączyć tylko LTE.
kod: http://pastebin.com/TReTiFHa
Nie sprawdzam odpowiedzi modemu dla zmainy trybów 3g etc. Sprawdzam tylko czy curl nie wywalił błędu.
pinger sprawdza czy modem wstał.
Miłego skryptowania

PS skrypt popsuje wam ręczne wymuszanie częstotliwości jeśli robiliście.