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

时间:2017-02-18 11:27:30

标签: terminal scripting mikrotik

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

它应该检查用户使用的下载限制和下载,然后执行一些操作,即从活动的ppp列表中删除用户但是它有一些缺陷,我无法获得实际 - 变量中的-profile值,所以我将注释中的配置文件名称与用户管理器用户帐户保存在一起,这样我就可以在变量中获取配置文件名称,但这不是我想要的那样。所以&# 39;为什么如何获得变量中的实际轮廓值以及还有一个问题..为什么我不能直接更改用户帐户配置文件而是我要做的很长但是这样我松了用户帐户的统计数据,所以我不会丢失用户帐户的统计数据和工作也完成了???

SCRIPT 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";
}
}

SCRIPT 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

1 个答案:

答案 0 :(得分:1)

  • 为什么你要参与一场疯狂的追逐?
  • 为什么要使用脚本来实现这个功能?为什么不直接使用用户管理器分配?像讨论的那样here

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

  • Mikrotik用户经理是一个不错的迷你计费系统,但它不是mikrotik的焦点。它有它的缺点和局限。

  • 如果您是ISP / Net_Operator等商业实体,我建议您使用一些专用的结算结算系统,例如 freeradius 或radius manager,它可以很好地完成工作。
  • 它还可以执行许多其他奇特的功能,如发送短信/重定向/以及更多......