Home » blog » Cara Membuat Script dan Scheduler di Mikrotik untuk Otomatisasi

Cara Membuat Script dan Scheduler di Mikrotik untuk Otomatisasi

Router terbaik bukanlah router yang selalu Anda sentuh, melainkan router yang tahu tugasnya sendiri tanpa menunggu perintah. Pengelola RT-RW Net dengan 150 pelanggan tidak punya waktu membuka Winbox setiap pagi hanya untuk mengambil backup, memeriksa apakah uplink sempat putus semalam, atau mematikan pemancar WiFi balai desa pada tengah malam. Di titik itulah script Mikrotik menjadi pembeda antara jaringan yang bergantung pada manusia 24 jam dan jaringan yang mampu merawat dirinya sendiri. RouterOS sudah membawa bahasa scripting bawaan plus penjadwal internal, jadi Anda tidak memerlukan server tambahan hanya untuk otomatisasi sederhana.

Sayangnya banyak teknisi berhenti pada tahap menyalin potongan script Mikrotik dari forum tanpa memahami cara kerjanya. Alhasil ketika perintah itu gagal jalan di scheduler padahal sukses ketika mereka menjalankannya manual, banyak yang menyerah dan kembali mengerjakan semuanya dengan tangan. Padahal penyebabnya sering hanya satu hal sepele: policy yang kurang, atau jam router yang meleset karena NTP mati.

Artikel ini membahas otomatisasi RouterOS dari nol sampai siap produksi. Anda akan mempelajari dasar sintaks, perintah yang paling sering dipakai di lapangan, cara kerja scheduler, perbedaannya dengan netwatch, tujuh contoh skrip yang benar-benar berguna, sampai studi kasus RT-RW Net yang mengotomatiskan backup dan pelaporan. Semua perintah pada artikel ini saya tulis dari konfigurasi yang memang berjalan di router produksi, bukan hasil terjemahan dokumentasi.

Pengertian Script Mikrotik dan Kapan Anda Membutuhkannya

Script Mikrotik adalah kumpulan perintah RouterOS yang Anda simpan dengan sebuah nama, lalu router jalankan secara berurutan ketika Anda memanggilnya atau ketika penjadwal memicunya. Isinya persis perintah yang biasa Anda ketik di terminal Winbox, hanya saja router menyimpannya permanen di dalam konfigurasi dan skrip itu bisa memuat logika percabangan, perulangan, serta variabel. RouterOS menyimpan seluruh skrip di menu /system script, dan penjadwalnya berdiri sendiri di /system scheduler.

Bahasa scripting RouterOS memang bukan bahasa pemrograman lengkap seperti Python. Namun kemampuannya sudah cukup untuk sembilan puluh persen kebutuhan operator: mengambil nilai dari konfigurasi, membandingkannya, mengambil keputusan, lalu mengubah konfigurasi lain atau mencatat sesuatu ke log. Karena mesinnya berjalan di dalam perangkat, script Mikrotik tetap bekerja meskipun koneksi ke internet putus dan tidak ada satu pun komputer teknisi yang menyala.

Perlu Anda catat sejak awal bahwa otomatisasi bukan solusi untuk semua hal. Router dengan RB750 atau hEX lite punya CPU terbatas, sehingga script Mikrotik berat yang berjalan setiap detik justru menurunkan performa forwarding paket. Aturan praktis saya: otomatiskan pekerjaan yang berulang, membosankan, dan berisiko terlupa; biarkan manusia tetap menangani pekerjaan yang butuh penilaian.

Pekerjaan yang Paling Layak Diotomatiskan

Dari pengalaman mengelola belasan router pelanggan, ada pola pekerjaan yang hampir selalu layak menjadi tugas penjadwal internal router. Pertama, backup konfigurasi. Hampir tidak ada teknisi yang disiplin melakukannya setiap minggu, padahal biaya kehilangan konfigurasi jauh lebih mahal daripada biaya membuat skrip lima baris.

Kedua, pemantauan uplink. Anda ingin tahu jam berapa persisnya koneksi ISP putus tadi malam supaya bisa menuntut SLA, dan log router adalah bukti paling murah untuk itu. Ketiga, keamanan: memasukkan alamat penyerang ke address-list dan membersihkannya lagi setelah beberapa hari agar tabel tidak menggelembung. Keempat, pekerjaan berbasis jadwal seperti menyalakan atau memadamkan WiFi, memutus sesi pelanggan yang menunggak, dan membersihkan cache DNS.

Berikut daftar ringkas pekerjaan yang biasanya saya jadikan target otomatisasi pada router RT-RW Net:

  • Backup konfigurasi mingguan berikut pengirimannya lewat email
  • Pencatatan status uplink beserta jam putus dan jam pulih
  • Pemindahan alamat penyerang ke daftar blokir permanen
  • Pembersihan entri address-list yang sudah kedaluwarsa
  • Penjadwalan hidup-mati pemancar WiFi di area publik
  • Pemutusan sesi PPPoE pelanggan yang jatuh tempo
  • Pembersihan cache DNS agar memori tetap lega
  • Pelaporan pemakaian trafik harian ke administrator

Dasar Sintaks: Variabel, Tipe Data, dan Operator

Setiap script Mikrotik mengenal dua jenis variabel. Deklarasi :local membuat variabel yang hanya hidup selama skrip berjalan, sedangkan :global membuat variabel yang menetap di memori router sehingga skrip lain bisa membacanya. Saya menyarankan Anda memakai :local sebagai default, karena sisa variabel global yang berserakan sering menimbulkan bug aneh saat dua skrip berjalan berbarengan.

Tipe data di RouterOS mencakup num (angka), str (teks), ip, ip-prefix, bool, time, array, dan id. Mesin scripting cukup pintar menebak tipe dari nilai yang Anda tulis, tetapi Anda tetap sering perlu melakukan konversi eksplisit ketika menggabungkan angka dengan teks. Operator penggabung teks adalah titik, bukan tanda tambah, dan inilah kesalahan pertama yang hampir selalu menjebak pemula.

Komentar Anda tulis dengan tanda pagar di awal baris. Tanda pagar terasa sepele, tetapi enam bulan kemudian Anda akan berterima kasih kepada diri sendiri karena sempat menuliskan alasan sebuah baris ada di sana. Perhatikan pula tanda kurung siku: kurung siku memerintahkan RouterOS mengeksekusi perintah di dalamnya lebih dulu, lalu menyerahkan hasilnya kepada variabel, dan tanpa kurung siku router hanya menyimpan teks mentah.

Perintah Penting dalam Script Mikrotik

Ada sekitar sepuluh perintah yang menyusun hampir semua script Mikrotik di router produksi. Perintah :put menampilkan hasil ke layar terminal dan hanya berguna saat Anda menguji secara manual, sebab penjadwal tidak punya layar. Sebaliknya :log menulis ke log router sehingga Anda tetap bisa membaca hasilnya meski skrip berjalan pukul tiga pagi.

Percabangan memakai :if dengan blok do={} dan opsional else={}. Perulangan memakai :foreach yang berjalan di atas array, biasanya hasil dari perintah find. Fungsi :delay menahan eksekusi beberapa detik, dan ini wajib Anda pakai setelah membuat file backup sebelum mengirimkannya, karena penulisan file ke disk butuh waktu.

Tiga perintah konversi juga sering muncul: :resolve mengubah nama domain menjadi alamat IP, :tostring mengubah nilai apa pun menjadi teks, dan :toip mengubah teks menjadi tipe IP sehingga bisa dibandingkan dengan benar. Terakhir, /system script run menjalankan skrip lain, sehingga Anda bisa memecah pekerjaan besar menjadi beberapa skrip kecil yang saling memanggil. Contoh berikut merangkum sintaks dasar sekaligus seluruh perintah tadi, dan Anda bisa menempelkannya langsung ke terminal Winbox:

# --- Variabel lokal dan global ---
:local namaRouter [/system identity get name]
:local jumlahPelanggan 150
:global statusUplink "normal"

# --- Operator aritmatika dan penggabungan teks memakai titik ---
:local kapasitas 100
:local terpakai 73
:local sisa ($kapasitas - $terpakai)
:put ("Router " . $namaRouter . " melayani " . $jumlahPelanggan . " pelanggan")
:put ("Sisa kapasitas: " . $sisa . " Mbps")

# --- Percabangan ---
:if ($terpakai > 80) do={ :put "Trafik padat" } else={ :put "Trafik aman" }

# --- Menulis ke log dengan level berbeda ---
:log info "Skrip harian mulai berjalan"
:log warning "Trafik uplink mendekati batas"
:log error "Backup gagal dibuat"

# --- Perulangan atas hasil find ---
:foreach i in=[/interface find where running=yes] do={
  :local namaIf [/interface get $i name]
  :log info ("Interface aktif: " . $namaIf)
}

# --- Jeda eksekusi ---
:delay 5s

# --- Konversi domain ke IP lalu ke teks ---
:local ipSmtp [:resolve "smtp.example.com"]
:log info ("Alamat SMTP: " . [:tostring $ipSmtp])

# --- Konversi teks menjadi tipe IP ---
:local teksIp "203.0.113.1"
:local ipAsli [:toip $teksIp]
:put [:typeof $ipAsli]

# --- Memanggil skrip lain dari dalam skrip ---
/system script run laporan-harian

Satu catatan lapangan soal :resolve. Perintah itu gagal dan menghentikan seluruh skrip apabila DNS router sedang bermasalah, jadi bungkuslah dengan penanganan error bila skrip tersebut kritis. RouterOS menyediakan blok do={} on-error={} yang menangkap kegagalan tanpa membuat sisa skrip ikut berhenti.

Alur Kerja Script Mikrotik dan Scheduler
Alur Kerja Script Mikrotik dan Scheduler

Cara Kerja Script Mikrotik dan Scheduler

Alur eksekusinya sebenarnya sederhana dan hanya melibatkan empat komponen. Scheduler bertugas sebagai jam weker: ia menyimpan waktu mulai dan interval, lalu memicu sesuatu ketika waktunya tiba. Pemicu itu bisa menunjuk nama skrip yang sudah ada di router, bisa juga memuat perintah yang Anda tulis langsung di kolom on-event.

Begitu pemicu berbunyi, RouterOS memeriksa policy. Router membandingkan izin milik penjadwal dengan izin milik skrip, lalu mengambil irisan keduanya sebagai izin efektif. Apabila skrip Anda ingin mengubah konfigurasi tetapi izin efektifnya hanya read, eksekusi berhenti di baris itu juga dan router menuliskan pesan penolakan ke log.

Setelah lolos pemeriksaan izin, mesin scripting menjalankan baris demi baris dari atas ke bawah. Hasil akhirnya masuk ke log sistem apabila Anda menuliskannya dengan :log, dan penjadwal mencatat waktu eksekusi terakhir beserta hitungan berapa kali skrip itu sudah berjalan. Kolom run-count pada /system scheduler print adalah cara tercepat memastikan penjadwal Anda benar-benar bekerja.

Parameter start-time, interval, dan on-event

Tiga parameter inilah yang menentukan perilaku penjadwal. Parameter start-time menetapkan jam pertama kali skrip berjalan dalam format 24 jam, misalnya 03:00:00. Nilai khusus startup membuat skrip berjalan sekitar tiga menit setelah router selesai booting, dan nilai itu sangat berguna untuk skrip yang harus memulihkan keadaan setelah listrik padam.

Parameter interval menentukan jarak antar eksekusi dengan satuan detik, menit, jam, atau hari. Penulisan interval=1d berarti sekali sehari, interval=7d sekali seminggu, dan interval=00:05:00 setiap lima menit. Apabila Anda mengisi interval dengan nol, penjadwal hanya berjalan satu kali pada jam yang Anda tetapkan lalu berhenti selamanya.

Parameter on-event memuat pekerjaan yang harus router lakukan. Isilah dengan nama skrip untuk pekerjaan panjang, atau dengan perintah langsung untuk pekerjaan satu baris. Ada pula start-date bila Anda ingin penjadwal mulai bekerja pada tanggal tertentu, misalnya awal bulan depan saat siklus tagihan berganti.

# Menyimpan skrip sederhana
/system script add name=halo-router policy=read,test source={
  :log info ("Halo dari " . [/system identity get name])
}

# Menguji skrip secara manual sebelum dijadwalkan
/system script run halo-router

# Menjadwalkan skrip setiap hari pukul 03:00
/system scheduler add name=sched-halo start-time=03:00:00 interval=1d \
  on-event="halo-router" policy=read,test comment="uji penjadwal harian"

# Menjadwalkan perintah langsung tanpa membuat skrip terpisah
/system scheduler add name=sched-uptime start-time=startup interval=0 \
  on-event=":log info (\"Router booting pada \" . [/system clock get time])" \
  policy=read,test

# Memeriksa apakah penjadwal benar-benar berjalan
/system scheduler print detail

Perbedaan Scheduler dan Netwatch

Banyak teknisi mencampuradukkan kedua fitur ini padahal pemicunya berbeda total. Waktu memicu scheduler, sedangkan perubahan status host memicu netwatch. Netwatch memiliki dua kolom eksekusi, yaitu up-script yang berjalan saat host kembali merespons dan down-script yang berjalan saat host berhenti merespons.

Perbedaan itu punya konsekuensi praktis. Netwatch hanya menembak sekali pada saat transisi, sehingga log Anda tetap bersih tanpa banjir pesan berulang selama gangguan berlangsung tiga jam. Sebaliknya penjadwal dengan interval satu menit akan menuliskan enam puluh baris log untuk gangguan satu jam yang sama.

Pilihan saya di lapangan: pakai netwatch untuk deteksi putus-nyambung uplink dan failover, pakai scheduler untuk pekerjaan rutin berbasis kalender seperti backup dan pelaporan. Kalau Anda sedang membangun jalur cadangan antar-ISP, artikel tentang konfigurasi failover dua jalur internet membahas kombinasi netwatch dan perubahan rute secara lebih mendalam.

AspekSchedulerNetwatch
PemicuWaktu dan intervalStatus host naik atau turun
Menu/system scheduler/tool netwatch
Jumlah slot skripSatu (on-event)Dua (up-script dan down-script)
Frekuensi eksekusiBerulang sesuai intervalSekali tiap transisi status
Cocok untukBackup, laporan, jadwal WiFiDeteksi uplink putus, failover
Beban CPUNaik bila interval terlalu pendekRingan, sebatas ping berkala

Kelebihan dan Kekurangan Otomatisasi dengan Script Mikrotik

Keuntungan terbesar otomatisasi adalah konsistensi. Router tidak pernah lupa, tidak pernah mengantuk, dan tidak pernah menunda pekerjaan karena sedang mengurus pelanggan lain. Backup yang seharusnya berjalan tiap Minggu dini hari benar-benar berjalan tiap Minggu dini hari, tanpa perlu Anda ingat.

Keuntungan kedua adalah kecepatan reaksi. Script Mikrotik yang memindahkan alamat penyerang ke daftar blokir bekerja dalam hitungan detik, jauh sebelum Anda sempat membuka laptop. Keuntungan ketiga menyangkut dokumentasi: setiap eksekusi meninggalkan jejak di log, sehingga Anda punya bukti untuk menelusuri kejadian sebulan lalu.

Namun otomatisasi juga membawa risiko yang nyata. Script Mikrotik yang salah tulis bisa memutus semua pelanggan sekaligus pada pukul dua pagi tanpa satu pun manusia yang menyadarinya. Beban CPU juga naik apabila Anda menjadwalkan perulangan berat setiap sepuluh detik pada perangkat kelas hEX. Karena itu saya selalu menguji skrip baru di router cadangan lebih dulu sebelum memasangnya di router produksi.

KelebihanKekurangan
Pekerjaan rutin berjalan konsisten tanpa terlupaKesalahan logika ikut berulang otomatis
Reaksi terhadap serangan hitungan detikInterval pendek membebani CPU router kecil
Tidak butuh server atau aplikasi tambahanBahasa scripting terbatas dibanding Python
Setiap eksekusi meninggalkan jejak di logDebugging menyulitkan karena pesan error singkat
Konfigurasi ikut terbawa saat backupSkrip lama sering tidak kompatibel antarversi
Menghemat jam kerja teknisi tiap bulanSalah policy membuat skrip diam tanpa peringatan

Persiapan Sebelum Menulis Script Mikrotik

Langkah persiapan pertama menyangkut waktu router. Seluruh penjadwal bersandar pada jam internal, jadi jam yang meleset membuat backup Anda berjalan pukul sepuluh pagi saat trafik sedang padat. Aktifkan klien NTP dan setel zona waktu sesuai lokasi Anda, karena RouterOS baru keluar pabrik biasanya masih memakai UTC.

Persiapan kedua adalah ruang penyimpanan. Perangkat dengan flash 16 MB akan cepat penuh bila Anda menyimpan backup mingguan tanpa pernah menghapusnya, dan router yang kehabisan ruang bisa gagal melakukan upgrade. Periksa sisa kapasitas dengan /system resource print sebelum menjadwalkan apa pun yang menulis file.

Persiapan ketiga menyangkut hak akses. Buatlah kebiasaan menjalankan skrip dengan akun yang punya izin memadai, dan jangan menyimpan kata sandi email sebagai teks polos di dalam skrip bila banyak orang bisa mengakses perangkat tersebut. Panduan pengamanan dasar router Mikrotik menjelaskan pembatasan akses administrator yang sebaiknya Anda terapkan lebih dulu.

Sebelum melangkah ke bagian berikutnya, jalankan empat perintah pemeriksaan ini secara berurutan. Mulailah dari /system clock set time-zone-autodetect=no time-zone-name=Asia/Jakarta untuk mengunci zona waktu, lalu /system ntp client set enabled=yes agar jam tersinkron. Setelah itu periksa hasilnya dengan /system clock print dan pastikan ruang kosong masih memadai lewat /system resource print. Perintah lengkapnya juga muncul kembali di bagian troubleshooting artikel ini.

Implementasi Script Mikrotik Langkah demi Langkah

Bagian ini berisi enam script Mikrotik yang benar-benar saya pakai di router pelanggan. Semuanya saya tulis lengkap sehingga Anda bisa menyalinnya, mengganti nama interface dan alamat email, lalu langsung menjalankannya. Kerjakan berurutan dari langkah pertama supaya Anda terbiasa dengan pola uji manual sebelum menjadwalkan.

Langkah 1 — Backup Konfigurasi Mingguan lalu Kirim lewat Email

Skrip ini membuat dua berkas sekaligus. Berkas .backup berisi salinan biner yang bisa Anda kembalikan utuh ke perangkat sejenis, sedangkan berkas .rsc hasil /export berisi teks perintah yang bisa Anda baca dan tempel sebagian saja. Kombinasi keduanya adalah standar minimum yang saya pakai untuk setiap router produksi.

Sebelum menjalankan skrip, setel dulu akun pengirim di menu /tool e-mail. RouterOS 7 memakai parameter server untuk menunjuk mesin SMTP, sedangkan RouterOS 6 masih memakai parameter address. Bila Anda salah memilih parameter, terminal langsung menolak baris tersebut sehingga kesalahan itu mudah dikenali. Satu catatan lagi untuk pengguna RouterOS 6: format tanggalnya memuat garis miring, jadi ganti bagian penamaan berkas dengan potongan teks memakai :pick agar nama berkas tetap sah.

Perhatikan pemakaian :delay di antara pembuatan berkas dan pengiriman email. Penulisan berkas ke flash memerlukan waktu, dan tanpa jeda tersebut router sering mengirim email dengan lampiran kosong. Bila Anda ingin memahami mekanisme backup dan pemulihan lebih jauh, bacalah dulu ulasan tentang reset dan backup konfigurasi RouterOS.

# --- Konfigurasi akun pengirim (RouterOS 7) ---
/tool e-mail set server=[:resolve "smtp.example.com"] port=587 tls=starttls \
  from="admin@example.com" user="admin@example.com" password="katasandianda"

# Catatan: pada RouterOS 6 gantilah "server=" menjadi "address="

# --- Skrip backup mingguan ---
/system script add name=backup-mingguan policy=read,write,test,ftp,sensitive source={
  :local idRouter [/system identity get name]
  :local tanggal [/system clock get date]
  :local namaFile ($idRouter . "-" . $tanggal)

  # Membuat salinan biner dan salinan teks
  /system backup save name=$namaFile dont-encrypt=yes
  :delay 10s
  /export compact file=$namaFile
  :delay 10s

  :local berkasBiner ($namaFile . ".backup")
  :local berkasTeks ($namaFile . ".rsc")
  :local isiPesan ("Backup otomatis dari router " . $idRouter . " tanggal " . $tanggal)

  /tool e-mail send to="admin@example.com" subject=("Backup " . $idRouter) \
    body=$isiPesan file=$berkasBiner
  :delay 15s
  /tool e-mail send to="admin@example.com" subject=("Export " . $idRouter) \
    body=$isiPesan file=$berkasTeks
  :delay 15s

  # Membersihkan berkas agar flash tidak penuh
  /file remove [find name=$berkasBiner]
  /file remove [find name=$berkasTeks]
  :log info ("Backup mingguan selesai untuk " . $idRouter)
}

# --- Penjadwal setiap tujuh hari pukul 02:00 ---
/system scheduler add name=sched-backup start-time=02:00:00 interval=7d \
  on-event="backup-mingguan" policy=read,write,test,ftp,sensitive \
  comment="backup mingguan dan kirim email"

Langkah 2 — Memantau Koneksi Internet dan Mencatatnya ke Log

Script Mikrotik pemantau bekerja dengan cara paling sederhana namun tetap andal, yaitu mengirim ping ke alamat publik lalu menghitung berapa balasan yang kembali. Perintah /ping mengembalikan jumlah balasan sukses sebagai angka, sehingga Anda tinggal membandingkannya dengan nol. Variabel global menyimpan status terakhir supaya router hanya menulis log ketika status benar-benar berubah.

Pola ini menghemat ruang log secara drastis. Tanpa penyimpanan status, gangguan selama tiga jam dengan interval satu menit menghasilkan 180 baris log yang tidak berguna. Dengan penyimpanan status, kejadian yang sama hanya meninggalkan dua baris: satu saat putus dan satu saat pulih, lengkap dengan jamnya.

Netwatch sanggup melakukan hal serupa dengan konfigurasi lebih ringkas, dan saya memang lebih sering memakainya untuk uplink. Contoh netwatch saya sertakan di bagian bawah blok perintah supaya Anda bisa membandingkan langsung keduanya. Pilih salah satu saja supaya log tidak mencatat kejadian yang sama dua kali.

# --- Skrip pemantau uplink ---
/system script add name=pantau-uplink policy=read,write,test source={
  :global uplinkTerakhir
  :local target 203.0.113.1
  :local balasan [/ping $target count=3 interval=1s]

  :if ([:typeof $uplinkTerakhir] = "nothing") do={ :set uplinkTerakhir "up" }

  :if ($balasan = 0) do={
    :if ($uplinkTerakhir = "up") do={
      :set uplinkTerakhir "down"
      :log error ("UPLINK PUTUS pada " . [/system clock get time] . " tanggal " . [/system clock get date])
    }
  } else={
    :if ($uplinkTerakhir = "down") do={
      :set uplinkTerakhir "up"
      :log warning ("UPLINK PULIH pada " . [/system clock get time] . " tanggal " . [/system clock get date])
    }
  }
}

# --- Penjadwal setiap satu menit ---
/system scheduler add name=sched-pantau start-time=startup interval=00:01:00 \
  on-event="pantau-uplink" policy=read,write,test

# --- Alternatif memakai netwatch (pilih salah satu saja) ---
/tool netwatch add host=203.0.113.1 interval=30s timeout=2s comment="uplink utama" \
  down-script=":log error \"Uplink utama putus\"" \
  up-script=":log warning \"Uplink utama pulih\""

Langkah 3 — Menambahkan IP Penyerang ke Address-List

Pertahanan terhadap serangan brute force paling efektif Anda bangun berlapis. Aturan firewall menangkap percobaan koneksi berulang ke port manajemen lalu melemparkan alamat sumbernya ke address-list sementara dengan masa berlaku satu hari. Sesudah itu skrip memindahkan alamat tersebut ke daftar permanen supaya firewall tidak perlu menangkap ulang pelaku yang sama bulan depan.

Aturan firewall di bawah memakai tiga tahap. Tahap pertama menandai percobaan koneksi baru, tahap kedua menaikkan status alamat yang mencoba lagi dalam waktu singkat, dan tahap ketiga membuang alamat itu ke daftar blokir. Teknik bertingkat semacam ini mencegah router memblokir teknisi Anda sendiri hanya karena salah ketik kata sandi sekali.

Script Mikrotik pemindah menjalankan pemeriksaan duplikat sebelum menambahkan entri. Tanpa pemeriksaan itu, daftar permanen akan berisi alamat yang sama berkali-kali dan memperlambat pencocokan firewall. Pemeriksaannya cukup memakai :len atas hasil find, dan pola tersebut berlaku untuk hampir semua menu RouterOS.

# --- Aturan firewall penangkap brute force pada port SSH ---
/ip firewall filter
add chain=input protocol=tcp dst-port=22 connection-state=new \
  src-address-list=ssh-tahap2 action=add-src-to-address-list \
  address-list=ssh-blacklist address-list-timeout=1d comment="tahap 3 blokir"
add chain=input protocol=tcp dst-port=22 connection-state=new \
  src-address-list=ssh-tahap1 action=add-src-to-address-list \
  address-list=ssh-tahap2 address-list-timeout=1m comment="tahap 2"
add chain=input protocol=tcp dst-port=22 connection-state=new \
  action=add-src-to-address-list address-list=ssh-tahap1 \
  address-list-timeout=1m comment="tahap 1"
add chain=input protocol=tcp dst-port=22 src-address-list=ssh-blacklist \
  action=drop comment="buang penyerang"

# --- Skrip memindahkan penyerang ke daftar permanen ---
/system script add name=simpan-penyerang policy=read,write,test source={
  :local jumlahBaru 0
  :foreach i in=[/ip firewall address-list find list="ssh-blacklist"] do={
    :local alamat [/ip firewall address-list get $i address]
    :local sudahAda [:len [/ip firewall address-list find list="blacklist-permanen" address=$alamat]]
    :if ($sudahAda = 0) do={
      /ip firewall address-list add list="blacklist-permanen" address=$alamat \
        comment=("penyerang tersimpan " . [/system clock get date])
      :set jumlahBaru ($jumlahBaru + 1)
      :log warning ("IP penyerang disimpan permanen: " . $alamat)
    }
  }
  :log info ("Pemindahan selesai, entri baru: " . $jumlahBaru)
}

/system scheduler add name=sched-penyerang start-time=00:30:00 interval=1d \
  on-event="simpan-penyerang" policy=read,write,test

Langkah 4 — Menghapus Entri Address-List yang Kedaluwarsa

Entri address-list yang Anda buat lewat firewall dengan parameter address-list-timeout hilang sendiri ketika masa berlakunya habis, jadi daftar itu tidak perlu Anda urus. Masalah muncul pada entri statis, misalnya daftar permanen hasil langkah sebelumnya atau daftar blokir yang pernah Anda tempel manual. Entri statis bertahan selamanya sampai ada yang menghapusnya.

Pendekatan paling praktis adalah menandai setiap entri dengan komentar bertanggal saat menambahkannya, lalu menghapus seluruh isi daftar secara berkala dan membiarkan firewall mengisinya kembali. Cara ini memang kasar, namun jauh lebih aman daripada mengutak-atik perbandingan tanggal yang formatnya berbeda antara RouterOS 6 dan RouterOS 7.

Skrip di bawah menghitung dulu jumlah entri sasaran lalu mencatatnya ke log sebelum bertindak. Kebiasaan menghitung sebelum menghapus menyelamatkan saya beberapa kali, sebab log itulah satu-satunya petunjuk ketika ternyata skrip menyapu daftar yang salah. Jadwalkan pembersihan ini sebulan sekali, bukan setiap hari.

# --- Skrip pembersih daftar blokir permanen ---
/system script add name=bersih-blacklist policy=read,write,test source={
  :local namaDaftar "blacklist-permanen"
  :local jumlah [:len [/ip firewall address-list find list=$namaDaftar dynamic=no]]

  :if ($jumlah = 0) do={
    :log info ("Daftar " . $namaDaftar . " sudah kosong, tidak ada yang dihapus")
  } else={
    /ip firewall address-list remove [find list=$namaDaftar dynamic=no]
    :log warning ("Pembersihan " . $namaDaftar . " selesai, " . $jumlah . " entri terhapus")
  }
}

# --- Penjadwal sebulan sekali, 30 hari ---
/system scheduler add name=sched-bersih start-time=01:00:00 interval=30d \
  on-event="bersih-blacklist" policy=read,write,test \
  comment="bersihkan daftar blokir permanen tiap 30 hari"

# --- Memeriksa isi daftar secara manual ---
/ip firewall address-list print where list="blacklist-permanen"

Langkah 5 — Menjadwalkan Hidup-Mati WiFi dan Pemutusan Sesi PPPoE

Pengelola hotspot balai desa, sekolah, dan masjid sering meminta penjadwalan pemancar WiFi. Alasannya bermacam-macam, mulai dari menghemat listrik, mengurangi penyalahgunaan pada dini hari, sampai memenuhi permintaan pengurus agar anak-anak berhenti bermain daring lewat tengah malam. Dua penjadwal sudah cukup untuk keperluan itu: satu mematikan radio, satu menghidupkannya lagi.

Perhatikan nama menu yang berbeda antar paket. RouterOS dengan paket wireless klasik memakai /interface wireless, sedangkan perangkat WiFi generasi baru pada RouterOS 7 memakai /interface wifi. Jalankan /interface print lebih dulu untuk memastikan nama interface Anda, dan pastikan Anda menonaktifkan interface radio saja, bukan bridge-nya, supaya pelanggan kabel tidak ikut putus. Ulasan tentang pengaturan WiFi sebagai access point menjelaskan struktur interface yang perlu Anda pahami lebih dulu.

Pemutusan sesi PPPoE terjadwal berguna untuk dua keperluan berbeda. Keperluan pertama menyangkut penagihan: pelanggan yang menunggak Anda putus otomatis pada tanggal tertentu tanpa perlu mengingatnya satu per satu. Keperluan kedua bersifat teknis, yaitu memaksa seluruh sesi menyambung ulang dini hari supaya alokasi IP dan antrean bandwidth kembali bersih.

Perlu Anda pahami perbedaan antara menutup sesi dan menonaktifkan akun. Perintah /ppp active remove hanya memutus sesi yang sedang berjalan, dan modem pelanggan biasanya menyambung lagi dalam hitungan detik. Untuk memutus permanen sampai pembayaran masuk, nonaktifkan secret-nya lewat /ppp secret set disabled=yes seperti contoh di bawah. Bila jumlah pelanggan Anda sudah melewati seratus, panduan manajemen pelanggan PPPoE menawarkan pendekatan berbasis profil yang lebih rapi.

# --- Mematikan WiFi pukul 23:30 setiap hari ---
/system scheduler add name=wifi-mati start-time=23:30:00 interval=1d \
  policy=read,write,test comment="matikan radio malam hari" \
  on-event="/interface wireless set [find default-name=wlan1] disabled=yes; \
:log info \"Radio wlan1 dimatikan sesuai jadwal\""

# --- Menghidupkan WiFi pukul 05:30 setiap hari ---
/system scheduler add name=wifi-hidup start-time=05:30:00 interval=1d \
  policy=read,write,test comment="hidupkan radio pagi hari" \
  on-event="/interface wireless set [find default-name=wlan1] disabled=no; \
:log info \"Radio wlan1 dihidupkan sesuai jadwal\""

# --- Varian untuk RouterOS 7 dengan paket wifi generasi baru ---
/system scheduler add name=wifi2-mati start-time=23:30:00 interval=1d \
  policy=read,write,test \
  on-event="/interface wifi set [find name=wifi1] disabled=yes"

# --- Skrip isolir satu pelanggan PPPoE ---
/system script add name=isolir-pelanggan policy=read,write,test source={
  :local akun "pelanggan01"

  # Menonaktifkan akun agar tidak bisa menyambung lagi
  /ppp secret set [find name=$akun] disabled=yes

  # Menutup sesi yang sedang berjalan
  :if ([:len [/ppp active find name=$akun]] > 0) do={
    /ppp active remove [find name=$akun]
    :log warning ("Sesi PPPoE " . $akun . " diputus oleh penjadwal")
  } else={
    :log info ("Akun " . $akun . " sedang tidak aktif")
  }
}

/system scheduler add name=sched-isolir start-time=00:05:00 interval=1d \
  on-event="isolir-pelanggan" policy=read,write,test

# --- Skrip menyambung kembali setelah pembayaran masuk ---
/system script add name=buka-isolir policy=read,write,test source={
  :local akun "pelanggan01"
  /ppp secret set [find name=$akun] disabled=no
  :log info ("Akun " . $akun . " diaktifkan kembali")
}

Langkah 6 — Membersihkan Cache DNS secara Berkala

Router yang melayani ratusan klien sebagai DNS resolver menyimpan ribuan entri cache di memori. Sebagian entri itu menyimpan alamat lama yang sudah berubah, sehingga sebagian pelanggan mengeluh sebuah situs tidak bisa dibuka padahal pelanggan lain lancar. Pembersihan berkala menyelesaikan keluhan semacam itu tanpa Anda perlu menyentuh perangkat pelanggan.

Perintahnya cuma satu baris, tetapi saya menyarankan Anda membungkusnya dengan pencatatan jumlah entri sebelum dibersihkan. Angka tersebut berguna untuk memperkirakan apakah ukuran cache yang Anda tetapkan sudah memadai. Bila jumlah entri selalu mentok di batas atas, naikkan nilai cache-size pada menu /ip dns.

Frekuensi pembersihan sekali sehari sudah lebih dari cukup untuk jaringan RT-RW Net. Jangan tergoda menjalankannya tiap jam, sebab cache yang selalu kosong justru memperlambat penelusuran nama dan menambah beban ke resolver hulu. Jadwalkan pada dini hari ketika pemakaian sedang paling sepi.

# --- Skrip pembersih cache DNS ---
/system script add name=bersih-dns policy=read,write,test source={
  :local jumlahEntri [:len [/ip dns cache find]]
  /ip dns cache flush
  :log info ("Cache DNS dibersihkan, entri sebelum flush: " . $jumlahEntri)
}

# --- Penjadwal harian pukul 04:00 ---
/system scheduler add name=sched-dns start-time=04:00:00 interval=1d \
  on-event="bersih-dns" policy=read,write,test comment="flush cache DNS harian"

# --- Memeriksa ukuran cache yang terpakai ---
/ip dns print

Policy pada Script Mikrotik dan Penyebab Kegagalan Eksekusi

Policy adalah daftar izin yang menentukan apa saja yang boleh dikerjakan sebuah script Mikrotik. RouterOS menerapkan prinsip hak minimum, jadi skrip yang Anda simpan tanpa menyebut policy hanya mendapat izin bawaan yang sering kurang untuk pekerjaan nyata. Inilah biang keladi keluhan klasik “skrip saya jalan manual tapi diam saat dijadwalkan”.

Yang membingungkan, RouterOS memeriksa izin di tiga tempat sekaligus. Pertama pada skrip itu sendiri, kedua pada penjadwal yang memanggilnya, dan ketiga pada akun pengguna yang membuat keduanya. Router mengambil irisan dari ketiganya, sehingga penjadwal yang hanya punya read membuat skrip ber-policy lengkap tetap gagal menulis apa pun.

Saran praktis saya: tuliskan policy yang sama persis pada skrip dan pada penjadwalnya. Skrip yang mengubah konfigurasi minimal perlu read,write,test. Untuk skrip backup yang mengirim email berlampiran, tambahkan ftp dan sensitive karena router perlu membaca kredensial SMTP dan menulis berkas.

PolicyFungsiKapan Anda memerlukannya
readMembaca konfigurasi dan statusHampir semua skrip
writeMengubah atau menambah konfigurasiIsolir PPPoE, address-list, jadwal WiFi
policyMengubah izin pengguna lainSkrip yang membuat akun administrator
testMenjalankan ping, traceroute, bandwidth testSkrip pemantau uplink
ftpMengakses berkas lewat jaringanBackup yang dikirim ke luar router
sensitiveMembaca kata sandi tersimpanPengiriman email dengan kredensial SMTP
rebootMenyalakan ulang perangkatSkrip pemulihan otomatis

Periksa izin yang melekat pada skrip Anda dengan menjalankan /system script print detail, lalu bandingkan kolom policy-nya dengan kebutuhan perintah di dalamnya. Dokumentasi resmi di portal dokumentasi MikroTik memuat daftar lengkap policy beserta cakupannya bila Anda ingin menelusuri lebih detail.

Studi Kasus RT-RW Net: Backup dan Pelaporan Otomatis

Seorang rekan mengelola RT-RW Net dengan 180 pelanggan PPPoE yang tersebar di empat titik distribusi. Router utamanya sebuah RB4011, sedangkan empat perangkat hEX bertugas sebagai titik akses di lapangan. Sampai pertengahan tahun lalu, seluruh backup dia kerjakan manual dan hasilnya bisa ditebak: berkas terakhir berumur delapan bulan ketika router utamanya rusak terkena petir.

Pemulihan setelah kejadian itu memakan waktu dua hari penuh. Rekan saya harus menyusun ulang seluruh secret PPPoE, antrean bandwidth, dan aturan firewall dari ingatan serta catatan yang tidak lengkap. Kerugiannya bukan hanya waktu, melainkan juga kepercayaan pelanggan yang terlanjur menganggap layanannya tidak profesional.

Sesudah kejadian itu kami memasang tiga lapis otomatisasi berbasis script Mikrotik pada seluruh perangkatnya. Lapis pertama berupa backup mingguan yang mengirim dua berkas ke kotak surat khusus. Pemantau uplink berbasis netwatch mengisi lapis kedua. Terakhir, laporan harian merangkum jumlah sesi aktif, pemakaian memori, dan sisa ruang penyimpanan setiap pagi.

Hasil Setelah Enam Bulan Berjalan

Angka pertama yang berubah adalah usia backup terbaru. Sebelum otomatisasi, umur rata-rata berkas backup mencapai 96 hari; setelah otomatisasi, angkanya turun menjadi maksimal 7 hari. Ketika salah satu hEX di lapangan rusak pada bulan keempat, penggantiannya selesai dalam 25 menit karena konfigurasinya tinggal dipulihkan dari lampiran email.

Angka kedua menyangkut waktu tanggap gangguan. Log netwatch memperlihatkan bahwa uplink dari ISP hulu putus rata-rata empat kali sebulan dengan durasi bervariasi antara dua sampai empat puluh menit. Bukti berupa catatan jam itu akhirnya dia pakai untuk menegosiasikan kompensasi, sesuatu yang mustahil dia lakukan sebelumnya karena tidak punya data.

Angka ketiga adalah waktu kerja teknisi. Pekerjaan rutin yang dulu memakan sekitar enam jam per bulan kini tinggal setengah jam untuk membaca ringkasan laporan. Laporan harian sederhana berikut ini yang dia terima tiap pagi, dan formatnya sengaja dibuat ringkas supaya terbaca dari layar ponsel.

# --- Skrip laporan harian ---
/system script add name=laporan-harian policy=read,test,ftp,sensitive source={
  :local idRouter [/system identity get name]
  :local sesiAktif [:len [/ppp active find]]
  :local uptime [/system resource get uptime]
  :local memoriBebas ([/system resource get free-memory] / 1048576)
  :local diskBebas ([/system resource get free-hdd-space] / 1024)
  :local versi [/system resource get version]

  :local isi ("Laporan harian " . $idRouter . \
    "\r\nTanggal: " . [/system clock get date] . " " . [/system clock get time] . \
    "\r\nSesi PPPoE aktif: " . $sesiAktif . \
    "\r\nUptime: " . $uptime . \
    "\r\nRAM bebas: " . $memoriBebas . " MB" . \
    "\r\nDisk bebas: " . $diskBebas . " KB" . \
    "\r\nVersi RouterOS: " . $versi)

  /tool e-mail send to="admin@example.com" \
    subject=("Laporan harian " . $idRouter) body=$isi
  :log info "Laporan harian terkirim"
}

/system scheduler add name=sched-laporan start-time=06:00:00 interval=1d \
  on-event="laporan-harian" policy=read,test,ftp,sensitive

Tips dan Best Practice Menulis Script Mikrotik

Aturan nomor satu yang tidak boleh Anda langgar: uji setiap script Mikrotik secara manual dengan /system script run sebelum menyerahkannya kepada penjadwal. Pengujian manual memperlihatkan pesan error langsung di terminal, sedangkan kegagalan di penjadwal sering berlalu diam-diam tanpa jejak sama sekali. Jalankan dua atau tiga kali, periksa log, baru buat penjadwalnya.

Berikan komentar pada setiap blok logika, bukan pada setiap baris. Komentar yang baik menjelaskan mengapa, bukan apa, sebab perintahnya sendiri sudah menjelaskan apa yang terjadi. Tuliskan juga nama Anda dan tanggal pembuatan di baris pertama supaya teknisi berikutnya tahu harus bertanya kepada siapa.

Hati-hati dengan interval yang terlalu pendek. Penjadwal dengan interval sepuluh detik yang menjalankan :foreach atas ratusan entri sanggup menaikkan pemakaian CPU sebuah hEX sampai tiga puluh persen, dan kenaikan itu langsung terasa sebagai jitter pada layanan pelanggan. Mulailah dari interval longgar, lalu perpendek hanya bila memang perlu.

Kebiasaan Kecil yang Menyelamatkan Banyak Waktu

Zona waktu router wajib Anda periksa sebelum menuliskan jam apa pun. Perangkat baru sering masih memakai UTC, sehingga penjadwal pukul 02:00 sebenarnya berjalan pukul 09:00 waktu Indonesia bagian barat. Jalankan /system clock print dan pastikan kolom time-zone-name sudah sesuai dengan lokasi pemasangan.

Beri nama skrip dan penjadwalnya dengan pola yang konsisten, misalnya awalan sched- untuk seluruh penjadwal. Konsistensi penamaan membuat print where name~"sched" menampilkan semuanya sekaligus, dan itu sangat membantu saat Anda mengaudit router yang sudah lama tidak disentuh. Hindari spasi pada nama karena menyulitkan pemanggilan dari skrip lain.

Simpan salinan seluruh skrip di luar router. Berkas hasil /export sudah memuat isi skrip Anda, jadi cukup pastikan berkas itu tersimpan rapi di komputer atau penyimpanan awan. Berikut ringkasan kebiasaan yang saya terapkan pada setiap router yang saya kelola:

  • Uji manual minimal dua kali sebelum membuat penjadwal
  • Tulis baris :log di akhir setiap skrip sebagai penanda sukses
  • Samakan policy antara skrip dan penjadwalnya
  • Pakai awalan nama yang konsisten untuk memudahkan audit
  • Periksa zona waktu sebelum menetapkan start-time
  • Nonaktifkan penjadwal lama daripada langsung menghapusnya
  • Simpan hasil /export di luar perangkat

Troubleshooting Script Mikrotik yang Bermasalah

Bagian ini merangkum tiga kegagalan script Mikrotik yang paling sering saya temui di lapangan beserta cara membedakannya. Kunci diagnosisnya selalu sama, yaitu membaca log dengan /log print where topics~"script" dan memeriksa kolom run-count pada penjadwal. Kedua informasi itu biasanya sudah cukup untuk menunjuk penyebabnya.

Script Mikrotik Jalan Manual tapi Gagal di Scheduler

Gejalanya khas: perintah /system script run berhasil sempurna, namun penjadwal seolah tidak melakukan apa-apa. Periksa dulu run-count. Apabila angkanya bertambah, berarti penjadwal memang berjalan dan masalahnya ada pada izin; apabila angkanya tetap nol, berarti pemicunya yang salah, biasanya karena penjadwal berstatus disabled atau start-time belum tercapai.

Untuk kasus izin, samakan policy penjadwal dengan policy skripnya lalu jalankan ulang. Perlu Anda ingat bahwa RouterOS mengambil irisan izin, sehingga menambah policy hanya pada skrip tidak menyelesaikan apa pun. Log biasanya menampilkan pesan bernada “not enough permissions” yang menegaskan diagnosis tersebut.

Ada satu jebakan tambahan pada perangkat yang pernah Anda impor dari router lain. Skrip yang dibuat oleh pengguna yang sudah dihapus akan kehilangan pemiliknya, dan RouterOS menolak menjalankannya dengan izin penuh. Solusinya sederhana: hapus skrip tersebut lalu buat ulang memakai akun yang sekarang aktif.

Waktu Eksekusi Meleset karena NTP Mati

Router tanpa baterai RTC kehilangan jamnya setiap kali listrik padam. Begitu menyala kembali, jam kembali ke tanggal pabrik dan seluruh penjadwal berbasis start-time ikut kacau. Gejalanya berupa backup yang tiba-tiba berjalan tengah hari, atau penjadwal harian yang berjalan dua kali dalam satu hari.

Perbaikannya berlapis dua. Aktifkan klien NTP supaya router menyinkronkan jamnya begitu koneksi tersedia, dan setel zona waktu secara eksplisit agar tidak bergantung pada deteksi otomatis yang butuh internet. RouterOS 7 memakai parameter servers untuk menunjuk sumber waktu, sedangkan RouterOS 6 masih memakai primary-ntp dan secondary-ntp. Periksa status sinkronisasi dengan perintah pada blok berikut.

Bila router Anda memang sering kehilangan waktu, tambahkan penjadwal start-time=startup yang menunggu sebentar lalu memeriksa apakah tahun sistem sudah masuk akal. Skrip semacam itu bisa menunda pekerjaan penting sampai jam benar-benar sinkron, sehingga backup Anda tidak pernah lahir dengan nama tanggal yang keliru.

# Memeriksa status klien NTP dan jam sistem
/system ntp client print
/system clock print

# Mengaktifkan ulang sinkronisasi waktu
/system ntp client set enabled=yes servers=203.0.113.1
/system clock set time-zone-autodetect=no time-zone-name=Asia/Jakarta

# Melihat riwayat eksekusi skrip di log
/log print where topics~"script"

# Melihat berapa kali penjadwal sudah berjalan
/system scheduler print detail

# Menonaktifkan sementara sebuah penjadwal tanpa menghapusnya
/system scheduler disable [find name="sched-backup"]

Skrip Berhenti di Tengah karena Error Sintaks

RouterOS menghentikan eksekusi pada baris pertama yang bermasalah dan tidak melanjutkan sisanya. Akibatnya Anda bisa mendapati backup yang terbuat tetapi tidak pernah terkirim, atau address-list yang terhapus tanpa pernah terisi ulang. Penyebab paling sering berupa kurung siku yang tidak berpasangan, tanda kutip yang tertutup di tempat salah, dan penggabungan teks memakai tanda tambah.

Cara menemukannya cukup manual namun efektif. Salin isi skrip ke terminal baris demi baris, atau sisipkan :put di beberapa titik lalu jalankan manual untuk melihat sampai mana eksekusi berhasil. Winbox juga menandai kesalahan sintaks dengan pesan singkat di bagian bawah jendela editor skrip saat Anda menekan tombol Apply.

Untuk skrip yang memanggil sumber daya luar seperti :resolve atau pengiriman email, bungkuslah dengan penanganan error agar kegagalan satu bagian tidak menjatuhkan seluruh pekerjaan. Struktur do={ ... } on-error={ ... } menangkap kegagalan tersebut, dan Anda tinggal menuliskan pesan yang jelas ke log supaya penyebabnya mudah ditelusuri esok pagi.

Pertanyaan yang Sering Diajukan Seputar Script Mikrotik

Apakah script Mikrotik ikut terbawa saat backup konfigurasi?

Ya, seluruh skrip dan penjadwal tersimpan sebagai bagian dari konfigurasi router. Berkas .backup maupun hasil /export keduanya memuat isi skrip Anda secara lengkap. Namun berkas hasil export lebih nyaman dibaca karena berbentuk teks biasa yang bisa Anda buka di editor mana pun.

Berapa jumlah maksimal penjadwal yang boleh saya pasang?

RouterOS tidak menetapkan batas jumlah secara kaku, tetapi batas praktisnya ditentukan oleh CPU perangkat Anda. Router kelas hEX masih nyaman dengan sepuluh sampai lima belas penjadwal berinterval longgar. Yang membebani bukan jumlahnya, melainkan seberapa berat pekerjaan tiap skrip dan seberapa pendek intervalnya.

Mengapa script Mikrotik saya tidak menulis apa pun ke log?

Penyebab tersering adalah skrip yang tidak pernah dieksekusi sama sekali, bukan skrip yang gagal menulis. Periksa kolom run-count pada /system scheduler print detail untuk memastikannya. Bila angkanya bertambah tetapi log tetap kosong, kemungkinan besar policy Anda kurang atau baris :log berada setelah baris yang gagal.

Bisakah satu penjadwal memanggil beberapa skrip sekaligus?

Bisa, tuliskan beberapa perintah /system script run yang dipisahkan tanda titik koma pada kolom on-event. Pendekatan yang lebih rapi adalah membuat satu skrip induk yang memanggil skrip-skrip lain secara berurutan. Cara kedua memudahkan Anda menyisipkan :delay di antara pemanggilan bila urutannya memang penting.

Apakah otomatisasi ini bekerja pada semua tipe RouterBoard?

Seluruh perintah scripting tersedia pada semua perangkat berbasis RouterOS, mulai dari hAP lite sampai CCR. Yang berbeda hanyalah ketersediaan menu tertentu, misalnya /interface wireless yang tidak ada pada perangkat tanpa radio. Periksa juga sisa flash pada perangkat 16 MB sebelum menjadwalkan pembuatan berkas backup.

Apa bedanya menjalankan perintah lewat scheduler dan lewat netwatch?

Scheduler bereaksi terhadap waktu, sedangkan netwatch bereaksi terhadap perubahan status host yang dipantau. Gunakan penjadwal untuk pekerjaan berkalender seperti backup mingguan, dan gunakan netwatch untuk kejadian yang tidak bisa Anda ramalkan waktunya seperti uplink putus. Keduanya bisa Anda kombinasikan pada router yang sama tanpa saling mengganggu.

Apakah menulis script Mikrotik berisiko merusak konfigurasi?

Risikonya nyata bila Anda langsung menjadwalkan skrip yang belum pernah diuji. Ambil backup lebih dulu, uji manual di luar jam sibuk, dan mulailah dari skrip yang hanya membaca sebelum membuat skrip yang mengubah konfigurasi. Kebiasaan ini sudah cukup menekan hampir semua risiko yang biasa dikeluhkan pemula.

Bagaimana cara memindahkan skrip dari satu router ke router lain?

Jalankan /system script export file=skrip-saya pada router asal, unduh berkas .rsc yang terbentuk, lalu unggah dan jalankan dengan /import file-name=skrip-saya.rsc di router tujuan. Periksa kembali nama interface setelah impor, sebab nama radio dan nama uplink sering berbeda antar perangkat. Perhatikan juga policy pada skrip hasil impor, karena RouterOS memberikan izin bawaan kepada skrip yang pemiliknya tidak dikenali.

Kesimpulan

Otomatisasi RouterOS bukan keahlian eksklusif milik teknisi senior. Modalnya cuma dua: memahami sepuluh perintah dasar dan disiplin menguji sebelum menjadwalkan. Begitu script Mikrotik pertama Anda berjalan mulus, penambahan skrip berikutnya akan terasa jauh lebih mudah karena polanya selalu sama, yaitu simpan, uji manual, lalu jadwalkan.

Mulailah dari backup mingguan, sebab manfaatnya paling terasa dan risikonya paling kecil. Setelah itu tambahkan pemantau uplink supaya Anda punya catatan gangguan yang bisa dipertanggungjawabkan. Sesudah keduanya stabil selama beberapa minggu, barulah masuk ke otomatisasi keamanan dan penjadwalan layanan seperti hidup-mati WiFi atau isolir pelanggan.

Satu hal terakhir yang perlu Anda pegang: sebuah script Mikrotik yang sederhana dan benar-benar berjalan jauh lebih berharga daripada skrip rumit yang tidak pernah Anda uji. Tuliskan komentar secukupnya, samakan policy antara skrip dan penjadwal, periksa zona waktu, lalu biarkan router bekerja. Bila Anda sedang membangun layanan berbayar, gabungkan otomatisasi ini dengan sistem pencatatan pada panduan pengelolaan billing pelanggan RT-RW Net agar operasional harian Anda benar-benar ringan.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *