Protože už mě nebavilo neustálý překlikávání ve winboxu, abych zaregistroval novýho uživatele udělal jsem si takovej jednoduchej skript pro vložení registrace. Pro mou potřebu malý vesnický sítě pro pár uživatelů to zatím stačí tak kdyby se to někomu hodilo...

Co to dělá: po vyplnění základních parametrů jako je jméno uživatele, IP adresy a rychlostí stačí pustit skript a vytvoří se mangle pro download a upload, vloží se IP adresa do address-listu (kvůli reklamě neregistrovaným) a vytvoří se jednotlivé Queue pro parrenty DOWNLOAD a UPLOAD

############################################################################################################

# Vyplnit pouze následující údaje, pak kliknout na Apply a následně Run Script.

############################ IP adresa

:local ipadresa "10.10.10.10"

############################ Jméno uživatele

:local jmenouzivatele "Pepa Zdepa"

############################ Unikátní jméno - bez diakritiky a s podtržítkem místo mezery

:local unikatnijmeno "pepa_zdepa"

############################ Rychlost downloadu a uploadu [ bits/s ]

:local download "5M"

:local upload "5M"

############################ Priorita

:local priorita "5"

#############################################################################################################

### Vlastní skript dál už nic neměnit! ###

# Vytvoření magle - download/upload

:if ( [/ip firewall mangle find dst-address=$ipadresa] = "" ) do={

/ip firewall mangle

add chain=forward dst-address=$ipadresa action=mark-packet new-packet-mark=([$unikatnijmeno] . "_down") passthrough=yes comment=([$jmenouzivatele] . "- DOWN") disabled=no

} else={

:log error ("Tato adresa " . [$ipadresa] . " je již v DST mangle - nebyla přidána!!")

}

:if ( [/ip firewall mangle find src-address=$ipadresa] = "" ) do={

/ip firewall mangle

add chain=forward src-address=$ipadresa action=mark-packet new-packet-mark=([$unikatnijmeno] . "_up") passthrough=yes comment=([$jmenouzivatele] . "- UP") disabled=no

} else={

:log error ("Tato adresa " . [$ipadresa] . " je již v SRC mangle - nebyla přidána!!")

}

#Vložení IP adresy do address listu

:if ( [/ip firewall address-list find list=registrovani address=$ipadresa] = "" ) do={

/ip firewall address-list add address=$ipadresa list=registrovani comment=$jmenouzivatele disabled=no

} else={

:log error ("IP adresa " . [$ipadresa] . " je již v addresslistu - nebyla přidána!!")

}

# Vytvoření Queue Tree

:if ( [/queue tree find packet-mark=([$unikatnijmeno] . "_down")] = "" ) do={

/queue tree

add name=([$unikatnijmeno] . "_down") parent=DOWNLOAD packet-mark=([$unikatnijmeno] . "_down") queue=default priority=$priorita max-limit=$download disable=no

} else={

:log error ("Tato queue " . ([$unikatnijmeno] . "_down") . " je již použita - změň prosím unikátní jméno!!")

}

:if ( [/queue tree find packet-mark=([$unikatnijmeno] . "_up")] = "" ) do={

/queue tree

add name=([$unikatnijmeno] . "_up") parent=UPLOAD packet-mark=([$unikatnijmeno] . "_up") queue=default priority=$priorita max-limit=$upload disable=no

} else={

:log error ("Tato queue " . ([$unikatnijmeno] . "_up") . " je již použita - změň prosím unikátní jméno!!")

}

# Výpis do logu

:log warning ("Jojo " . [$jmenouzivatele] . " byl úspěšně přidán mezi uživatele!")

Je to zatím první verze co jsem tak z dlouhý chvíle sesmolil - určitě to budu ještě vylepšovat a budu rád za další nápady na vylepšení a připomínky. Testováno na verzi 4.5

o 21 dní později

Toto je celkom dobre

len že toto mi nefunguje testované na Ros 3.20

# Vytvoření Queue Tree

:if ( [/queue tree find packet-mark=([$unikatnijmeno] . "_down")] = "" ) do={

/queue tree

add name=([$unikatnijmeno] . "_down") parent=DOWNLOAD packet-mark=([$unikatnijmeno] . "_down") queue=default priority=$priorita max-limit=$download disable=no

} else={

:log error ("Tato queue " . ([$unikatnijmeno] . "_down") . " je již použita - změň prosím unikátní jméno!!")

}

:if ( [/queue tree find packet-mark=([$unikatnijmeno] . "_up")] = "" ) do={

/queue tree

add name=([$unikatnijmeno] . "_up") parent=UPLOAD packet-mark=([$unikatnijmeno] . "_up") queue=default priority=$priorita max-limit=$upload disable=no

} else={

:log error ("Tato queue " . ([$unikatnijmeno] . "_up") . " je již použita - změň prosím unikátní jméno!!")

}

# Výpis do logu

:log warning ("Jojo " . [$jmenouzivatele] . " byl úspěšně přidán mezi uživatele!")

Tak že problém som vyriešil

asi to vo verzii ros 4.5 funguje ale na ros 3.20 to treba upraviť a to premene "download a upload"

Z povodnich

############################ Rychlost downloadu a uploadu

download "5M"

upload "5M"

na

############################ Rychlost downloadu a uploadu

download "5000000"

upload "5000000"

a ešte doplním že je potrebne mat vytvorene hlavne queue tree "UPLOAD" a "DOWNLOAD"

o měsíc později

Mám podobný script zajišťující vložení do QT včetně všech parametrů, vložení do FWM a vymazání z adres listu (tam se hromadí všichni co nemají povolenej internet :) ).

Doufám že script je natolik jasný a srozumitelný, ře nepotřebuje komentář, berte to jako inspiraci - není to bez přípravy možno používat typu něco jsem našel na netu CTRL+C, CRTL+V ... ono to nemaká :(

:global sit;

:global Name;

:global IP;

:global up;

:global upmin;

:global upburst;

:global upthreshold;

:global down;

:global downmin;

:global downburst;

:global downthreshold;

#paklize uz ve FWM byl (podle unikatniho jmena), maz ho

/ip firewall mangle remove [/ip firewall mangle find comment="$Name_U"]

/ip firewall mangle remove [/ip firewall mangle find comment="$Name_D"]

#smaz i vsechny adresy, ktere chci nove registrovat, pak vloz vvy zaznam

:for i from=0 to=([:len $IP]-1) do={

/ip firewall mangle remove [/ip firewall mangle find src-address=[:pick $IP $i]]

/ip firewall mangle add chain=prerouting action=mark-packet src-address=[:pick $IP $i] new-packet-mark="$Name_U" passthrough=no comment="$Name_U"

/ip firewall mangle remove [/ip firewall mangle find dst-address=[:pick $IP $i]]

/ip firewall mangle add chain=prerouting action=mark-packet dst-address=[:pick $IP $i] new-packet-mark="$Name_D" passthrough=no comment="$Name_D"

}

#vymaz QT a vloz novy

/queue tree remove [/queue tree find name="$Name_U"]

/queue tree add name="$Name_U" packet-mark="$Name_U" priority=5 limit-at=$upmin max-limit=$up burst-limit=$upburst burst-threshold=$upthreshold burst-time=7200 parent="KLup$sit"

/queue tree remove [/queue tree find name="$Name_D"]

/queue tree add name="$Name_D" packet-mark="$Name_D" priority=5 limit-at=$downmin max-limit=$down burst-limit=$downburst burst-threshold=$downthreshold burst-time=7200 parent="KLdown$sit"

#posun zarez na konec

:foreach i in=[/ip firewall mangle find comment=Zarez] do={/ip firewall mangle move $i}

#vymaz z adreslistu

:foreach i in=[/ip firewall address-list find list=Neregistrovani] do={/ip firewall address-list remove $i}

:log error $Name

:global sit ""

:global Name ""

:global IP ""

:global up ""

:global upmin ""

:global upburst ""

:global upthreshold ""

:global down ""

:global downmin ""

:global downburst ""

:global downthreshold ""

o 15 dní později

Zdravím,poradil by někdo jak tyto scripty odesílat na MK pomocí php tak jak to dělá ISPadmin?

o 6 let později

Zdravím,poradil by někdo jak tyto scripty odesílat na MK pomocí php tak jak to dělá ISPadmin?

ahoj je to už dávno, ale poradil ti někdo? díkec

Zdravím,poradil by někdo jak tyto scripty odesílat na MK pomocí php tak jak to dělá ISPadmin?

ahoj je to už dávno, ale poradil ti někdo? díkec

nahrat pomoci scp a je to...

o 6 dní později

A není jednodušší použít php_api? Když si v PHPčku vytvoříš skript, ten tam pak musíš třeba prez scp nebo ftp nakopírovat a ještě nějak spustit, tak mi přijde mnohem jednodušší použít php_api, kdy se připojím rovnou z PHPčka na API, naleju do mikrotika příkazy co potřebuji, navíc můžu i zpracovat případně to, co mi naopak mikrotik odpoví a nakonec se z API odpojit? Php_api je vcelku jednoduché a je k tomu i docela dost příkladů. Zápis IP, pravidel do firewallu, zápis do queue, zápis do address listu, změny všech zapsaných údajů a i vymazání máme přez php_api (vy)řešené už několik let. Data o klientech máme v MySQL, takže zase všechno dostupné přez php. Při instalaci u zákazníka ho zapíšu do systému a hned mám připravenou smlouvu, rozpis plateb, predávací protokol, všeobecné podmínky, vše v pdf. Pokud má zákoš tiskárnu, rovnou u něj vytisknu, pokud ne, musím tam holt znovu.

o 5 dní později

jo nakonec jsem to po pár večerech vygoogloval a metodou pokus-omyl pořešil.

ale zaboha se mi nedaří dostat do PHP-API zapnutí firewallu na bridge

interface bridge settings set use-ip-firewall=yes

jde mi to do RB dostat i přes ssh, kda mám vygenerovaný DSA klíč, ale přide mi to dosti komplikovaný. když bude více RB.

ssh -l admin 10.20.30.40 "/interface bridge setting set use-ip-firewall=yes"

nepodařilo se to někomu pořešit a nepodělil se.

díky.

o 12 dní později

A jsi ochoten zde ten php kod zverejnit? Pripadne mi ho poslat na SZ?

K.

📡 Telekomunikace.cz