2017-02-18 97 views
4

我写了这个脚本,但它不能正常工作。任何人都可以提供帮助吗?Mikrotik自动用户管理器用户脚本需要改进

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

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 WORKS:

它看起来对谁已超过其下载限制过去的轮廓下载限制所以他们的帐户的所有用户被删除,并重新创建过期配置文件被分配给他们,所以他们不会再上网了。 但是它有一个问题,那就是当我删除帐户时,我失去了用户帐户的统计信息。所以这不是一个好的解决方案。

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 WORKS:

它看起来对谁已超过其下载限制过去的轮廓下载限制,并得到所有用户的静态IP,然后将IP分割为网络地址和主机地址,然后向其中添加过期的IP池网络地址,然后将主机地址添加到该过期的IP池网络地址,然后为每个用户分配IP,因此类似他们的工作状态ernet ip池更改为过期池,因此统计数据不会在此过程中丢失,并且他们现在不再有任何互联网了。 所以这是一个更好的解决方案..但我期待,如果它甚至可以做得比这更好..! :D

回答

1
  • 为什么你参与一个疯狂的追逐?
  • 为什么在这个函数中使用脚本?为什么不直接使用用户管理器分配?类似讨论的东西here

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

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

  • 如果你像ISP/Net_Operator一个商业实体,那么我建议你使用一些专用的计费结算系统像的freeradius或半径管理器,它可以很好地完成这项工作。
  • 它也可以执行许多其他奇特的功能,如发送短信/重定向/和更多...
+0

但** freeradius **带有基于Web的用户界面吗? –

+0

- Freeradius只是后端引擎。如果您想了解更多信息,请在Google上搜索Freeradius部署。成千上万的导游在那里。我在我的博客上也写了一些初学者指南,这很好地利用一些准备复制粘贴命令的第一步。 - 如果您有一些自定义的显示/功能要求,您可以使用php或任何其他语言设计您自己的前端。 - 或者你可以使用像Daloradius,dialupadmin和其他许多预制前端。 –