从FreeRadius获取在线用户

时间:2016-01-14 05:30:38

标签: freeradius

我正在创建一个使用统计信息网页,该网页将显示当前在线用户,并在给定时间/日期显示用户的历史图表。

freeradius中是否有一个函数可以轻松获取当前连接用户的数量,然后我可以将其转储到数据库中,以便在使用率表中使用我的网页?

我找到的唯一解决方案是每15分钟用一个cron-job读取acct表,我希望有一个我还没有找到的更好的解决方案。

3 个答案:

答案 0 :(得分:2)

如果你想从半径侧使用它,那么你必须使用cron作业,因为radius不能给你时间间隔的历史数据,它会根据会话收集数据,但你可以从radacct表中获取当前的在线用户数据< / p>

SELECT username FROM radacct WHERE acctstoptime IS NULL;

或者您可以使用linux命令“radwho”引用:。official freeradius doc

对于历史数据,您可以使用路由器的API Mikrotik MRTG report 或者您可以使用一些基于SNMP的NMS(如[LibreNMS])

答案 1 :(得分:1)

不,freeradius不会在内部跟踪会计会话的状态。您需要将记帐数据写入数据库,然后您可以查询该数据库以获取给定点的并发会话数。

此问题中有一些示例SQL查询可以帮助您:Calculate number of concurrent events in SQL

如果您不想使用复杂的SQL,您可以每隔几分钟轮询数据库,并获得没有停止时间(仍处于活动状态)的会话计数,然后将计数记录在单独的表中。

答案 2 :(得分:1)

username选择radacct WHERE username LIKE&#39;%@ wireless%&#39; AND acctstoptime IS NULL GROUP BY用户名