Terminal Mikrotik自动用户管理器用户脚本需要改进
我写了这个脚本,但它不能正常工作。有人能帮忙吗 它应该检查下载限制和用户使用的下载,然后执行一些操作,即从活动ppp列表中删除用户,但它有一些缺陷,即我无法在变量中获取实际配置文件值,因此我将配置文件名称保存在用户管理器用户帐户的注释中,这样我就可以在变量,但这不是我想要的。这就是为什么要在变量中获得实际的配置文件值,还有一个问题。为什么我不能直接更改用户帐户配置文件,我做了很长的一段时间,但这样我就失去了用户帐户的统计信息,这样我就不会丢失用户的统计信息帐户和工作也完成了 脚本V1.0:Terminal Mikrotik自动用户管理器用户脚本需要改进,terminal,scripting,mikrotik,Terminal,Scripting,Mikrotik,我写了这个脚本,但它不能正常工作。有人能帮忙吗 它应该检查下载限制和用户使用的下载,然后执行一些操作,即从活动ppp列表中删除用户,但它有一些缺陷,即我无法在变量中获取实际配置文件值,因此我将配置文件名称保存在用户管理器用户帐户的注释中,这样我就可以在变量,但这不是我想要的。这就是为什么要在变量中获得实际的配置文件值,还有一个问题。为什么我不能直接更改用户帐户配置文件,我做了很长的一段时间,但这样我就失去了用户帐户的统计信息,这样我就不会丢失用户的统计信息帐户和工作也完成了 脚本V1.0: :f
: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";
}
}
: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";
}
}
脚本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";
}
}
: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:
: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";
}
}
: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的工作原理:
: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";
}
}
: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";
}
}
它查找超过其下载限制的所有用户(超过配置文件下载限制),获取其静态IP,然后将IP拆分为网络地址和主机地址,然后将过期的IP池网络地址添加到其中,然后将主机地址添加到过期的IP池网络地址,然后为每个用户分配ip,因此,他们的工作互联网ip池被更改为过期池,因此统计数据不会在过程中丢失,而且他们现在也没有任何互联网了。。!
所以这是一个更好的解决方案……但我期待着它能比这更好D- 你为什么要卷入一场白费力气的追逐
- 为什么要为这个函数使用脚本?为什么不使用用户管理器直接分配它?类似的讨论 。。。这只是分享一些想法,也许你可以根据你的要求进一步增强它
- Mikrotik用户管理器是一个很好的迷你计费系统,但它不是Mikrotik长久以来关注的焦点。它有其缺陷和局限性
- 如果您是像ISP/Net_运营商这样的商业实体,那么我建议您使用一些专用的计费系统,如freeradius或radius manager,它们可以很好地完成这项工作
- 它还可以执行许多其他奇特的功能,如发送短信/重定向/等等