Hallo iedereen,
Ik ben een bestaand eerder (op Mikrotik forum) gepost script aan het omzetten naar de nieuwste versie zodat ik kan gebruiken (https://forum.mikrotik.com/viewtopic.php?t=87565#).
Ik gebruik RouterOS v6.38.5 op Winbox v3.11 op hEX Routerboard.
Ik haal tx-bytes en rx-bytes op maar krijg een waarde terug met spaties in het getal. Wanneer ik tx-bytes en rx-bytes optel worden ze achter elkaar geplaatst met een ; ertussen alsof het tekst/string is. Ik kan de getallen nu dus niet gebruiken. Ik krijg:
41 045 997;41 045 997
Dit is de code die ik wil gebruiken;
Mijn output is:
Ik heb het volgende geprobeerd te debuggen;
'tonum' veranderd de waarde niet (spaties blijven)
Ik heb een script gemaakt om spaties te verwijderen, echter, het script kan helemaal geen spaties vinden in de integers $counterrx and $countertx
Bij het opvragen van de lengte van de integer komt ie terug met waarde 1 ???
Ik heb het volgende script gebruikt;
Laatste blubblub om te checken dat de syntax echt wel juist is
Output is:
Output:
Gebrobeerd nog spaties te vinden met deze code;
maar helaas werkt dat ook niet. posspace blijft leeg en counterrx2 veranderd niet. Ik heb ook op , geprobeerd te zoeken maar zelfde gedrag (geeft exact hetzelfde getal terug met spaties)
De waarde die gegeven wordt is wel correct heb ik geverifieerd in stats in Winbox.
Kan iemand me hier aub mee helpen, helluuup
Alvast bedankt!
Maikel
PS: ik programmeer nu een aantal uurtjes met ROS (in C ?) dus ik ben nog zo groen als gras, vergeef me als ik heel essensiele fouten heb gemaakt
Ik ben een bestaand eerder (op Mikrotik forum) gepost script aan het omzetten naar de nieuwste versie zodat ik kan gebruiken (https://forum.mikrotik.com/viewtopic.php?t=87565#).
Ik gebruik RouterOS v6.38.5 op Winbox v3.11 op hEX Routerboard.
Ik haal tx-bytes en rx-bytes op maar krijg een waarde terug met spaties in het getal. Wanneer ik tx-bytes en rx-bytes optel worden ze achter elkaar geplaatst met een ; ertussen alsof het tekst/string is. Ik kan de getallen nu dus niet gebruiken. Ik krijg:
41 045 997;41 045 997
Dit is de code die ik wil gebruiken;
code:
1
2
3
4
5
6
7
8
9
10
11
| :local counterrx [/interface ethernet get eth2-master rx-bytes] :put "counterrx:" :put $counterrx :local countertx [/interface ethernet get eth2-master tx-bytes] :put "countertx:" :put $countertx :tonum $counterrx :tonum $countertx set $counter ( $counterrx + $countertx ) :put "counter:" :put $counter |
Mijn output is:
Ik verwacht de volgende nummers als integer terug te krijgen 41278785 (zonder spaties) en 391157213 voor rx-bytes ($counterrx) en tx-bytes ($countertx)counterrx:
41 278 785
countertx:
391 157 213
counter:
41 278 785;391 157 213
Ik heb het volgende geprobeerd te debuggen;
'tonum' veranderd de waarde niet (spaties blijven)
Ik heb een script gemaakt om spaties te verwijderen, echter, het script kan helemaal geen spaties vinden in de integers $counterrx and $countertx
Bij het opvragen van de lengte van de integer komt ie terug met waarde 1 ???

Ik heb het volgende script gebruikt;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| :local counterrx [/interface ethernet get eth2-master rx-bytes] :put "counterrx:" :put $counterrx :local Replacechar do={ :for i from=0 to=([:len $1] - 1) do={ :local char [:pick $1 $i] :if ($char = $2) do={ :set $char $3 } :set $output ($output . $char) } :return $output } :local counterrx2 [ $Replacechar $counterrx " " "" ] :put $counterrx2 :put "counterrx length:" :put [ len $counterrx ] :local blub "blubblub" :put "blubblub length:" :put [ len $blub ] |
Laatste blubblub om te checken dat de syntax echt wel juist is
Output is:
Als laatste heb ik gechecked of number $counterrx een array is en heb ik de elements geteld;counterrx:
41 946 248
41 946 248
counterrx length:
1
blubblub length:
8
code:
1
2
3
4
| :local counterrx [/interface ethernet get eth2-master rx-bytes] :foreach nr,xxx in={$counterrx} do={ :put ("$nr=$xxx") }; |
Output:
Alleen het eerste nummer wordt geteld, dit snap ik ook niet, waarschijnlijk is de code niet correct (heb ik van t mikrotik forum gehaald ergens).0=42 147 960
Gebrobeerd nog spaties te vinden met deze code;
code:
1
2
3
4
| :local posspace [ :find $counterrx " " -1] :put $posspace :local counterrx2 [:pick $counterrx 0 $posspace] :put $counterrx2 |
maar helaas werkt dat ook niet. posspace blijft leeg en counterrx2 veranderd niet. Ik heb ook op , geprobeerd te zoeken maar zelfde gedrag (geeft exact hetzelfde getal terug met spaties)
De waarde die gegeven wordt is wel correct heb ik geverifieerd in stats in Winbox.
Kan iemand me hier aub mee helpen, helluuup
Alvast bedankt!
Maikel
PS: ik programmeer nu een aantal uurtjes met ROS (in C ?) dus ik ben nog zo groen als gras, vergeef me als ik heel essensiele fouten heb gemaakt
