MIKROTIK REST API STATIC ROUTE

MIKROTIK SCRIPT BASH – REST API
In questo articolo vediamo come aggiungere una static route via script su vari Router Mikrotik Remoti accessibili in VPN con script basato su REST API
Introduzione
Qualche giorno fa ho ricevuto una richiesta particolare:
“Ciao Fabio, ho un CHR Mikrotik con circa 60 client connessi via VPN. Avrei la necessità di aggiungere una rotta statica a tutti i router remoti, ma vorrei evitare di farlo a mano su ogni singolo router. I client remoti appartengono a clienti diversi per cui non condividono le rotte tra di loro, ma devono solo raggiungere un server lato CHR. È possibile realizzare uno script che automizzi questo processo?”
Dal CHR si potrebbe pensare di usare uno script con SSH EXEC per lanciare i comandi, ma questa soluzione richiede l’importazione delle chiavi SSH di ogni router, rendendo il processo complicato e macchinoso.
Ho quindi pensato a una soluzione più semplice e scalabile: usare le REST API di Mikrotik, ma considerando le restrizioni presenti sulle richieste HTTP avanzate del comando /tool fetch
di RouterOS ho dovuto optare per una soluzione differente.
La soluzione definitiva è stata usare un server Linux (Ubuntu) con uno script bash che esegue le chiamate REST API direttamente via curl. Questa soluzione funziona perfettamente ed è molto più flessibile.
Prerequisiti
1. Abilitare API e WWW sui router Mikrotik remoti esponendoli al Server. (Si raccomanda di esporre al solo al server Ubuntu questi servizi, ed utilizzare questo script solo all’interno di Reti Locali dove il rischio di intercettazione dei dati sia limitato. Ad ogni modo è possibile utilizzare API-SSL e https con certificati in ambienti dove ci sono probabilità di intercetazione dei dati).
2. Server Linux (Ubuntu o simile) con accessibilità ai Router Mikrotik Remoti attraverso tunnel VPN.
3. Pacchetti curl
e nano
installati sul server Ubuntu. Se non sono presenti installali con i seguenti comandi:
sudo apt-get update
sudo apt-get install curl nano -y
Obbiettivo 1: Creare lo script bash per aggiungere la rotta
1. Crea un nuovo file chiamato add-route.sh
usando nano
nano add-route.sh
2. Incolla il seguente contenuto nello script:
#!/bin/bash
# Credenziali accesso router remoti
USER="admin"
PASSWORD="password"
# Lista degli IP dei router a cui inviare la richiesta
ROUTERS=(
"10.246.159.50"
"10.246.159.51"
"10.246.159.52"
"10.246.159.53"
"10.246.180.1"
)
# Varibili della rotta da inserire
DST_ADDRESS="10.10.10.2/32"
GATEWAY="10.100.100.1"
# NON MODIFICARE QUANTO SEGUE
for IP in "${ROUTERS[@]}"; do
echo "➤ Inviando rotta a $IP..."
RESPONSE=$(curl -s -w "\nHTTP_CODE:%{http_code}" -k -u "$USER:$PASSWORD" \
-X PUT "http://$IP/rest/ip/route" \
-H "Content-Type: application/json" \
--data "{\"dst-address\":\"$DST_ADDRESS\",\"gateway\":\"$GATEWAY\"}")
HTTP_CODE=$(echo "$RESPONSE" | grep HTTP_CODE | cut -d: -f2)
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then
echo " ✅ Rotta aggiunta con successo su $IP"
else
echo " ❌ Errore su $IP:"
echo "$RESPONSE" | sed '/HTTP_CODE/d'
fi
done
echo "Grazie per aver utilizzato questo script offerto da foisfabio.it"
3. Modifica i gli ip dei router remoti e della rotta senza rompere la sintassi;
4. Salva il file premendo ctrl+X e confermando con Y;
5. Rendilo eseguibile assegnando i permessi necessari:
chmod +x add-route.sh
6. Lancia lo Script con il seguente comando:
./add-route.sh
Come possiamo vedere dall’output abbiamo un riscontro immediato sul funzionamento dello script e l’aggiunta delle static route nei Router Mikrotik remoti.
Qui di seguito puoi trovare un video dimostrativo:
Ti è piaciuta questa guida MIKROTIK API REST ADD ROUTE?
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.