RouterOS 7.1 vs Changeip DDNS szkript

Sziasztok!

Az alábbi changeip DDNS szkriptet használtam eddig mikrotik alatt cím frissítésre, viszont a mostani RouterOS verzió alatt valamiért nem működik.

A Logba azt látom hogy paraméter hiánya van, viszont nem találok a neten leírást hogy hogyan tudnám debugolni hogy melyik paramétert hiányolja, ezzel kapcsolatban kérnék segítséget.

EDIT: ha kiprintelem parancssorban akkor azt írja hogy Flags: I - invalid

EDIT2: a /system script edit changeip value-name=source parancsra nem hoz piros sort..

Ez lenne a szkript:
 

:local ddnsuser "felhasznalo"
:local ddnspass "jelszo"
:local ddnshost "dnshostneve"
:local ddnsinterface "pppoe-out1"
:global ddnslastip
:global ddnsip [ /ip address get [find interface=$ddnsinterface disabled=no] address ]
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip 0.0.0.0/0 }
:if ([ :typeof $ddnsip ] = nil ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.") } else={
:if ($ddnsip != $ddnslastip) do={
:log info "DDNS: Sending UPDATE!"
:log info [ /tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ]
:global ddnslastip $ddnsip }
}

Hozzászólások

Szerkesztve: 2021. 12. 12., v – 17:47

Jól megbonyolítod az életedet. /ip/cloud/print ... van saját DDNS-e. Ha nem tetszik a mynetname.net-es domain, akkor egy névszerverben jegyzett szép domain neved alá bejegyzel egy CNAME-t és máris tetszőleges saját domain néven éred el.

Megjegyzem, érdemes megszokni hogy a RouterOS 7.1 szóközös elválasztás helyett / jellel egybeírja a teljes parancsot, bár még meghagyták a szóközös 6.xx-nél megszokott írásformát. Nem kizárható, hogy az egyik ilyennél keveredsz valami argumentummal.

Egyébként ha a sorok után teszel  :log info <akármi>-t, akkor látod a LOG-ban hogy meddig töltötte fel helyes értékekkel a változókat. Így már tudod, hogy melyik sort értelmezte hibásan. Na így tudnád debugolni.

Bár én is használom a mikrotik cloud-ot, azért tegyük hozzá, hogy ezzel fel is vállalod az ő általuk üzemeltetett ddns service rendelkezésre állását, ha az leáll, akkor hiába van cname-ed, nem fogod elérni a szervered. A saját script-es megoldással ezt meg tudod kerülni és akár több ddns service-ben is be tudod regisztrálni.

Tehát nem biztos, hogy felesleges bonyolitás a saját script.

Szerkesztve: 2021. 12. 13., h – 10:50

A log info: <Hello>-zással kiderítettem hogy a szkript utolsó előtti sorában hiányolja a paramétert.

Ezen fórum linken írták hogy ki/belépési pontot hiányolhat, majd megpróbálok rájönni hogy hol keveredik bele a zárójelekbe.

Nem jöttem rá hogy mi a baja, szóval visszaraktam a régi routerOS-t..

Szerkesztve: 2022. 09. 14., sze – 14:51

Álljon itt magamnak az infó, hogy végül vettem egy namecheap-es domaint, és a következő szkript működik a v7.x-es routeros-el:

 

:global ddnshostname "aldomain"
:global ddnsdomain "domain"
:global ddnspass "ddnsgeneraltjelszo"

:log info ("DDNS: Updating")
:local str "https://dynamicdns.park-your-domain.com/update\3Fhost=$ddnshostname&domain=$ddnsdomain&password=$ddnspass"
/tool fetch url=($str) mode=https keep-result=no

ha hazaértem beélesítem, és jelentkezek.

szerk.: élesítve, műxik. - legyártom az aldomaineket és szórom szét az ügyfelekhez.