2017-02-18 26 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和其他許多預製前端。 –