1

Téma: Volání webového rozhraní z RouterOS

Pokouším se volat funkci přepnutí relé přes webové rozhraní z příkazového řádku RouterOS.
Teoreticky by mělo stačit něco jako:
/tool fetch url="http://11.22.33.44/cgi_login?passw=heslo" mode=http
/tool fetch url="http://11.22.33.44/cgi_rctl?rmode=cson&rn=1" mode=http
/tool fetch url="http://11.22.33.44/cgi_logout"

Vypadá to ale, že RouterOS má problém se znakem "?", který má speciální význam. Ve fóru Mikrotiku je doporučení nahrazovat ho ve skriptech skupinou "\3F", tedy něco jako:
/tool fetch url="http://11.22.33.44/cgi_login\3Fpassw=heslo" mode=http
což mi, žel, nefunguje, a končí s
status: failed
failure: closing connection: <302 Found> 11.22.33.44:80 (4)

a v načtených datech je jen přihlašovací obrazovka SDS.

Máte prosím někdo zkušenost s tím, jak zavolat přepnutí relé ze skriptu v RouterOS?

2

Re: Volání webového rozhraní z RouterOS

Tak to jsem sam zvědavý, jestli to půjde obejít. Napadá me jedine zavolat si PHP script a tím ovládat sdsko. Tam už problém nebude. Osobně to ovládam z Linuxu a tam to malá bez problémů.

3 Naposledy upravil: cmartin (2014-05-26 22:09:39)

Re: Volání webového rozhraní z RouterOS

Ano, v linuxu to funguje s wget-em, curl a podobnými nástroji naprosto podle očekávání. S ohledem na účast OnlineTechnology v programu Made for Mikrotik! snažně doufám, že se najde řešení vzájemné součinnosti i tady.

Jako alternativu mě napadá použít k buzení relé PoE výstup na něčem, jako je RB750UP nebo RB951Ui-2HnD, kde se dá zátěž na ethernetovém portu spínat z příkazového řádku RouterOS. Víc by se mi ale líbilo vzdálené skriptování SDS.

4

Re: Volání webového rozhraní z RouterOS

Dvě lomítka: \\3F

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: Volání webového rozhraní z RouterOS

No, je to změna, ale ještě pořád to není ono:
/tool fetch address="11.22.33.44" src-path="cgi_rctl\\3Frmode=cson&rn=1" mode=http keep-result=no
status: failed
failure: closing connection: <404 File not found> 11.22.33.44:80 (4)

Podobně dopadl i pokus o přihlášení. Se stavem 404 se ani neuložil soubor s odezvou, když jsem vypustil keep-result=no.

6

Re: Volání webového rozhraní z RouterOS

Spusťte si na svém PC nějaký malý web server, a pošlete si ten dotaz na něj.
Pak v logu (na tom web serveru) půjde vidět, co že to vlastně ten routerboard posílá.
Jestli tam ještě nechybí jedno lomítko: src-path="/cgi_rctl\\3Frmode=cson&rn=1".

V manuálu navíce píšou toto:

/tool fetch url="http://www.mikrotik.com/img/netaddresses2.pdf" mode=http

tj. "url" a ne "src-path".

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

7 Naposledy upravil: cmartin (2014-05-26 22:45:33)

Re: Volání webového rozhraní z RouterOS

Ano, byl tam překlep. Výsledek s url je ale stejný
/tool fetch url="http://11.22.33.44/cgi_login\\3Fpassw=heslo" mode=http
  status: failed
failure: closing connection: <404 File not found> 11.22.33.44:80 (4)

8

Re: Volání webového rozhraní z RouterOS

Povedlo se vám to zachycení vůči webovému serveru na PC ?

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

9

Re: Volání webového rozhraní z RouterOS

Reakce v logu (apache na debian 7)

skript :
/tool fetch url="http://11.22.33.44/cgi_login\\3Fpassw=heslo" mode=http
záznam v logu:
11.22.33.44 - - [09/Feb/2015:10:20:36 +0100] "GET /cgi_login\\3Fpassw=heslo HTTP/1.1" 404 471 "-" "Mikrotik/6.x Fetch"

skript:
/tool fetch url="http://11.22.33.44/cgi_login\3Fpassw=heslo" mode=http
záznam v logu:
11.22.33.44 - - [09/Feb/2015:10:21:39 +0100] "GET /cgi_login?passw=heslo HTTP/1.1" 404 457 "-" "Mikrotik/6.x Fetch"

dovozuju tedy, že smysl dává druhá možnost.

Ověřil jsem, že skript v podobě

/tool fetch url="http://11.22.33.44/cgi_login\3Fpassw=heslo" mode=http
/tool fetch url="http://11.22.33.44/cgi_rctl\3Frmode=cson&rn=1" mode=http

skutečně "pohne" s relé č. 1 z vypnutého stavu na zapnutý big_smile
Obdobně je funkce ověřena pro vypnutí a pro číslo relé vyšší, než 1.

Poznámka: přihlášení a povel se v RouterOS nesnáší (nefungují) v jednom skriptu, ve dvou s tím není problém. Neumím to vysvětlit - jako workaround prostě funguje rozdělení.

Shrnuto: za mě vyřešeno - díky za pomoc