MikroTik RouterOS, ağ yönetimini otomatikleştirmek, tekrar eden işlemleri kolaylaştırmak ve dinamik yönetim çözümleri oluşturmak için güçlü script (betik) desteği sunar. MikroTik’te scripts, scheduler ve API kullanarak yönlendiriciniz üzerinde otomasyon sağlayabilirsiniz.

Bu yazıda, MikroTik’te script yazmayı, otomatik görevleri planlamayı ve API ile uzaktan yönetimi adım adım ele alacağız.


1. MikroTik’te Komut Dosyaları (Scripts) Yazma

1.1. MikroTik Scripts Nedir ve Neden Kullanılır?

📌 Scripts (Komut Dosyaları), RouterOS üzerinde belirli işlemleri otomatik hale getiren betik dosyalarıdır.

Otomatik yedekleme oluşturma
Bağlantı kontrolü ve otomatik yeniden başlatma
IP adresi değiştirme veya güncelleme
Erişim loglarını belirli periyotlarda e-posta ile gönderme
Dinamik firewall kuralları ekleme ve kaldırma


1.2. MikroTik Script Yazma ve Çalıştırma

📌 WinBox ile MikroTik Script Yazma:
1️⃣ WinBox’a giriş yapın.
2️⃣ System > Scripts sekmesine gidin.
3️⃣ Add (+) butonuna basarak yeni bir script oluşturun.
4️⃣ Script’inize bir isim verin (Örn: AutoBackup).
5️⃣ Source (Kod Bölümü) kısmına aşağıdaki örnek kodu yazın.
6️⃣ Apply ve OK butonlarına basarak kaydedin.

📌 Komut Satırı (CLI) ile Script Yazma:

/system script add name=AutoBackup policy=ftp,reboot,read,write,policy,test,winbox source="
/system backup save name=backup-\$(date +%Y-%m-%d)
"

📌 Script’i Elle Çalıştırma:

/system script run AutoBackup

📌 Mevcut Scriptleri Listeleme:

/system script print

📌 Script Silme:

/system script remove AutoBackup

1.3. MikroTik’te Sık Kullanılan Script Örnekleri

📌 1. Otomatik RouterOS Yedekleme ve FTP’ye Gönderme

/system script add name=AutoBackup source="\
/system backup save name=Backup-\$(date +%Y-%m-%d);\
/tool fetch address=192.168.1.100 src-path=Backup-\$(date +%Y-%m-%d).backup \
user=ftpuser password=ftppass upload=yes dst-path=/router-backups/"

Bu script, günlük olarak yedek oluşturup FTP sunucusuna yükler.

📌 2. İnternet Bağlantısını Kontrol Eden ve Kopunca Resetleyen Script

/system script add name=InternetCheck source="\
:if ([/ping 8.8.8.8 count=5] = 0) do={\
    /interface disable ether1; \
    :delay 5s; \
    /interface enable ether1;\
}"

Bu script, her çalıştığında Google’a (8.8.8.8) ping atar. Eğer ping başarısız olursa, WAN bağlantısını resetler.

📌 3. DHCP Kullanıcılarını Listeleyip Belirli Kullanıcılara Özel IP Atama

/system script add name=SetStaticIP source="\
:foreach i in=[/ip dhcp-server lease find] do={\
    :local mac [/ip dhcp-server lease get \$i mac-address];\
    :local ip [/ip dhcp-server lease get \$i address];\
    :if (\$mac = \"AA:BB:CC:DD:EE:FF\") do={\
        /ip dhcp-server lease set \$i address=192.168.1.200;\
    }\
}"

Bu script, belirli MAC adresine sahip cihaza her zaman aynı IP’yi atar.


2. Otomatik Görevler (Scheduler) Kullanımı

MikroTik Scheduler, belirli zamanlarda veya periyotlarla işlemleri otomatik olarak çalıştırmak için kullanılır.

📌 Scheduler Kullanım Senaryoları:
Belirli aralıklarla yedekleme işlemi başlatmak.
Günlük internet hızını sıfırlamak veya trafik kullanımını sıfırlamak.
Gün sonunda otomatik olarak cihazı yeniden başlatmak.


2.1. MikroTik Scheduler Tanımlama

📌 Günlük Otomatik Yedekleme Scheduler Tanımlama:

/system scheduler add name=AutoBackup interval=1d on-event="/system script run AutoBackup" start-time=03:00:00

Bu kural, her gece saat 03:00’de yedekleme işlemini çalıştırır.

📌 Haftalık RouterOS Yeniden Başlatma Scheduler Tanımlama:

/system scheduler add name=AutoReboot interval=7d on-event="/system reboot" start-time=04:00:00

Bu kural, her hafta bir kez yönlendiriciyi yeniden başlatır.


3. API ile MikroTik Yönetimi

MikroTik API (Application Programming Interface), RouterOS cihazlarını uzaktan yönetmek ve otomatik işlemler gerçekleştirmek için kullanılır.

📌 MikroTik API Kullanım Senaryoları:
Harici bir yazılım veya web panel üzerinden MikroTik yönetimi
Otomatik cihaz yönetimi (Örneğin: Otomatik kullanıcı ekleme, trafik takibi)
Harici bir veritabanı veya CRM sistemi ile entegrasyon


3.1. MikroTik API’yi Aktif Etme

📌 API servisini açmak için:

/ip service enable api

📌 API erişimini belirli bir IP ile sınırlandırmak için:

/ip service set api address=192.168.1.100/32

📌 API için Kullanıcı Ekleme:

/user add name=apiuser password=securepass group=full

3.2. Python ile MikroTik API Kullanımı

📌 Örnek: MikroTik’e Python ile Bağlanma ve IP Adreslerini Listeleme

import routeros_api

connection = routeros_api.RouterOsApiPool('192.168.1.1', username='apiuser', password='securepass')
api = connection.get_api()

ip_addresses = api.get_resource('/ip/address')
for ip in ip_addresses.get():
    print(f"Interface: {ip['interface']}, IP: {ip['address']}")

connection.disconnect()

Bu Python kodu, MikroTik cihazına bağlanarak mevcut IP adreslerini listeler.

📌 API Kullanarak Yeni Bir Kullanıcı Eklemek:

users = api.get_resource('/user')
users.add(name="testuser", password="test123", group="write")

4. Sonuç

MikroTik RouterOS üzerinde Scripts, Scheduler ve API kullanarak otomasyon sağlayabilirsiniz.