2016-01-14 70 views
2

我正在創建一個使用情況統計信息網頁,該網頁將顯示當前的在線用戶並在給定的時間/日期顯示用戶的歷史圖表。從FreeRadius獲得在線用戶

在freeradius中有一個函數可以輕鬆獲取當前連接用戶的數量,然後我可以將其轉儲到數據庫中供我的網頁在使用圖表中使用?

我發現的唯一解決方案是每15分鐘閱讀一次cron-job的acct表,我希望有一個更好的解決方案,我還沒有找到。

回答

1

不,freeradius沒有跟蹤內部會計會話的狀態。您需要將會計數據寫入數據庫,然後您可以查詢該數據庫以獲取給定點的併發會話數。

有沒有在這個問題的一些例子SQL查詢,可以幫助你:Calculate number of concurrent events in SQL

如果你不想使用複雜的SQL,你可以輪詢數據庫每隔幾分鐘,並得到會議的次數沒有停止時間(仍然有效),然後將計數記錄在單獨的表中。

+0

它可以從FREERADIUS獲得在線用戶,通過創建一個定製模塊? – KostasC

0

SELECT usernameradacct:如果你想使用它的半徑側,那麼你必須使用cron作業username LIKE「%@無線%」 AND acctstoptime IS NULL GROUP BY的用戶名

2

,因爲半徑不能給你歷史數據收集基於會話的數據,但您可以從radacct表中獲取當前在線用戶數據

SELECT username FROM radacct WHERE acctstoptime IS NULL;或者你可以使用linux命令「radwho」參考:。 official freeradius doc

而對於歷史數據,可以使用路由器的API像 Mikrotik MRTG report 或者您也可以與一些基於SNMP網管去(像[LibreNMS])