هوتسبوت

فحص حد بيانات المستخدم المشترك - الجلسات النشطة — 7

عندما يُستخدم حساب واحد على عدة أجهزة تُحسب كل جلسة منفصلة. هذا السكربت يجمع كل الجلسات النشطة لكل مستخدم ويفصلها عند تجاوز المجموع للحد المحدد. شغّله من الـ Scheduler.

إصدار ⁨MikroTik⁩

RouterOS 7

/system script add name=CheckSharedUsersActive source={
    # EN: Combined limit per user in BYTES, as a number (example: 2500000000 = about 2.5GB)
    # AR: الحد الإجمالي لكل مستخدم بالبايت كرقم (مثال: 2500000000 = حوالي 2.5 جيجا)
    :local totalLimit "change here";
    :if ([:typeof $totalLimit] != "num") do={ :error "Set totalLimit first" }

    # EN: Array of total bytes per user name | AR: مصفوفة مجموع البايتات لكل اسم مستخدم
    :local totals [:toarray ""];

    # EN: Add up bytes of every active session per user | AR: جمع بايتات كل جلسة نشطة لكل مستخدم
    :foreach s in=[/ip hotspot active find] do={
        :local name [/ip hotspot active get $s user];
        :local used ([/ip hotspot active get $s bytes-in] + [/ip hotspot active get $s bytes-out]);
        :if ([:typeof ($totals->$name)] = "nil") do={ :set ($totals->$name) 0 };
        :set ($totals->$name) (($totals->$name) + $used);
    }

    # EN: Log out all sessions of users over the limit | AR: فصل كل جلسات المستخدمين الذين تجاوزوا الحد
    :foreach name,total in=$totals do={
        :if ($total > $totalLimit) do={
            /ip hotspot active remove [/ip hotspot active find where user=$name];
            :log info ("User $name exceeded the limit and was logged out");
        }
    }
}