Zautomatyzowane skrypty Bash i Python do integracji z MikroTik – praktyczny przewodnik
🧠 Zautomatyzowane skrypty Bash i Python do integracji z MikroTik – praktyczny przewodnik
W nowoczesnych środowiskach sieciowych automatyzacja odgrywa kluczową rolę w zwiększaniu wydajności, skracaniu czasu reakcji i minimalizacji błędów administracyjnych. Choć MikroTik oferuje potężne narzędzie WinBox oraz dostęp przez interfejs WWW, prawdziwa siła tkwi w automatyzacji poprzez CLI, API i zewnętrzne skrypty.
W tym artykule przedstawiamy szczegółowe scenariusze integracji MikroTik z narzędziami zewnętrznymi przy pomocy skryptów Bash i Python. Skupimy się zarówno na prostych automatyzacjach, jak i bardziej zaawansowanych integracjach z systemami monitoringu, bezpieczeństwa i DevOps.
🎯 Dlaczego warto automatyzować MikroTik?
- Spójność konfiguracji – powtarzalność i brak błędów ludzkich
- Reakcja w czasie rzeczywistym – np. na incydenty bezpieczeństwa lub przeciążenia
- Integracja z systemami zewnętrznymi – SIEM, monitoring, ITSM, SOAR
- Skalowalność – zarządzanie dziesiątkami lub setkami urządzeń jednocześnie
📦 Narzędzia i metody dostępu
Przed rozpoczęciem pisania skryptów warto znać dostępne metody komunikacji z MikroTik:
| Metoda | Opis | Wsparcie w skryptach |
|---|---|---|
| SSH | Bezpośrednie połączenie do CLI | ✅ Bash, ✅ Python |
| MikroTik API | Binarny protokół komunikacyjny RouterOS | ❌ Bash, ✅ Python |
| REST API | Nowy interfejs HTTP w nowszych RouterOS | ✅ Bash, ✅ Python |
| Telnet | Legacy, niewskazane dla produkcji | 🔶 Bash, 🔶 Python |
| CLI scripting | Skrypty lokalne uruchamiane z terminala | ✅ RouterOS |
🛠️ SCENARIUSZ 1: Automatyczne dodawanie adresu do blacklisty przez skrypt Bash (SSH)
Cel: Wykryto nieautoryzowane połączenie z serwera – automatyczne zablokowanie IP na MikroTik.
Skrypt (bash):
#!/bin/bash
IP_TO_BLOCK="$1"
ROUTER_IP="192.168.88.1"
USERNAME="admin"
PASSWORD="twoje_haslo"
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no $USERNAME@$ROUTER_IP <<EOF
/ip firewall address-list add address=$IP_TO_BLOCK list=blacklist timeout=1d comment="Zablokowane przez skrypt"
EOF
Użycie:
./block_ip.sh 185.23.123.55
Wymaga
sshpass. Można go zintegrować z cronem, SIEM lub innym systemem.

🧪 SCENARIUSZ 2: Sprawdzenie zużycia CPU i wysłanie alertu do systemu monitoringu
Cel: Codziennie sprawdź stan CPU i powiadom, jeśli przekracza 80%.
Skrypt (bash):
#!/bin/bash
THRESHOLD=80
CPU_USAGE=$(ssh admin@192.168.88.1 "/system resource print" | grep 'cpu-load' | awk '{print $2}')
if [ "$CPU_USAGE" -gt "$THRESHOLD" ]; then
curl -X POST -H "Content-Type: application/json" \
-d "{\"alert\": \"High CPU on MikroTik: ${CPU_USAGE}%\"}" \
http://monitoring.local/api/alerts
fi
🐍 SCENARIUSZ 3: Zdalna konfiguracja NAT przez Python + API
Cel: Zautomatyzowana konfiguracja reguły NAT (np. port forwarding).
Skrypt (Python):
from librouteros import connect
api = connect(username='admin', password='haslo', host='192.168.88.1')
firewall_nat = api.path("ip", "firewall", "nat")
rule = {
"chain": "dstnat",
"protocol": "tcp",
"dst-port": "2222",
"action": "dst-nat",
"to-addresses": "192.168.88.100",
"to-ports": "22"
}
firewall_nat.add(**rule)
print("Reguła NAT dodana.")
Wymaga biblioteki
librouteros:
pip install librouteros
🌐 SCENARIUSZ 4: Masowe wdrożenie reguł firewall do wielu MikroTików
Cel: Skrypt Python, który iteruje przez listę routerów i wgrywa zestaw reguł.
Przykład (Python):
import paramiko
routers = [
{"ip": "192.168.1.1", "user": "admin", "pass": "pass1"},
{"ip": "192.168.2.1", "user": "admin", "pass": "pass2"},
]
commands = [
'/ip firewall filter add chain=input protocol=tcp dst-port=22 action=drop comment="blok ssh"',
'/ip firewall filter add chain=input protocol=tcp dst-port=80 action=accept comment="http"',
]
for router in routers:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(router['ip'], username=router['user'], password=router['pass'])
for cmd in commands:
stdin, stdout, stderr = ssh.exec_command(cmd)
print(stdout.read().decode())
ssh.close()
🚨 SCENARIUSZ 5: Automatyczne backupy konfiguracji MikroTik
Skrypt (bash):
#!/bin/bash
ROUTER_IP="192.168.88.1"
USER="admin"
PASS="haslo"
DATE=$(date +%Y%m%d_%H%M)
sshpass -p "$PASS" ssh $USER@$ROUTER_IP "/system backup save name=backup_$DATE"
/usr/bin/scp $USER@$ROUTER_IP:backup_$DATE.backup /mnt/backups/
Dodatkowo można wysyłać pliki backupu na serwer FTP, SFTP, do AWS S3 itp.
🔐 SCENARIUSZ 6: Integracja z systemem SIEM (Wazuh, Splunk, ELK)
Możesz wysyłać logi MikroTik do sysloga zewnętrznego i monitorować je w czasie rzeczywistym, a skrypt wykrycia anomalii może:
- zablokować IP
- wysłać dane do SOAR
- zrestartować interfejs
- zmodyfikować konfigurację
Integracja skryptów pozwala na pełne zautomatyzowanie procesów bezpieczeństwa i reakcji – w czasie rzeczywistym.
🧠 Rekomendacje bezpieczeństwa
- Zawsze szyfruj hasła (np. użyj
keyring,vault,gpg) - Ogranicz dostęp do kluczy SSH
- Zastosuj rate limiting i whitelisty IP
- Używaj
readonlyAPI tokens (w RouterOS 7+) - Monitoruj logi dostępu do MikroTik
🏁 Podsumowanie
Automatyzacja MikroTik przy użyciu Bash i Pythona to realna szansa na zwiększenie bezpieczeństwa, przyspieszenie zarządzania i uproszczenie integracji z infrastrukturą DevOps i SOC. Wdrożenie takich rozwiązań umożliwia nie tylko szybszą reakcję na problemy, ale także efektywne zarządzanie dużymi środowiskami sieciowymi.
Z odpowiednio zaprojektowanym zestawem skryptów, MikroTik staje się nie tylko routerem – ale inteligentnym i samodzielnym elementem architektury bezpieczeństwa i dostępności sieci.






