Pemrograman

Cari Blog Ini

Selasa, 21 Juli 2015

Generate User Yang Sudah Terpakai di Mikrotik User Manager

Terkadang dalam bisnis hotspot ada keluhan konsumen bahwa voucher username yang di beli tidak dapat diaktifkan karena tidak terdapat dalam database. Hal ini terjadi disebabkan kemungkinan besar karena kita salah dalam menghapus user yang kedaluarsa. Untuk menghindari hal ini, maka script yang sebaiknya digunakan dalam menghapus user kedaluarsa yaitu dengan menggenerate user yang sudah terpakai untuk kemudian dihapus dalam beberapa hari kedepan setelah kita pastikan masa aktifnya telah habis. Berikut ini contoh script yang saya implementasikan :

################################################################################
# Nama script : script-gnrt-u-terpakai
# Dibuat pada : 2 Mei 2015
# Di update pada : 1 Juli 2015
# Dibuat Oleh : Gunawan Jinnu
#
# Deskripsi :
# Script ini akan menggenerate user yang sudah diaktifkan sehingga
# dapat dihapus dengan mudah setelah 2x24jam atau dua hari kemudian.
# User yang digenerate ini belum dapat langsung dihapus karena
# masih ada yang belum kedaluarsa, dalam arti masa aktifnya
# belum mencapai 24 jam, sehingga akan aman menghapusnya ketika
# sudah 2x24jam.
# Script ini menghasilkan beberapa file (dipecah dalam beberapa file)
# dengan kelipatan 40 user per file dengan beberapa tujuan yaitu:
# 1. Menghindari error new content too long
# 2. Memudahkan maintenance gagal eksekusi, sehingga file
#   yang gagal di eksekusi akan mudah diidentifikasi.
#
# Output dari script ini berupa file "HapusUserKedaluarsa40.txt",
# "HapusUserKedaluarsa80.txt" dan seterusnya tergantung banyaknya user yang telah
# diaktifkan.
#
# Cara memanfaatkan outputnya yaitu dengan mengeksekusinya dua hari kemudian
# dengan perintah "/import nama-file1.txt; /import nama-file2.txt;"  (dan seterusnya)
# contoh : "/import HapusUserKedaluarsa40.txt; /import HapusUserKedaluarsa80.txt;"
#
# Ada beberapa user yang dikecualikan (tidak dimasukkan dalam daftar yang akan dihapus yaitu :
# 1. user-hotspot
#
################################################################################

#======================================================================
#code program dimulai disini
:log info ("============= MULAI ==============");
#Untuk menghitung jumlah user terpakai yg ditemukan
:global penghitung 0;
#Jika lebih dari seratus hasil (fungsi foreach a in) akan error, jadi variabel ini
#ini akan berkurang setiap kali ada temuan, sehingga pada saat mencapai 90
#maka hasil langsung ditulis ke file sebelum akhirnya fungsi berhenti.
:global nilaibhitung 40;
:global batashitung;
:set batashitung ($nilaibhitung);
#Variable untuk menyimpan satu nama user sementara
:global namauser "";
#Variable untuk menyimpan daftar semua nama user yang ditemukan sementara
:global isifile "";
#Variabel untuk menyimpan nama file
:global namafile "";
:foreach a in=[/tool user-manager user find] do={
    :if ([/tool user-manager user get $a name]!="user-hotspot") do={
:if ([/tool user-manager user get $a uptime-used]>10m) do={
:set namauser [/tool user-manager user get $a name];
:set isifile ($isifile . "/tool user-manager user remove \"" .$namauser. "\"\n" );
:set penghitung ($penghitung + 1);
:set isifile ($isifile . ":put (\"User " .$penghitung. ": " .$namauser. " telah dihapus.\");\n" );
:put ("Ditemukan : " .$penghitung. ":  " .$namauser);
#======================================================================
#Mengurangi batashitung dengan 1
:set batashitung ($batashitung - 1);
#Jika batashitung sudah nol, maka program dibawah ini akan di eksekusi
:if ($batashitung=0) do={
:set namafile ("HapusUserKedaluarsa" . $penghitung . ".txt");
#cek file ada atau tidak, jika tidak maka kita buat dan mengosongkan isinya
if ([:len [/file find name=$namafile]] != 1) do={
/file print file=$namafile;
:delay 5s;
}
#Mengisi HapusUserKedaluarsa.txt dengan isifile
/file set $namafile contents=($isifile);
:delay 3s;
:set isifile ("");
:set batashitung ($nilaibhitung);
#Penutup kode Jika batashitung sudah nol
}
}
}
#Penutup kode foreach in
}

#generate file terakhir yang tidak mencukupi batashitung
:set namafile ("HapusUserKedaluarsa" . $penghitung . ".txt");
#cek file ada atau tidak, jika tidak maka kita buat dan mengosongkan isinya
:if ([:len [/file find name=$namafile]] != 1) do={
/file print file=$namafile;
:delay 10s;
}
#Mengisi HapusUserKedaluarsa.txt dengan isifile
/file set $namafile contents=($isifile);
:delay 3s;
:set isifile ("");
:set batashitung ($nilaibhitung);

:put ("Total Ditemukan = " . $penghitung);
:put ("============= SELESAI ==============");
#======================================================================

Tidak ada komentar:

Posting Komentar

Apa tanggapan anda ?