Come sapere quanti GB consumi sui dispositivi Mikrotik via Telegram

In questa guida, vediamo come controllare quanto traffico eseguono i nostri dispositivi Mikrotik. Grazie all’uso di questo script trovato sul web, posso dimostrarvi come installarlo sui nostri dispositivi Mikrotik e farlo funzionare con Telegram.

Cos’è Mikrotik?

Mikrotik è un azienda di prodotti elettronici, sopratutto di prodotti di telecomunicazione o elettronici. Mikrotik è una tra i marchi in circolazione nel produrre prodotti efficienti e professionali.

Come creare un bot Telegram:

Per creare un bot telegram vi consiglio di seguire la mia guida su come creare un bot Telegram al seguente link.

Come impostare lo script:

Per impostare lo script che vi lascio qui sotto, (attenzione lo script non è sviluppato da me è stato trovato sul web ed e per questo che voglio ringraziare il forum Mikrotik e il programmatore. Ora è passato un po di tempo quindi non so dirvi il nome dell’utente). 

Allora i campi vedete evidenziati nello script, sono i campi che dovete modificare a vostro piacimento; per esempio:

  • :local limit 100000 MB corrispondono a 100GB di traffico massimo impostato voi impostate quello che preferite voi
  • :local dayresetlimit 28 corrisponde al giorno che si deve resettare una volta che si avvia lo script
  • :local interf “ether1” in questo caso io ho messo il controllo della rete ether1 ma se avete un router mikrotik LTE ovvero router mikrotik 4G, occorre inserire “lte1” al posto di ether1.
  • /tool fetch url qui dovete nel campo evidenziato in nero inserire il bot_ID e in CHAT_ID, la chat a cui volete fare accedere il vostro script nel mio caso uso nell’esempio il CHAT ID del bot stesso, per sapere quale è il vostro chat_ID del vostro BOT occorre andare su Telegram e avviare @getidsbot. Una volta avviamo sapete qual è il vostro chat ID. In ogni campo evidentiato qui in grassetto potete scegliere costa scrivere
  • :log info “CONTROLLO TRAFFICO RETE LAN1 ROUTER CRISTIAN” in questo caso questa informazione serve al registro delle attività del mikrotik per capire voi quando lo script sta eseguendo il controllo.
  • :log error anche in questo caso tramite il log error descritto vi indica nei registri quando superate il limite dei GB impostati, quindi nei log trovate la scritta che scrivete voi nel mio caso: “:log error “Attenzione il router di Cristian ha superato il traffico
:log info "CONTROLLO TRAFFICO RETE LAN1 ROUTER CRISTIAN"
:do {
#######################################################################################################
#                                              User config
#Set limit in MB
:local limit 100000
#Set day to reset limit
:local dayresetlimit 28
#Set interface
:local interf "ether1"
#Set auto bring up interface
:local autointon true
#######################################################################################################
:local filename "counter.txt"
:local filewarn "warning.txt"
:local fileref "refcount.txt"
:local reblock "reblock.txt"
:local status
:if ([:len [/file find where name=$filewarn]] < 1 ) do={
/file print file=$filewarn where name=$filewarn
/delay delay-time=2
/file set $filewarn contents=$percent
};
:if ([:len [/file find where name=$filename]] < 1 ) do={
/file print file=$filename where name=$filename
/delay delay-time=2;
/file set $filename contents=0
}
:if ([:len [/file find where name=$reblock]] < 1 ) do={
/file print file=$reblock where name=$reblock
/delay delay-time=2;
/file set $reblock contents=1
}
:if ([:len [/file find where name=$fileref]] < 1 ) do={
/file print file=$fileref where name=$fileref
/delay delay-time=2;
/file set $fileref contents=0
}
:local reblocker ([/file get $reblock contents])
:local curdate [/system clock get date]
:local day [ :pick $curdate 4 6 ]
:if ( $day = $dayresetlimit and $reblocker = 0) do={
/file set $filename contents=0
/file set $filewarn contents=0
/file set $fileref contents=0
/interface lte set $interf disabled=no
/file set $reblock contents=1
:log info "Limit reset, int $interf bring up"
/delay delay-time=5;
:log info "Clear int counters - reboot"
}
:if ( $day != $dayresetlimit ) do={
        /file set $reblock contents=0
}
:local before
:local correct
:local ref
:local newdata
:local tx [/interface get $interf tx-byte]
:local rx [/interface get $interf rx-byte]
:set $newdata (( $rx + $tx ) / 1024 / 1024 )
:set $before [/file get $filename contents]
:if ( $newdata < $before ) do={
:set $ref [/file get $fileref contents]
:set $correct ( $before + $newdata - $ref )
/file set $fileref contents=$newdata
/file set $filename contents=$correct
}
:if ( $newdata >= $before ) do={
/file set $filename contents=$newdata
}
:local traffic ([/file get $filename contents])
:log warning "Limit: $limit MB"
:local percent ($traffic*100 / $limit)
:log warning "Use: $percent%"
/file set $filewarn contents=$percent
:if ($percent >= 100) do={
/file set $filewarn contents=$percent
/interface lte set $interf disabled=no
:log info "Invio messaggio a Telegram!"
   /tool fetch url="https://api.telegram.org/bot_ID/sendMessage?chat_id=CHAT_ID&text=Ciao cristian ti informo che il router  ha raggiunto 100GB di traffico dati sulla rete." keep-result=no

}
}
} on-error={ :log error "Attenzione il router di Cristian ha superato il traffico" }

Installazione Script:

Per installarlo occorre aprire WinBox andare su <<System>> poi su <<Schedule>>. Infine in nome script mettete quello che volete. Copiate nel campo bianco lo script, e selezionate le spunte come in foto, poi premiamo su <<Start Date>> impostate la data di partenza da quando lo script deve controllare, in <<Start Time>> mettete l’orario a che ora volete che vi avvisa durante l’esecuzione dello script, nel mio caso <<00:00:00>>, in <<Interval>> mettete i giorni in cui lo script faccia il controllo del traffico nel mio caso io lo impostato ogni 27 giorni alle 23:59:00, come in figura.

A questo punto cliccate su <<Apply>> per salvare e applicare la procedura. In <<Next Run>> noterete quando esegue il prossimo test del traffico dati se viene superato vi avvisa con un messaggio Telegram, se non viene superato nei log vi esce scritto <<Limit>> Use 67% su 100000 MB.