终端 – Mikrotik自动用户管理器用户脚本需要改进

我写了这个脚本,但它没有正常工作.任何人都可以帮忙吗?

它应该检查用户使用的下载限制和下载,然后执行一些操作,即从活动的ppp列表中删除用户,但它有一些缺陷,即我无法获取变量中的实际配置文件值,所以相反我使用用户管理器用户帐户在“注释”中保存配置文件名称,这样我就可以在变量中获取配置文件名称,但这不是我想要的样式.这就是为什么如何获取变量中的实际配置文件值以及有一个问题..为什么我不能直接更改用户帐户配置文件而不是我做的很长但是这样我放松了用户帐户的统计信息所以任何方式我不会丢失用户的统计信息帐户和工作也完成了???

脚本V1.0:

:foreach i in=[/tool user-manager user find] do={
:global uname [/tool user-manager user get $i username];
:global upass [/tool user-manager user get $i password];
:global dused [/tool user-manager user get $i download-used];
:global uprofile [/tool user-manager user get $i comment];
:global dlimit [/tool user-manager profile limitation get [find name="$uprofile"] download-limit];
:if ($dused > $dlimit) do={   
/ppp active remove [find name=$uname]
/tool user-manager user set $i disabled=yes
:log warning "$uname account has been disabled due to downloading limit exceeding";
/tool user-manager user remove $i
:log warning "$uname account is removed on package expiring";
/tool user-manager user add customer=admin disabled=no username=$uname password=$upass; 
/tool user-manager user create-and-activate-profile $uname customer=admin profile="Expired User";
:log info "$uname account has been created again with expired profile";
}
}

脚本V1.0如何工作:

它会查找超出其下载限制的所有用户超过配置文件下载限制,以便删除其帐户并再次创建,并为其分配过期配置文件,以便他们不再使用互联网.
但它有一个问题,就是当我删除帐户时,我丢失了用户帐户的统计信息.所以这就是为什么它不是一个好的解决方案.

SCRIPT V2.0:

:foreach i in=[/tool user-manager user find] do={
:global uname [/tool user-manager user get $i username];
:global upass [/tool user-manager user get $i password];
:global dused [/tool user-manager user get $i download-used];
:global uprofile [/tool user-manager user get $i comment];
:global dlimit [/tool user-manager profile limitation get [find name="$uprofile"] download-limit];
:if ($dused > $dlimit) do={
:global uip [/tool user-manager user get $i ip-address];
:global hostip [:pick $uip 11 14];
/tool user-manager user set $i ip-address="10.10.10.$hostip"
/ppp active remove [find name=$uname]
:log warning "$uname has been assigned to expired ip pool with ip 10.10.10.$hostip";
}
}

SCRIPT V2.0如何工作:

它会查找超出其下载限制的所有用户超过配置文件下载限制并获取其静态IP,然后将ip拆分为网络地址和主机地址,然后将过期的IP池网络地址添加到其中,然后添加主机地址到那个过期的IP池网络地址,然后每个用户被分配IP,因此他们的工作互联网IP池被更改为过期的池,因此统计数据不会丢失在过程中,他们现在不再有任何互联网..!
所以这是一个更好的解决方案..但我期待它甚至可以做得比这更好……! :d

最佳答案 >为什么你要参与一场疯狂的追逐?

>为什么要使用脚本来实现此功能?为什么不直接使用用户管理器分配?像
here讨论的东西

…只是为了分享一些想法,也许你可以根据你的要求进一步加强它.
> Mikrotik用户经理是一个不错的迷你计费系统,但它不是mikrotik的重点.它有它的缺点和局限.
>如果您是ISP / Net_Operator等商业实体,那么我建议您使用一些专用的计费结算系统,如freeradius或radius manager,它可以很好地完成工作.
>它还可以执行许多其他奇特的功能,如发送短信/重定向/更多…

点赞