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

Mikrotik auto user-manager user script needs improvement

我写了这个脚本,但它不起作用properly.Anyone可以帮忙吗?

它应该检查用户使用的下载限制和下载,然后执行一些操作,即从活动 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 的工作原理:

它会查找所有超过下载限制并超过配置文件下载限制的用户,这样他们的帐户就会被删除并重新创建,并为他们分配过期的配置文件,这样他们就不会再上网了。 但它有一个问题,即当我删除 account.So 时我丢失了用户帐户的统计信息,这就是为什么它不是一个好的解决方案。

脚本 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";
}
}

脚本 V2.0 的工作原理:

它查找所有超过配置文件下载限制的下载限制的用户并获取他们的静态 IP,然后将 ip 拆分为网络地址和主机地址,然后将过期的 ip 池网络地址添加到它并且然后将主机地址添加到该过期的 ip 池网络地址,然后为每个用户分配 ip,因此他们的工作 internet ip 池被更改为过期池,因此统计信息不会在此过程中丢失,他们也不会现在就可以上网了..! 所以这是一个更好的解决方案..但我很期待它是否可以做得比这更好..! :D

  • 你为什么要卷入一场徒劳的追逐?

  • 这个功能为什么要用脚本?为什么不直接使用用户管理器分配它?像讨论的东西 here

    ...只是分享一些想法,也许你可以根据你的要求进一步增强它。

  • Mikrotik 用户管理器是一个不错的迷你计费系统,但长期以来它并不是 mikrotik 的重点。它有其缺陷和局限性。

  • 如果您是像 ISP/Net_Operator 这样的商业实体,那么我建议您使用一些专用的计费系统,例如 freeradius 或 radius manager可以很好地完成工作。

  • 它还可以执行许多其他奇特的功能,例如发送短信/重定向/等等...