Aggiorno il topic per proporre un'ulteriore soluzione a questo problema.
Nelle scorse settimane lo script ha sempre fatto il suo lavoro!
Tuttavia riscontravo sempre due-tre minuti di down nel momento in cui si verificava il cambio di IP.
Mi sono chiesto quindi se ci fosse un modo per far eseguire lo script solo quando routerOS rileva l'assenza di connessione anziché su base temporale (nel mio caso, verifica del ping ogni 5 minuti).
Nel momento in cui c'è un problema con l'interfaccia LTE, nel log di RouterOS troviamo la voce
lte1 link down
Come fare per dire allo script di riavviare l'interfaccia quando nel log viene registrato questo evento?
Cercando sul motore di ricerca, ho scoperto che esiste un tool integrato in RouterOS, il Netwatch, che permette di verificare periodicamente la raggiungibilità di un host.
Nel Netwatch si possono specificare l'intervallo di tempo in cui fare la verifica (es. ogni minuto) e il timeout in millisecondi.
Si possono compiere delle azioni sia nel caso in cui l'host sia raggiungibile sia nel caso in cui sia irraggiungibile.
Nel mio caso specifico, ho scelto di verificare ogni 30 secondi (così da limitare al minimo i periodi di down, rognosi soprattuto in caso di videochiamate) la raggiungibilità di 1.1.1.1 con un timeout di 1000 ms.
Nel caso in cui vada tutto bene, eseguo il seguente codice
:log info "** LTE go brrr **"
Nel caso in cui sia avvenuto il cambio di IP e quindi Cloudflare risulti irraggiungibile, eseguo quest'altro codice
{
:log warning "** LTE down **"
/interface lte disable lte1
:delay 3s
/interface lte enable lte1
:log info "** interfaccia LTE riavviata **"
}
Dai test degli ultimi giorni la funzionalità è pari a quella dello script, quindi ho disabilitato lo script nello scheduler ed lascio lavorare il solo Netwatch.
Spero che questo post possa servire a qualcuno (anzi, qualcunə) ;-)