MIKROTIK RESET BUTTON

MIKROTIK CHANGE MODE RESET BUTTON
In questo articolo scopriamo la potenza dello scripting Mikrotik impostando due differenti scenari semplicemente premendo il Reset Button, rendendo un’interfaccia jolly che assume differenti scenari nelle due modalità.
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 e all’occorrenza vuoi avere un’interfaccia WAN per isolare i tuoi dispositivi dalla rete dell’Hotel?
In questo articolo vedremo una versione più evoluta dello script MIKROTIK SCRIPT PRIORITA’ WIFI postato in precedenza su questo sito che sfrutta al massimo le potenzialità dello Scripting Mikrotik integrando il Reset Button e l’interazione dei LED garantendo un’esperienza migliore.
Componenti utilizzati:
Livello difficoltà: Medio-Semplice
Il dispositivo mAP2n non è una scelta casuale, ma grazie alla sua dimensione, possibilità di personalizzazione dei led, possibilità di alimentarlo in tre modi diversi (usb, JACK 8-57V, POE 802.3af) e la possibilità di renderlo un router LTE collegando una chiavetta USB LTE (es. HUAWEI E3372H).
Crea una configurazione standard dove predisponi il map come nel diagramma seguente:

N.B. è fondamentale creare quanto segue oltre a quando indicato nel diagramma:
- Configura il Security Profile di Default con con dynamic-keys, aes-ccm, wpa2-psk e setta WPA2 Pre-Shared Key;
- Aggiungi un nuovo Security Profile e chiamalo: profile-WLAN2 con dynamic-keys, aes-ccm, wpa2-psk e setta WPA2 Pre-Shared Key;
- Aggiungi un nuovo Security Profile e chiamalo: profile-WLAN3 con dynamic-keys, aes-ccm, wpa2-psk e setta WPA2 Pre-Shared Key;
- Aggiungi l’interfaccia “wlan2” virtuale e settala come “ap-bridge” e imposta come Security profile: profile-WLAN2
- Aggiungi l’interfaccia “wlan3” virtuale e settala come “ap-bridge” e imposta come Security profile: profile-WLAN3
- Aggiungi wlan2 e wlan3 al bridge;
- Configura wlan1 in modalità Station;
Qui di seguito trovi il riepilogo completo della configurazione di base:
/interface bridge
add name=bridge1 port-cost-mode=short
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n disabled=no ssid="Hotspot-fabio" wireless-protocol=802.11
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk mode=dynamic-keys supplicant-identity=MikroTik wpa2-pre-shared-key=1234abcd
add authentication-types=wpa2-psk mode=dynamic-keys name=profile-WLAN2 supplicant-identity="" wpa2-pre-shared-key=12345678
add authentication-types=wpa2-psk mode=dynamic-keys name=profile-WLAN3 supplicant-identity="" wpa2-pre-shared-key=12345678
/interface wireless
add disabled=no keepalive-frames=disabled master-interface=wlan1 multicast-buffering=disabled name=wlan2 security-profile=profile-WLAN2 ssid="Connesso Via Verdi" \
wds-cost-range=1 wds-default-cost=1 wps-mode=disabled
add disabled=no keepalive-frames=disabled master-interface=wlan1 multicast-buffering=disabled name=wlan3 security-profile=profile-WLAN3 ssid=Casa wds-cost-range=1 \
wds-default-cost=1 wps-mode=disabled
/ip pool
add name=pool1 ranges=10.10.10.2-10.10.10.100
/interface bridge port
add bridge=bridge1 interface=ether2 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=wlan2
add bridge=bridge1 interface=wlan3
/ip address
add address=10.10.10.1/24 interface=bridge1 network=10.10.10.0
/ip dhcp-client
add disabled=yes interface=ether1
add default-route-distance=2 interface=wlan1
/ip dhcp-server
add address-pool=pool1 interface=bridge1 name=server1
/ip dhcp-server network
add address=10.10.10.0/24 dns-server=1.1.1.1 domain=workgroup gateway=10.10.10.1
/ip dns
set allow-remote-requests=yes
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=wlan1
/system clock
set time-zone-name=Europe/Rome
Come potete vedere la configurazione è molto semplice.
Ora vai in New Terminal e incolla il seguente script:
/system routerboard reset-button
set enabled=yes hold-time=0s..2s on-event="{\
\n#----------------------------------------\
\n#SCRIPT DUALMODE CON RESET BUTTON\
\n# MODE 1 - ether1 WAN - Riceve un IP è usa ether1 come WAN\
\n# MODE 2 - wlan1 WAN - SCANSIONA RETI WIFI E SCEGLIE QUELLA PRIORITARIA\
\n#\\n# COMPATIBILE SOLO CON MODELLI AC (interfaccia wlan1)\
\n#\
\n# Version: 2.0\
\n# RouterOS v.7.16.2\
\n# Created: 31/01/2025\
\n# Updated: 28/02/2025\
\n# Author: Fois Fabio\
\n# Editor: Fois Fabio\
\n# Website: https://foisfabio.it\
\n# Email: consulenza@foisfabio.it\
\n#\
\n# ChangeLog: v1.1: *) Aggiunti rete trasmessa in base all'Hotspot a cui si e' connessi;\
\n# ChangeLog: v1.2: *) Verifica se Ethernet 1 e' una WAN verso internet e usa questo percorso come predefinito;\
\n# ChangeLog: v2.0: *) Modifica globale per gestione diretta con tasto reset e cicli automatici con While senza Scheduler;\
\n#\
\n#----------------------------------------\
\n# SETTARE LE RETI IN ORDINE DI PRIORITA'\
\n# PRIORITA' 1 PRIORITA' PIU' ALTA\
\n# LA VARIABILE SSIDTX INDICA LA RETE CHE VIENE TRASMESSA SU wlan2 in base all'hotspot connesso\
\n#------------------------------------------\
\n# RETE 1\
\n:local ssid1 \"Project (Galaxy Note20 Ultra 5G)\"\
\n:local pw1 \"Jack123344\"\
\n:local ssidTx1 \"Connesso Antonio\"\
\n:local pwTx1 \"12345678\"\
\n#------------------------------------------\
\n# RETE 2\
\n:local ssid2 \"Angel\"\
\n:local pw2 \"Firenze1234\"\
\n:local ssidTx2 \"Connesso Angelica\"\
\n:local pwTx2 \"12345678\"\
\n#------------------------------------------\
\n# RETE 3\
\n:local ssid3 \"iPhone di Jason Statham\"\
\n:local pw3 \"Venezia5678\"\
\n:local ssidTx3 \"Connesso Fabio\"\
\n:local pwTx3 \"12345678\"\
\n#------------------------------------------\
\n# RETE 4\
\n:local ssid4 \"VIA VERDI Network\"\
\n:local pw4 \"pippo1233\"\
\n:local ssidTx4 \"Connesso Via Verdi\"\
\n:local pwTx4 \"12345678\"\
\n#------------------------------------------\
\n# RETE 5\
\n:local ssidTx5 \"Connesso via Ethernet\"\
\n:local pwTx5 \"12345678\"\
\n#------------------------------------------\
\n# INTERFACCE PRINCIPALI\
\n:local Jollyinterface \"ether1\"\
\n:local bridgeName \"bridge1\"\
\n#------------------------------------------\
\n\
\n\
\n#----------NO MODIFY THIS SECTION----------\
\n\
\n:local bridgePortID [/interface bridge port find interface=\$Jollyinterface]\
\n:local targetLED1 \"lo\"\
\n:local targetLED2 \"bridge-loopback\"\
\n\
\n# Se non esiste aggiunge un'interfaccia di loopback aggiuntiva\
\n:if ([:len [/interface bridge find where name=\"bridge-loopback\"]] = 0) do={\
\n :log info \"Il bridge bridge-loopback non esiste, lo sto creando...\"\
\n /interface bridge add name=\"bridge-loopback\"\
\n}\
\n# Disabilita le assegnazioni di default dei led 3 e 5\
\n:if ([/system led get 2 disabled] = false) do={\
\n /system leds set 2 disabled=yes\
\n}\
\n:if ([/system led get 4 disabled] = false) do={\
\n /system leds set 4 disabled=yes\
\n}\
\n\
\n# Verifica se il LED per \"lo\" \C3\A8 assegnato, altrimenti lo aggiunge\
\n:if ([:len [/system leds find where interface=lo && leds=led3]] = 0) do={\
\n /system leds add disabled=yes interface=lo leds=led3 type=interface-status\
\n}\
\n\
\n# Verifica se il LED per \"bridge-loopback\" \C3\A8 assegnato, altrimenti lo aggiunge\
\n:if ([:len [/system leds find where interface=bridge-loopback && leds=led5]] = 0) do={\
\n /system leds add disabled=yes interface=bridge-loopback leds=led5 type=interface-status\
\n}\
\n\
\n#Gestisce la co,,utazione delle modalita'\
\n :global mode\
\n :if (\$mode = 0) do={\
\n :set mode 1\
\n } else={\
\n :set mode 0\
\n }\
\n :global mode\
\n\
\n # Modalita' 0: Connessione WAN Ethernet\
\n :if (\$mode = 0) do={ \
\n :log warning \"Modalita' 0: Connessione Wan Ethernet\"\
\n /system leds set [find interface=\$targetLED2] disabled=yes\
\n # Se ether1 \C3\A8 nel bridge, lo rimuove\
\n :if (\$bridgePortID != \"\") do={\
\n :put \"Ether1 \C3\A8 nel bridge, lo rimuovo...\"\
\n /interface bridge port remove \$bridgePortID\
\n :delay 1s\
\n /ip dhcp-client enable [find interface=\$Jollyinterface]\
\n /interface wireless disable [find name=wlan2]\
\n /interface wireless set [find default-name=wlan1] mode=ap-bridge ssid=\$ssidTx5 security-profile=profile-WLAN2\
\n :while (\$mode = 0) do={\
\n :if ([:len [/ip dhcp-client get [find interface=\$Jollyinterface] address]] = 0) do={\
\n :for i from=1 to=2 do={\
\n /system leds set [find interface=\$targetLED1] disabled=no\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED1] disabled=yes\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED1] disabled=no\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED1] disabled=yes\
\n :delay 0.6\
\n } \
\n } else={\
\n :if ([/system led get [find interface=\$targetLED1] disabled] = true) do={\
\n /system led set [find interface=\$targetLED1] disabled=no\
\n :log info \"Ether1 ha ottenuto un IP\"\
\n }\
\n } \
\n } \
\n }\
\n } \
\n # Modalita' 1: Connessione Wi-Fi\
\n :if (\$mode = 1) do={ \
\n :log warning \"Modalita' 1: Connessione WAN Wi-Fi\"\
\n :if ([/system led get [find interface=\$targetLED1] disabled] = false) do={\
\n /system leds set [find interface=\$targetLED1] disabled=yes\
\n }\
\n :put \"Ether1 non e' nel bridge, lo aggiungo...\"\
\n /ip dhcp-client disable [find interface=\$Jollyinterface]\
\n /interface bridge port add bridge=\$bridgeName interface=\$Jollyinterface\
\n /interface wireless enable [find name=wlan2]\
\n /interface wireless set [find default-name=wlan1] mode=station security-profile=default\
\n\
\n :delay 8s;\
\n\
\n # Esegui scansione delle reti ogni 10 secondi\
\n :while (\$mode = 1) do={ \
\n :local currentSsid [/interface wireless get [find default-name=wlan1] ssid]\
\n :local wlanRunning [/interface wireless get [find default-name=wlan1] running]\
\n :local scanMode \"\"\
\n :local bestSsid \"\"\
\n :local bestPw \"\"\
\n :local bestSsidTx \"\"\
\n :local bestPwTx \"\"\
\n # Se Wi-Fi NON \C3\A8 connesso, lampeggia il LED Wi-Fi\
\n :if (\$wlanRunning = false) do={\
\n :set scanMode \"no\"\
\n :log info \"Wi-Fi non connesso, scansione normale.\"\
\n :for i from=1 to=4 do={\
\n /system leds set [find interface=\$targetLED2] disabled=no\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED2] disabled=yes\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED2] disabled=no\
\n :delay 0.1\
\n /system leds set [find interface=\$targetLED2] disabled=yes\
\n :delay 0.6\
\n } \
\n } else={\
\n :set scanMode \"yes\"\
\n :log info \"Wi-Fi connesso, scansione in background.\"\
\n :log info (\"Wi-Fi connesso attualmente a: \" . \$currentSsid) \
\n }\
\n :delay 8s;\
\n :set bestSsid \"\"\
\n :set bestPw \"\"\
\n :set bestSsidTx \"\"\
\n :set bestPwTx \"\"\
\n\
\n # Esegue la scansione delle reti disponibili ogni 10 secondi\
\n :foreach result in=([/interface wireless scan wlan1 background=\$scanMode duration=8 as-value]) do={\
\n :local scanssid (\$result->\"ssid\")\
\n :put \$scanssid\
\n :log info (\"Rete trovata: \" . \$scanssid)\
\n\
\n # Se trova una rete migliore, la seleziona\
\n :if (\$scanssid = \$ssid1) do={\
\n :set bestSsid \$ssid1\
\n :set bestPw \$pw1\
\n :set bestSsidTx \$ssidTx1\
\n :set bestPwTx \$pwTx1\
\n } else={\
\n :if (\$scanssid = \$ssid2 && (\$bestSsid != \$ssid1)) do={\
\n :set bestSsid \$ssid2\
\n :set bestPw \$pw2\
\n :set bestSsidTx \$ssidTx2\
\n :set bestPwTx \$pwTx2\
\n } else={\
\n :if (\$scanssid = \$ssid3 && (\$bestSsid != \$ssid2)) do={\
\n :set bestSsid \$ssid3\
\n :set bestPw \$pw3\
\n :set bestSsidTx \$ssidTx3\
\n :set bestPwTx \$pwTx3\
\n } else={\
\n :if (\$scanssid = \$ssid4 && (\$bestSsid != \$ssid3)) do={\
\n :set bestSsid \$ssid4\
\n :set bestPw \$pw4\
\n :set bestSsidTx \$ssidTx4\
\n :set bestPwTx \$pwTx4\
\n } else={\
\n :if ([/system led get [find interface=\$targetLED2] disabled] = true) do={\
\n /system led set [find interface=\$targetLED2] disabled=no\
\n }\
\n } \
\n }\
\n }\
\n }\
\n }\
\n \
\n :delay 5s;\
\n\
\n # Se deve cambiare rete, lo fa\
\n :if (([:len \$bestSsid] > 0) && (\$currentSsid != \$bestSsid)) do={\
\n /interface wireless set [find default-name=wlan1] ssid=\$bestSsid\
\n /interface wireless security-profiles set [find default=yes] wpa2-pre-shared-key=\$bestPw\
\n /interface wireless set [find name=wlan2] ssid=\$bestSsidTx\
\n /interface wireless security-profiles set [find name=\"profile-WLAN2\"] wpa2-pre-shared-key=\$bestPwTx\
\n :log warning (\"Connessione alla rete \" . \$bestSsid)\
\n :if ([/system led get [find interface=\$targetLED2] disabled] = true) do={\
\n /system led set [find interface=\$targetLED2] disabled=no\
\n }\
\n } else={\
\n :log info \"Nessuna nuova rete da impostare o gia' connesso alla rete migliore.\"\
\n }\
\n\
\n # Dopo aver eseguito la scansione, aspetta 10 secondi\
\n :delay 20\
\n }\
\n}\
\n}\
\n\
\n \
\n \
\n \
\n "
Ora vai nel menù System Routerboard Reset Button e modifica lo Script in base alle Reti al quale vuoi collegarti in base alle priorità che vuoi ottenere prestando attenzione a non corrompere la sintassi.

Se trovassi lo script disposto in modo differente senza rispettare le righe puoi copiare una versione pulida da sostituire da questo link: SCRIPT MAP JOLLY
Descrizione Script:
E’ buona norma quando si inserisce uno script su un router Mikrotik analizzare le funzioni che svolge.
Lo script attuale può assumere il controllo di queste parti quando in esecuzione:
- Modifica SSID e Password di wlan2 e wlan3;
- Scansiona in modo continuo le Reti Wifi disponibili;
- Inserisce e rimuove ether1 dal bridge;
- Attiva e disattiva il dhcp-client su ether1;
- Prende il controllo dei LED POE out e AP/CAP;
- Aggiunge un’interfaccia di loopback aggiuntiva;
Lo script una volta lanciato potrebbe rimanere in esecuzione per svolgere alcune delle funzioni sopra citate, se si volesse disabilitare temporaneamente è sufficiente digitare nel terminale il seguente comando:
/system routerboard reset-button set enabled=no
Di seguito analizziamo le due modalità dello script:
1. Script Reset Button Modalità 1: WAN ether1
Dopo aver eseguito le personalizzazioni, se premiamo una volta il tasto reset, si autoconfigura il seguente scenario:
- Ether1 WAN con dhcp client attivo e NAT;
- Bridge con ether2, wlan2 e wlan3;
- wlan2 è una rete di spia che indica via SSID la modalità attiva dello script. In questo caso riproduce una rete con SSID Connesso via ethernet;
- wlan3 è una rete Statica che funge da vera e propria rete privata su cui possiamo collegare i nostri device;
- Il led ROSSO POE OUT lampeggia quando attiva questa modalità e rimane fisso quando ether1 ha acquisito un’ip;

2. Script Reset Button Modalità 2: WAN wlan1
Se premiamo nuovamente il tasto Reset, si attiva la Modalità 2:
- wlan1 WAN con dhcp client attivo e NAT;
- Disabiltazione del dhcp-client di ether1;
- Ether1 viene aggiunto al bridge e diventa una seconda LAN;
- wlan1 è una rete di spia che indica via SSID la modalità attiva dello script. In questo caso riproduce una rete con SSID Connesso via ……; (il nome viene cambiato dinamicamente in vase alla rete a cui ci siamo connessi – personalizzabile nella variabile ssidTx);
- wlan2 viene disabiltato;
- wlan3 è una rete Statica che funge da vera e propria rete privata su cui possiamo collegare i nostri device;
- Il led VERDE AP/CAP lampeggia quando attiva questa modalità e non si è connessi ad una rete e rimane fisso quando wlan1 si è connesso ad una rete;
- La scansione aviene ciclicamente anche in background e se disponibile una rete con priorità più bassa si viene spostati su essa;
- Nei log vengono riportati i dati di scansione e di connessione alla rete;

N.B. Questo script potrebbe non funzionare su altri modelli in quanto alcuni modelli permettono la sola attivazione del led user e non degli altri led.
Il funzionamento del tasto Reset ai fini i resettare il router non interagisce con il presente script in quanto lo stesso è possibile solo premendo il tasto ad alimentazione scollegata e alimentando il router con il tasto già premuto.
Ti è piaciuta questa guida MIKROTIK RESET BUTTON?
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 5 / 5. Conteggio dei voti: 1
Nessun voto finora! Sii il primo a valutare questo post.