我正在创建一个使用统计信息网页,该网页将显示当前在线用户,并在给定时间/日期显示用户的历史图表。
freeradius中是否有一个函数可以轻松获取当前连接用户的数量,然后我可以将其转储到数据库中,以便在使用率表中使用我的网页?
我找到的唯一解决方案是每15分钟用一个cron-job读取acct表,我希望有一个我还没有找到的更好的解决方案。
答案 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用户名