#1

 ✅ 1. BASIC SCRIPT — Auto Create PPPoE User


This script creates a PPPoE user with:


✔ Username

✔ Password

✔ Speed (optional)

✔ Expiry date (optional)


You can run it like:


/system script run add_pppoe_user username=john password=123 speed=10M expiry=30d


📌 SCRIPT: add_pppoe_user

/system script

add name=add_pppoe_user owner=admin source="

:local username [/system script get add_pppoe_user param1];

:local password [/system script get add_pppoe_user param2];

:local speed [/system script get add_pppoe_user param3];

:local expiry [/system script get add_pppoe_user param4];


# -------- DEFAULTS -----------

:if ([:len \$speed] = 0) do={ :set speed \"5M\" }     # default 5Mbps

:if ([:len \$password] = 0) do={ :set password \"1234\" }

:if ([:len \$expiry] = 0) do={ :set expiry \"30d\" }  # default 30 days


# -------- CREATE PPPoE USER ----------

/ppp secret add name=\$username password=\$password service=pppoe profile=pppoe_profile


# -------- ADD SPEED LIMIT (SIMPLE QUEUE) ----------

/queue simple add name=\$username target=\$username max-limit=\$speed/\$speed


# -------- ADD EXPIRY DATE TAG ----------

/ppp secret set \$username comment=\"expires=\$expiry\"


:log info (\"PPPoE user \$username created with speed \$speed and expiry \$expiry\");

"


🟦 2. SIMPLER VERSION — Just Username/Password


If you want only dynamic username + password:


/system script

add name=add_pppoe_simple owner=admin source="

:local username [/system script get add_pppoe_simple param1];

:local password [/system script get add_pppoe_simple param2];


/ppp secret add name=\$username password=\$password service=pppoe profile=pppoe_profile;


:log info (\"New PPPoE user created: \$username\");

"



Usage:


/system script run add_pppoe_simple username=john password=xyz123


🟩 3. ADVANCED VERSION — Auto Expire User


This script auto-creates user AND disables it on expiry date.


SCRIPT 1: Create User With Expiry

/system script

add name=create_pppoe_user source="

:local username [/system script get create_pppoe_user param1]

:local password [/system script get create_pppoe_user param2]

:local days [/system script get create_pppoe_user param3]


:local expiryDate [/system clock get date]

:set expiryDate ([/system clock get date] + \$days)


# create user

/ppp secret add name=\$username password=\$password service=pppoe profile=pppoe_profile comment=\"expire=\$expiryDate\"


:log info \"PPPoE user \$username created, expires on \$expiryDate\"

"


SCRIPT 2: Auto Disable Expired Users (run hourly via scheduler)

/system script

add name=disable_expired_pppoe_users source="

:foreach i in=[/ppp secret find] do={

  :local c [/ppp secret get \$i comment];

  :if ([:find \$c \"expire=\"] != 0) do={

    :local exp [:pick \$c ([:find \$c \"=\"] + 1) [:len \$c]];

    :if ([/system clock get date] >= \$exp) do={

        /ppp secret set \$i disabled=yes;

        :log warning \"PPPoE user expired: [/ppp secret get \$i name]\"

    }

  }

}"



Schedule it hourly:


/system scheduler add name=pppoe_expiry_check interval=1h on-event=disable_expired_pppoe_users

--Forum Rules --BBcodes


image quote pre code