(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
![:)](./images/smilies/smile.gif)
PS skrypt popsuje wam ręczne wymuszanie częstotliwości jeśli robiliście.