Notifiche di LOG via Telegram su Mikrotik RouterOS

Le board Mikrotik che montano RouterOS da sempre offrono mille funzionalità tra cui una gestione molto potente degli script e degli scheduler. Un interessante script di Marco Boschini preso dal gruppo Telegram “Mikrotik Italia” di cui vi lascio il link: https://t.me/mikrotikitalia.

Lo script è personalizzabile e consente di analizzare i log dalla memoria e creare delle notifiche che verranno inviate tramite messaggio Telegram. La procedura è abbastanza semplice, prima si crea il proprio BOT che gestirà le notifiche, poi si crea un gruppo contenente noi ed il BOT e poi si copiano un paio di chiavi API nello script per far funzionare il tutto.

Creazione del BOT

Il primo passo è quello di aprire Telegram ed avviare una chat con “@BotFather”, si tratta di u BOT che crea BOT (logico no?). Apriamo quindi la chat e diamo il comando:

/newbot

il bot ci risponderà che è pronto a ricevere il nome del BOT che vogliamo creare, scegliamone uno a piacimento, battiamo invio e ci chiederà poi un username da assegnare al BOT che dovrà obbligatoriamente finire per “_bot”.

Se tutto è andato a buon fine dovrebbe risponderci qualcosa del tipo:

Done! Congratulations on your new bot. You will find it at XXXXX. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you’ve finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
YYYYYYYYYY:xxxxxxxxxxxxxxxxxxxxxx
Keep your token secure and store it safely, it can be used by anyone to control your bot.

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

La parte che più ci interessa è quella stringa contenente il codice API, teniamo quindi il messaggio a portata di mano, ci servirà tra un po’.

Creazione della CHAT

ora dobbiamo creare un gruppo che conterrà noi ed i bot appena creato, apriamo quindi ancora una volta Telegram, usiamo il menù laterale e facciamo “Create New Group”, aggiungiamo quindi il bot appena creato usando l’username che abbiamo scelto al passaggio precedente.

Oltre al nostro bot dovremo anche aggiungere un altro username che ci fornirà l’identificativo della chat, si tratta di “@myidbot” che ci serve per ottenere un altro dato fondamentale, aggiunti i partecipanti salviamo ed entriamo nel gruppo appena creato. Diamo il comando “/getgroupid@myidbot” e MyIdBot ci risponderà con un numero, annotiamolo e prepariamoci a creare lo script sul router.

Creazione dello script

Sorgente: https://github.com/iu2frl/TelegramRouterOS

Andiamo alla pagina GitHub qui sopra e scegliamo la versione più recente dello script (verificando che sia compatibile con la nostra versione di RouterOS, troviamo i dettagli al inizio dello script).

Apriamo WinBox e spostiamoci in [SYSTEM] -> [SCRIPT]

 

Premiamo il tasto “+” e creiamo un nuovo script con attivo solo il permesso “Read” e chiamiamolo “LogFilter”, nella parte bassa incolliamo lo script preso da GitHub inserendo la API KEY del bot (del primo passaggio) e il codice identificativo della chat (dal secondo passaggio).

Spostiamoci poi in [SYSTEM] -> [SCHEDULER] e creiamo un nuovo scheduler, impostiamo come ora di avvio “startup” (dal menù a tendina) e intervallo di esecuzione a 60s (o a nostro piacimento), nel codice inseriamo:

/system script run LogFilter;

Salviamo e chiudiamo tutte le schede, dopo qualche istante se tutto è andato a buon fine dovremmo ricevere i primi messaggi nella chat

Personalizzazione dello script

La riga che ci consente di filtrare i LOG ed inviarli come messaggio è quella

:local startBuf [:toarray [/log find message~” failure” || message~”loop” || message~”down” || message~”fcs” || message~”excessive” || message~”logged in” || message~”logged out” || message~”assigned” || message~”deassigned”]]

Si tratta di un filtro che controlla se al interno della riga di LOG è contenuta una specifica parola, se la condizione è soddisfatta ne estrae la riga e la invia tramite le API di Telegram, nello scheduler viene poi inserito come commento l’ultimo orario di esecuzione dello script per evitare di analizzare le righe precedenti. Possiamo aggiungere o togliere le keyword a nostro piacimento, evitiamo di usare quelle relative alle modifiche di scheduler in quanto ad ogni attivazione dello script viene generata una riga di log che verrebbe inviata al ciclo successivo creando una sorta di loop (seppur non critico – chiedetemi come ho fatto a scoprirlo HI!).

Altra condizione affinché vengano generati i messaggi è quella che gli argomenti interessati vengano salvati in “memory”, è sufficiente aprire il menù [SYSTEM] -> [LOGGING] e scegliere gli argomenti a piacere mettendo come destinazione [MEMORY].

E se non ho un Mikrotik?

Credo sia il caso di rimediare al più presto, si tratta di apparati professionali di altissima qualità, la mia RB951G mi accompagna accesa ininterrottamente da quasi 12 anni, occupandosi di filtro DNS (blocca pubblicità e siti malevoli), gestisce server VPN e molto altro!

Ovviamente ci sono modelli per tutte le tasche, per un utilizzo casalingo (come access point ad esempio) consiglio la hAP Lite che con il suo basso prezzo (circa 25 euro) porta tutte le funzionalità di RouterOS a casa vostra. Se invece siete in cerca di un modello più avanzato da spennare a fondo (magari con porta SFP per moduli in fibra ottica fino a 10GBit) la mia preferita è la RB4011 con 10 porte ethernet ad 1GBit e una porta SFP+

Post Disclaimer

Creative common license BY-NC_SA

Informazioni Importanti

Note generali: Le informazioni contenute in questo articolo sono di carattere informativo e rispecchiano le opinioni personali del autore. Tutte le guide nel sito vengono proposte "as it is" puramente a scopo didattico. L'utente che accetta di seguirne i passaggi si assume ogni responsabilità in caso di guasto/malfunzionamento o altro problema come conseguenza della modifica.

Link di affiliazione e contenuti promozionali: Nei post di iu2frl.it posso includere collegamenti a rivenditori. Posso ricevere una piccola commissione dal rivenditore se effettui un acquisto dopo aver fatto clic su uno di questi link. I post non sono espressamente sponsorizzati da rivenditori, editori, promotori o produttori, se non diversamente specificato chiaramente e tutte le decisioni editoriali sono prese esclusivamente dagli autori dei singoli articoli.

Contenuti riguardanti regolamenti e/o normative: Eventuali riferimenti a normative non costituiscono valore legale, si tratta di libere interpretazioni ed estratti di circolari corredate da eventuali commenti, si invitano tutti gli utenti a verificare la veridicità di tali informazioni sugli organi ufficiali di riferimento, nessuna colpa o responsabilità può essere data agli autori degli articoli.

Licenza di utilizzo: Tutti i contenuti vengono condivisi con licenza CC BY-NC-SA 4.0: Questa licenza consente ad altri di remixare, adattare e sviluppare i contenuti in modo non commerciale, purché accreditino l'autore originale e concedano in licenza le loro nuove creazioni con gli stessi termini. Per maggiori informazioni visitare il sito Creative Commons.

Important Informations

General notes: The information contained in this article is of an informative nature and reflects the personal opinions of the author. All the guides/tutorial on the website are offered "as it is" for educational purposes only. The user who agrees to follow the steps assumes all responsibility in case of failure/malfunctioning or other problem as a result of the modification.

Affiliate links and promotional products: In some posts of iu2frl.it I can include links to resellers. I can get a small commission from the reseller if you make a purchase after clicking on one of these links. The posts are not expressly sponsored by resellers, publishers, promoters or producers, unless otherwise clearly specified and all editorial decisions are made solely by the authors of the individual articles.

Contents about rules and laws: Some articles may contain portions or whole laws or rules regarding specific areas, these kind of content are meant to be indicative only, no responsability can be given to the authors. Always refer to official sources when looking for rules or laws.

Contents licenses: All the contents are published as CC BY-NC-SA 4.0: This license lets others remix, adapt, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.. For more informations please visit Creative Commons website.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *