T
truefriend-cz

  • Připojil se 15. úno 2007
  • 0 nejlepších odpovědí
  • Nová verze v1.7 (2019-06-15):

    * aktualizován Notepad++ na verzi 7.7

    * vypnutí automatického doplňování textu při psaní

    * opravena chyba UAC při spuštění scriptu pro asociaci přípon

  • Nová verze v1.5 (2019-01-08):

    * opravena chyba se zobrazováním průhledného pozadí textu po aplikování jiného tématu

    + přidána metoda (2b) pro manuální import tématu (popis v Readme.txt v komprimovaném souboru)

  • v1.4 (2019-01-07):

    * Vypnuta funkce pro automatické detekování kódování souboru při jeho otevření

    * Aktualizováno na Notepad++ verze 7.6.2

  • v1.3 (2018-12-07):

    * změněna metodologie přidružení typu souborů

  • používame už roky z originál mt fóra

    https://forum.mikrotik.com/viewtopic.php?f=9&t=59761

    Oproti té verzi z originál MT fóra má ta moje asi 3× větší databázi příkazů, nabízí více témat a opravuje některé chyby.

    Byly nahrány nové verze. Změny jsou uvedeny v hlavním příspěvku.

  • Zdravím. Udělal jsem zvýraznění syntaxe scriptů Mikrotiku pro editor Notepad++. Tak třeba se někomu bude hodit.

    Rozpoznává soubor typu .rsc nebo lze syntaxi aktivovat ručně.

    Popis:

    Notepad ++ skripty pro instalaci nebo přidání podpory pro zvýraznění syntaxe RouterOS.

    Instalace je ve dvou provedení:

    Komprimovaný soubor obsahuje dvě metody jak přidat nebo změnit podporu pro zvýraznění syntaxe RouterOS.

    - Automatická (pro základní uživatele nebo pohodlnější instalaci): Nainstaluje Notepad++ včetně přednastavené syntaxe nebo pouze syntaxi.

    - Manuální (pro pokročilé uživatele): Do stávající instalace lze importovat konfigurační soubory syntaxe.

    Odkaz na stažení:

    https://drive.google.com/drive/folders/1702Cb_Dkby7J-GBoisCrbUztaQmyjU-t

    Hlášení problémů a sledování změn:

    http://www.lukaskysela.cf/bugs/add-ID4355704f582b715954796774337a394a54462b5041513d3d

    Změny:

    v1.7 (2019-06-15):

    * aktualizován Notepad++ na verzi 7.7

    * vypnutí automatického doplňování textu

    * opravena chyba UAC při spuštění scriptu pro asociaci přípon

    v1.6 (2019-01-15):

    * opravena chyba asociace souborů rozšíření na systému x86

    v1.5 (2019-01-08):

    * opravena chyba se zobrazováním průhledného pozadí textu po aplikování jiného tématu

    + přidána metoda (2b) pro manuální import tématu (popis v Readme.txt v komprimovaném souboru)

    v1.4 (2019-01-07):

    * Vypnuta funkce pro automatické detekování kódování souboru při jeho otevření

    * Aktualizováno na Notepad++ verze 7.6.2

    v1.3 (2018-12-07):

    * změněna metodologie přidružení typu souborů

    v1.2 (2018-11-16):

    + dva nové motivy pro zvýraznění syntaxe (Black Glow, Light Glow)

    v1.1 (2018-11-15):

    * aktualizována databáze příkazů MikroTik

    + automatické stahování instalátoru pro Notepad++

    v1.0 (2018-11-14):

    + automatizovaná 3-vrstvá instalace

    + manuální import

    Vzhled syntaxe:

    - syntaxe je ve čtyřech variantách Black, Black Glow, Light a Light Glow

    Black:

    <--- ia1 -->Syntax Preview - Black.png<--- ia1 -->

    Black Glow:

    <--- ia2 -->Syntax Preview - Black Glow.png<--- ia2 -->

    Light Glow:

    <--- ia0 -->Syntax Preview - Light Glow.png<--- ia0 -->

    Light:

    (náhled tématu nejde přidat, nevím v čem je problém)

  • Možná to souvisí s těmi chybami co jsem zmínil. No s těmi rady... Docela mi schází nějaký doplněk pro fóra, který by fungoval na bázi na úrovni něco mezi fórem a něco mezi GitHubem, stejně tak jako doplněk pro další zařízení. Kde by bylo možné sdílet své kódy. Upravovat je přímo v topiku s nějakou historií (podobně jako fungují komentáře na Facebooku po jejich upravení-lze vypsat historii změn), apod. Plus rovnou testovací spouštění jako je možné na Stackoverflow, Fidler, apod. Diskuzních fór na řešení něčeho je celkem dost ale divím se, že phpBB s tím co umí vystačilo tolik let, plus nějaké smysluplné doplňky jako Tapatalk, aj. Jinak jestli tohle bude číst nějaký moderátor, tak by bylo fajn už dát podporu pro TapaTalk

    Mě by spíš zajímalo jak by se Mikrotik zachoval, když by někdo napsal zacyklovací script a ještě líp na úrovni funkcní pracující s kernelem, ovladači, apod.. třeba zapínání a vypínání interfaces, nebo nějaké operace s paměťovou kartou/USB. Jestli má ochranu proti zacyklení, nebo by nechal jet CPU na 100% dokud se nerestartuje. Apod. Fajn by bylo, když by dokázal zjistit, který script dělá nějaký nepořádek ohrožující chod zařízení a třeba ho disabloval, pokud dělá problémy a je v schedulleru, aj.

  • Ludvik díky už to funguje. Spravil to ten příkaz SET do jedné linky. Je to moje chyba.

    Problém vznikl tím, že jsem použil ty linky dvě, protože jsem je použil z doby kdy jsem se začínal programovat a nevěděl jsem, že se dá v jednom příkazu set použít více parametrů. Mezitím jsem se o něco zlepšil a ta neznalost se přenesla i do pozdějšího programování. V podstatě se sešlo mé staré já s mým současným Odborně se tomu říká "profesionální slepota".

    Tímto bych vám chtěl ludvik poděkovat. Sám na poli sociálních věcí se s něčím takovým jako profesionální slepotou jiných lidí setkávám a vím co je to za zrůdnost komlikující život. Ještě jednou díky!.

    Jinak ten jazyk mi nepříjde zlý, akorát je o některé funkce osekaný a nejsou tak přesně definovány parametry. Je to takové "lidové LUA", kde to zkousne různé chyby. LUA pro Steam, nebo ve spojitosti s jinými aplikacemi by to tak snadno neprošlo. Včetně třeba chybějícíh středníků na konci řádků.

  • Tak jsem asi skončil zase fiaskem.

    Stává se stejná věc. Akorát to co co jinak končí chybou tak to tu část přeskočí.

    Jinak script mi jde od počátku spustit třeba 8x když měním hodnotu averageDOWN na hodnoty blízko počáteční hodnoty. Když je třeba 400 a nastavím 4500, 3000, apod. tak script funguje. Když ji změním najednou na 95, 315, 2300 a pak zase třeba 4700 tak se pak už neprovádí a dojde k tomu zaseknutí.

    {

    :local maxlimitDOWN 5000;

    :local averageDOWN 3090;

    :local levelDOWN;

    :set levelDOWN (($maxlimitDOWN-$averageDOWN)*10);

    :global qtsname;

    :global qtsmin;

    :global qtsmax;

    :set qtsname "D-FUP-Level-1-Download";

    :set qtsmin ($levelDOWN*95);

    :set qtsmax ($levelDOWN*100);

    :local qts [:execute {

    :log warning ("Test MAX: " . $qtsmax);

    :log warning ("Test MIN: " . $qtsmin);

    :foreach item in=[/queue tree find name~($qtsname)] do={

    /queue tree set "$item" max-limit="$qtsmax";

    /queue tree set "$item" limit-at="$qtsmin";

    };

    }];

    :do {$qts test="bbb"} on-error={};

    :log warning ("OK ");

    }

    A zkusil ještě jednodušeji. A to se nevyplní QT vůbec.

    {

    :local maxlimitDOWN 5000;

    :local averageDOWN 1430;

    :local levelDOWN;

    :set levelDOWN (($maxlimitDOWN-$averageDOWN)*10);

    :global qtsname;

    :global qtsmin;

    :global qtsmax;

    :set qtsname "D-FUP-Level-1-Download";

    :set qtsmin ($levelDOWN*95);

    :set qtsmax ($levelDOWN*100);

    :local qts do={

    :foreach item in=[/queue tree find name~($qtsname)] do={

    :log warning ("Test MAX: " . $qtsmax);

    :log warning ("Test MIN: " . $qtsmin);

    [:execute {/queue tree set "$item" max-limit="$qtsmax"}];

    [:execute {/queue tree set "$item" limit-at="$qtsmin"}];

    };

    };

    $qts qtsname="D-FUP-Level-1-Download" qtsmin=$qtsmin qtsmax=$qtsmax;

    }
  • hele, já jsem si s tím jen hrál. Měnil a měnil, furt to fungovalo. Pak nejednou přestalo, když jsem vrátil původní hodnoty. V tu chvilku jsem zkusil ten set v terminálu - a výsledek je tento.

    Když nad tím přemýšlím, tak asi jiná chyba nepřichází v úvahu. Nastavuješ jen jednu hodnotu a pokud je to fakt číslo - projde to, podle mě není důvod, proč by nemělo. S podmínkou, že max-limit není menší, než limit (myšleno samozřejmě ten aktuální, co tam zrovna je).

    failure: -max-limit less than -limit

    A vzhledem k chování jazyka se neprovede pak nic.

    Existuje logging topic script. Ale nezkoušel jsem ho. Jinak jsou jediné možnosti ladění výpisy ut a .

    Vyšší by to být nemělo. Ta rovnice to počítá z jednoho čísla a dává tam hodnoty procentuálně z té jedné. Dával jsem před ten řádek s těmi proměnnými pro kontrolu, zda opravdu posílá čísla jaká by měl.

    Teď zkouším ten execute. Jestli na to příjdu tak to je na oscara ta v hodná syntaxe pro ten můj případ. Asi se nedají používat argumenty pro poslání ale musí se to řešit přes local a global. Tohel jsem zatím vytvořil a snažím se mu nějak poslat hodnoty jako argument ale nedaří se. Script jde ale argument nebere.

    {

    :global name;

    :set name "Rule305";

    :local qts [:execute {

    :log warning ($name . $test);

    }];

    :do {$qts test="bbb"} on-error={};

    }
  • Nesmíš se dostat do stavu, kdy vznikne max-limit menší, než limit. Dělej to jedním příkazem a ne dvěma. Na to přijdeš, když si to zkusíš ručně z terminálu s hodnotami scriptu v momentě, kdy to nejde.

    A pokud (což asi neplatí zde) potřebuješ, aby řádek prošel i při chybě (což chceš, pokud to je v IF sekci, kde je i ELSE), je nutné to obalit příkazem execute. Ten totiž projde vždy správně (je-li syntakticky správně, samozřejmě).

    Tak s tím max-limit považuji za základ. Rozhoduje i pořadí v jakém se ve scriptu provádí. A když se chce ta hodnota zrušit úplně nejde to příkazem remove jako jinde ale musí se tam poslat nula. A to zase v obráceném pořadí. Ten execute příkaz zkusím. Škoda, že nejde přesně identifikovat čím je to způsobeno. Původně jsem myslel, že nějaké přetečení zásobníku nebo něco takového, ale ten problém to dělá i na jiných ROS včetně x86 verze. Znáte nějaký způsob jak se dá nějak zjistit třeba číslo chyby?

  • Kde v tom scripte nastavuješ hodnoty pre $qtsmax a $qtsmin ? Lebo ja tie premenné vidím len na riadkoch 14 a 15 .

    Řádkem :put [$qts qtsname=Rule305 qtsmin=($levelDOWN*95) qtsmax=($levelDOWN*100)];

    Je to něco na způsob volání funkce. Je to i v oficiální online dokumentaci MT. Dá se volat dvěmi způsoby lišící se v drobnostech. Zkusil jsem oba se stejným výsledkem.

    Druhý se volá:

    $qts Rule305 ($levelDOWN*95) ($levelDOWN*100); a používá se spíše pro globalní funkce, hodnoty se pak získavají jako ARGumenty $1, $2, $3.

  • Nasimuluj si to v terminálu. A uvidíš.

    Ale nedávno jsem se páral s generováním SQ a musel jsem ty hodnoty psát se suffixem (M) a kompletní, down i up.

    Ten suffix bych zkusil. Akorát nevím jak udělat, abych mohl rozdělovat čísla na (M) a (k) (pokud tedy lze pracovat asi jen s kulatými čísly nebo v čem je vlastně problém). Chtěl bych pracovat i s jednotkami jako 128kbps, 64kbps.

  • Jinak zkoušel jsem ještě místo proměnné dosadit rovnou čísla do funkce a s tím script problém nemá i když je měním a spustím script třeba 20x.

    Zkoušel jsem ještě převést výsledek proměnné v kombinaci s "" a "", nebo "" na číslo, pro případ jestli script nepovažuje výsledek za string ale také to nezabralo.

    {

    :local maxlimitDOWN 5000;

    :local averageDOWN 3400;

    :local levelDOWN;

    :set levelDOWN (($maxlimitDOWN-$averageDOWN)*10);

    :local qts do={

    :foreach item in=[/queue tree find name~($qtsname)] do={

    :log info ("Test: " . $qtsmin . ", " . $qtsmax); # Test zda jsou předávány hodnoty (jsou i v případě, když níže dám ty proměnné)

    /queue tree set "$item" max-limit="6000000"; # když ručně měním tuto hodnotu přímo tak script funguje vždy (s kulatými čísly)

    /queue tree set "$item" limit-at="4000000"; # když ručně měním tuto hodnotu přímo tak script funguje vždy (s kulatými čísly)

    };

    };

    :put [$qts qtsname=Rule305 qtsmin=($levelDOWN*95) qtsmax=($levelDOWN*100)];

    }
  • Příspěvek jsem editoval a doplnil o text:

    Script funguje pouze v situaci, když ručně (přes terminál nebo winbox) nejprve vymažu z pravidel max-limit a limit-at. Pak funguje asi na 2-4 spuštění s různými hodnotami averageDOWN a pak se zase začne zasekávat na zmíněném místě. A musí se zase vymazat.

    Myslím si, že by to mělo fungovat i bez nutnosti vymazávání těch hodnot.

    Převádět to na číslo se suffix zkusím jen mě nenapadá jak, protože se doplňují různé hodnoty s (M) i (k) i na úrovni menších. Nenapadá mě jak to naprogramovat a zda by to řešení fungovalo. Volil bych tabulku pro převod jednotek. Ale nenapdá mě, jak naprogramovat, aby se jednotky převáděly na (M) a (k), protože když je číslo 4M a přidá se k němu pár jednotek tak je z něj 4325k. A zaokrouhlovat Mikrotik neumí. (nepodporuje čísla s desetinnými místy a z jazyka odstranili funkci math.floor).

  • Ahoj. Mám script, kde dochází k nečekanému ukončení a já nevím proč.

    Script porovná hodnoty a pak by měl nastavit Queue Tree na vypočítané hodnoty na procento. Script se načte ale skončí u řádku kde se defunuje max-limit="$qtsmax" a limit-at="$qtsmin".

    Script funguje pouze v situaci, když ručně nebo scriptem nejprve vymažu z pravidel max-limit a limit-at. Funguje asi na 2-4 spuštění s různými hodnotami averageDOWN a pak se zase začne zasekávat na zmíněném místě. A musí se ručně vymazat.

    Myslím si, že by to mělo fungovat i bez nutnosti vymazávání těch hodnot.

    Udělal jsem dvě verze a stejný problém je u obou:

    Verze 1:

    :local maxlimitDOWN 5000;

    :local averageDOWN 4500;

    :local percentageDOWN 0;

    :local levelDOWN;

    :set percentageDOWN (($averageDOWN*100)/$maxlimitDOWN);

    :set percentageDOWN (100-($percentageDOWN));

    :set levelDOWN (($maxlimitDOWN/100)*$percentageDOWN);

    :local qts do={

    /queue tree {

    :foreach item in=[find where name~($qtsname)] do={

    set $item max-limit=($qtsmax*1000); # zde se script zasekne

    set $item limit-at=($qtsmin*1000);

    };

    };

    };

    :log warning ("Values: " . (($levelDOWN/100)*95) . ", " . (($levelDOWN/100)*100));

    :put [$qts qtsname=Rule305 qtsmin=(($levelDOWN/100)*95) qtsmax=(($levelDOWN/100)*100)];

    Verze 2:

    {

    :local maxlimitDOWN 5000;

    :local averageDOWN 4000;

    :local levelDOWN;

    :set levelDOWN (($maxlimitDOWN-$averageDOWN)*10);

    :local qts do={

    :foreach item in=[/queue tree find name~($qtsname)] do={

    /queue tree set "$item" max-limit="$qtsmax"; # zde se script zasekne

    /queue tree set "$item" limit-at="$qtsmin";

    };

    };

    :put [$qts qtsname=Rule305 qtsmin=($levelDOWN*95) qtsmax=($levelDOWN*100)];

    }

    Verze ROS 6.32 a zkoušel jsem to i včetně nejnovější 6.42 a to problém neřeší.

    V čem je problém? nebo jak mohu udělat script tak, aby fungoval? Díky

  • Ahoj. Mám dotaz ohledně připojení na AP jako klient. Zatím to dělám ručně vybráním Interfaces, wlan1, Scan, vyberu požadovanou síť v seznamu a dám Connect. Problém je ten, že seznam obsahuje více sítí se stejným SSID ale jinou MAC. Chci se připojit ke konkrétní MAC což mi Mikrotik nebere a připojuje se náhodně jen podle SSID ačkoliv mám vybraný konkrétní řádek s tou MAC. Zkoušel jsem si hrát ještě s položkou radio-name, která jsem myslel, že ovlivňuje k jaké MAC se připojí ale neovlivňuje.

    Jak bych toho mohl dosáhnout?

  • Našla by se nějaká dobrá duše, která by udělala předistalovanou verzi pro třeba VirtualBox a nahrála na Google Disk? Předem díky.

  • Zdravím. Mohly by mi někdo pomoci se scriptem? Chtěl bych nějak v síti zjistit, na kterých IP je dostupný internet.

    Něco ve smyslu projít všechny IP 10.1.1.2 - 10.1.1.254 a ty na kterých je dostupný alespoň ping do internetu pak vypsat do Address Listu.

📡 Telekomunikace.cz