MIKROTIK SCRIPT PRIORITA’ WIFI

MIKROTIK CONNESSIONE A PIU’ RETI
In questo articolo vedremo come utilizzare un Router Mikrotik da viaggio in modalità “Station” scegliendo la rete WiFi a quale connettersi per priorità tramite uno script.
Porti sempre con te un Router Mikrotik per lavoro o svago? Hai necessità di poterlo connettere a più reti Wi-Fi evitando di dover ogni volta connetterti al router per selezionare la rete al quale collegarsi?
Qui di seguito vedremo come poter fare tramite uno script ad sviluppato ad Hoc “MIKROTIK SCRIPT PRIORITA’ WIFI”
Componenti utilizzati:
Livello difficoltà: Semplice
Qualche giorno fa, mi ha contattato un amico che aveva necessità di programmare un router da portarsi sempre dietro, avendo la possibilità di impostare più reti al quale collegarsi in base a delle priorità.
Nel suo caso questo Router doveva avere:
– Priorità 1: Il suo Hotspot dello smartphone;
– Priorità 2: La rete di Casa;
– Priorità 3: La rete dell’ufficio;
– Priorità 4: L’Hotspot dello smartphone di un suo collega.
Lo scopo principale è poter raggiungere momentaneamente dei dispositivi raggiunti via ethernet dando connessione al Router tramite Wi-Fi.
A questo scopo è stata impostata l’interfaccia wlan1 in modalità “Station” con frequenza in “auto”, l’interfaccia wlan2 in modalità “AP bridge” che imposta dinamicamente SSID e Password in base alla rete a cui si collega il router e l’interfaccia wlan3 è sempre in modalità “Ap Bridge” con SSID e Password Statici.
Le interfacce wlan2 e wlan3 sono delle interfacce virtuali che condividono la stessa radio dell’interfaccia wlan1.
N.B. Si raccomanda prima di attivare lo script di creare due interfacce wireless virtuali rinominandole corrispettivamente: wlan2 e wlan3.
Obbiettivo 1: Importare lo script e personalizzarlo
1. Accedi al Router Mikrotik tramite Winbox;
2. Vai nel menu New Terminal;
3. Incolla lo script seguente e premi il tasto invio;
/system script
add dont-require-permissions=yes name=scan-wlan1-script-1.1 owner=admin \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
source="{\r\
\n#----------------------------------------\r\
\n# SCANSIONA RETI WIFI E SCEGLIE QUELLA PRIORITARIA\r\
\n# \r\
\n# COMPATIBILE SOLO CON MODELLI AC (interfaccia wlan1)\r\
\n#\r\
\n# Version: 1.1\r\
\n# RouterOS v.7.16.2\r\
\n# Created: 31/01/2025\r\
\n# Updated: 02/02/2025\r\
\n# Author: Fois Fabio\r\
\n# Editor: Fois Fabio\r\
\n# Website: https://foisfabio.it\r\
\n# Email: consulenza@foisfabio.it\r\
\n#\r\
\n# ChangeLog: v1.1: *) Aggiunti rete trasmessa in base all'Hotspot a cui \
si \E8 connessi;\r\
\n#\r\
\n#----------------------------------------\r\
\n# SETTARE LE RETI IN ORDINE DI PRIORITA'\r\
\n# PRIORITA' 1 PRIORITA' PIU' ALTA\r\
\n# LA VARIABILE SSIDTX INDICA LA RETE CHE VIENE TRASMESSA SU wlan2 in bas\
e all'hotspot connesso\r\
\n#------------------------------------------\r\
\n# RETE 1\r\
\n:local ssid1 \"iPhone di Jason Statham\"\r\
\n:local pw1 \"Venezia1\"\r\
\n:local ssidTx1 \"Connesso Antonio\"\r\
\n:local pwTx1 \"12345678\"\r\
\n#------------------------------------------\r\
\n# RETE 2\r\
\n:local ssid2 \"VIA VERDI Network\"\r\
\n:local pw2 \"psfndmwmx3sns\"\r\
\n:local ssidTx2 \"Connesso Casa\"\r\
\n:local pwTx2 \"12345678\"\r\
\n#------------------------------------------\r\
\n# RETE 3\r\
\n:local ssid3 \"OFFICE_NET\"\r\
\n:local pw3 \"office1234\"\r\
\n:local ssidTx3 \"Connesso Ufficio\"\r\
\n:local pwTx3 \"12345678\"\r\
\n#------------------------------------------\r\
\n# RETE 4\r\
\n:local ssid4 \"HOME_WIFI\"\r\
\n:local pw4 \"home5678\"\r\
\n:local ssidTx4 \"Connesso Roberto\"\r\
\n:local pwTx4 \"12345678\"\r\
\n#------------------------------------------\r\
\n# MODIFICARE SOLO INTERVAL SE NECESSARIO\r\
\n:local NameScript \"scan-wlan1-script-1.1\"\r\
\n:local NameScheduler \"scan-wlan1-scheduler-1.1\"\r\
\n:local IntervalTime \"00:05:00\"\r\
\n\r\
\n#----------NO MODIFY THIS SECTION----------\r\
\n\r\
\n\r\
\n# CREA LO SHEDULER SE NON ESISTE\r\
\n \r\
\n:if ([:len [/system scheduler find name=\"\$NameScheduler\"]] = 0) do={\
\r\
\n /log error \"[\$NameScript] Alert : lo Scheduler non esiste. Creo lo\
\_scheduler\";\r\
\n /system scheduler add name=\$NameScheduler interval=\$IntervalTime s\
tart-date=Jan/01/1970 start-time=startup on-event=\"/system script run \$N\
ameScript\"\r\
\n /log warning \"[\$NameScript] Alert : Scheduler creato .\"\r\
\n }\r\
\n\r\
\n# Creazione scheduler al boot\r\
\n:local NameSchedulerBoot \"scan-wlan1-scheduler-boot\"\r\
\n:if ([:len [/system scheduler find name=\$NameSchedulerBoot]] = 0) do={\
\r\
\n /system scheduler add name=\$NameSchedulerBoot interval=\"00:00:00\"\
\_start-date=Jan/01/1970 start-time=startup on-event=\":delay 20s; /system\
\_script run scan-wlan1-script\"\r\
\n :log warning \"Scheduler di boot creato.\"\r\
\n}\r\
\n\r\
\n#----------------------------------------\r\
\n\r\
\n:local bestSsid \"\"\r\
\n:local bestPw \"\"\r\
\n:local bestSsidTx \"\"\r\
\n:local bestPwTx \"\"\r\
\n\r\
\n:log info \"Inizio scansione delle reti wireless...\"\r\
\n\r\
\n:local currentSsid [/interface wireless get [ find default-name=wlan1 ] \
ssid]\r\
\n:local wlanRunning [/interface wireless get [ find default-name=wlan1 ] \
running]\r\
\n\r\
\n:local scanMode \"\"\r\
\n:if (\$wlanRunning) do={\r\
\n :set scanMode \"yes\"\r\
\n :log info \"Wi-Fi attivo, scansione in background.\"\r\
\n :log info (\"Wi-Fi attivo, attualmente connesso a: \" . \$currentSsi\
d)\r\
\n} else={\r\
\n :set scanMode \"no\"\r\
\n :log info \"Wi-Fi non attivo, scansione normale.\"\r\
\n}\r\
\n\r\
\n:foreach result in=([/interface wireless scan wlan1 background=\$scanMod\
e duration=8 as-value]) do={\r\
\n :local scanssid (\$result->\"ssid\")\r\
\n :put \$scanssid\r\
\n :log info (\"Rete trovata: \" . \$scanssid)\r\
\n\r\
\n :if (\$scanssid = \$ssid1) do={\r\
\n :set bestSsid \$ssid1\r\
\n :set bestPw \$pw1\r\
\n :set bestSsidTx \$ssidTx1\r\
\n :set bestPwTx \$pwTx1\r\
\n :log info (\"Rete con priorit\E0 1 trovata: \" . \$ssid1)\r\
\n } else={\r\
\n :if (\$scanssid = \$ssid2 && \$bestSsid = \"\") do={\r\
\n :set bestSsid \$ssid2\r\
\n :set bestPw \$pw2\r\
\n :set bestSsidTx \$ssidTx2\r\
\n :set bestPwTx \$pwTx2\r\
\n :log info (\"Rete con priorit\E0 2 trovata: \" . \$ssid2)\r\
\n } else={\r\
\n :if (\$scanssid = \$ssid3 && \$bestSsid = \"\") do={\r\
\n :set bestSsid \$ssid3\r\
\n :set bestPw \$pw3\r\
\n :set bestSsidTx \$ssidTx3\r\
\n :set bestPwTx \$pwTx3\r\
\n :log info (\"Rete con priorit\E0 3 trovata: \" . \$ssid3\
)\r\
\n } else={\r\
\n :if (\$scanssid = \$ssid4 && \$bestSsid = \"\") do={\r\
\n :set bestSsid \$ssid4\r\
\n :set bestPw \$pw4\r\
\n :set bestSsidTx \$ssidTx4\r\
\n :set bestPwTx \$pwTx4\r\
\n :log info (\"Rete con priorit\E0 4 trovata: \" . \$s\
sid4)\r\
\n }\r\
\n }\r\
\n }\r\
\n }\r\
\n}\r\
\n\r\
\n:if (\$bestSsid != \"\" && \$currentSsid != \$bestSsid) do={\r\
\n /interface wireless set [ find default-name=wlan1 ] ssid=\$bestSsid\
\r\
\n /interface wireless security-profiles set [ find default=yes ] wpa2-\
pre-shared-key=\$bestPw\r\
\n /interface wireless set [ find name=wlan2 ] ssid=\$bestSsidTx\r\
\n /interface wireless security-profiles set [ find name=\"profile-WLAN\
2\" ] wpa2-pre-shared-key=\$bestPwTx\r\
\n :log info (\"Connessione alla rete \" . \$bestSsid)\r\
\n} else={\r\
\n :log info \"Nessuna nuova rete da impostare o gi\E0 connesso alla re\
te migliore.\"\r\
\n}\r\
\n}\r\
\n"
Dopo aver incollato lo script nel terminale e aver premuto invio, vai nel menu System Script e apri lo script con il nome: “scan-wlan1-script-1.1”

Modifica le variabili senza corrompere la sintassi, impostando le reti nelle variabili.
Le variabili ssid1 e password1 rappresentano la rete con maggiore priorità al quale vogliamo connetterci.
Le variabili ssidTx1 e pwTx1 rappresentano la rete che viene dinamicamente trasmessa quando il router sarà connesso alla rete impostata su ssid1 e password1.
A seguire vale lo stesso principio per le altre tre reti con priorità minore.
Dopo aver editato le variabile clicca su “Run Script” , si creeranno automaticamente degli Scheduler che faranno uno scan all’avvio del router e ciclicamente ogni 5 minuti.
Se il router non è connesso viene eseguita la scansione in modalità tradizionale, se invece il router è già connesso ad una rete, la scansione avverrà in Background. Nell’eventualità nel raggio d’azione del Router Mikrotik vengano rilevate più reti inserite nello script, avverrà sempre la connessione alla Rete con Priorità maggiore.
Nei log potrai vedere i progressi dello script come da immagine seguente:

Ti è piaciuta questa guida MIKROTIK SCRIPT PRIORITA’ WIFI?
Scrivi il tuo parere nei commenti o contattami attraverso la sezione Contatti.
Puoi supportare foisfabio.it con una piccola donazione oppure commenta e condividi questo contenuto.
Hai riscontrato errori in questa guida?? segnalacelo tramite la scheda CONTATTI
Guida redatta da Fabio Fois.
Copyright © 2025 foisfabio.it | Powered by Fabio Fois
Quanto è stato utile questo post?
Clicca su una stella per valutarla!
Voto medio 0 / 5. Conteggio dei voti: 0
Nessun voto finora! Sii il primo a valutare questo post.