El hub-stats.lua El script crea una entrada de lista de usuarios similar a un bot que muestra las estadísticas actuales del centro. Un centro puede mostrar usuarios en línea, operadores, participación total o un marcador de estado compacto sin ejecutar un proceso de bot externo separado.
Este script se centra únicamente en la visualización. Lee contadores simples, crea un nombre corto como !_Stats_128U_4Ops y deja un trabajo costoso fuera del proceso central.
Qué hace este guión
El script crea un nombre para mostrar a partir de las estadísticas del centro configurado.
Ejemplos de nombres para mostrar:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Los usos comunes incluyen:
- Mostrando usuarios actuales en línea.
- Mostrando operadores en línea.
- Mostrando la participación total del centro cuando la API Lua la expone de forma económica.
- Mostrar usuarios máximos cuando su compilación expone ese contador.
- Mostrar a los usuarios registrados cuando su compilación expone ese contador.
- Creación de un marcador de estado de concentrador compacto.
- Agregar una entrada de estadísticas en vivo a la lista de usuarios.
Los contadores exactos disponibles dependen de la API del complemento Verlihub Lua expuesta por su versión Verlihub.
Requisitos
Este script requiere:
- Verlihub instalado y funcionando.
- El complemento Verlihub Lua instalado.
- El complemento Lua habilitado en Verlihub.
- Permiso para cargar y descargar scripts Lua.
- Un directorio de script grabable para archivos Verlihub Lua.
- Una compilación Verlihub Lua que puede exponer datos de visualización de la lista de usuarios o llamar a una función de generación de nombres desde una entrada de visualización.
Antes de cargar el script, confirme que el complemento Lua esté activo:
!pluglist
Si el complemento Lua no aparece en la lista, cárguelo o habilítelo primero desde el artículo de configuración principal Lua.
Ubicación de archivo recomendada
Utilice un directorio de script dedicado:
mkdir -p /PATH/TO/HUB/scripts
Coloque el guión en:
/PATH/TO/HUB/scripts/hub-stats.lua
Para sistemas de producción, solo los administradores de confianza o el usuario del servicio Verlihub deben escribir en ese directorio. No utilice permisos de escritura mundial.
Comandos de carga y descarga
Cargue el guión:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Descargar el guión:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Si edita el script, descárguelo y cárguelo nuevamente:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilice la ruta absoluta completa a menos que la configuración del complemento Verlihub Lua admita rutas relativas.
Código de secuencia de comandos
-- Script: hub-stats.lua
-- Purpose: Displays hub statistics as a bot-like user-list entry.
-- Scope: Lightweight display bot only.
-- Notes: Available statistics depend on the Verlihub Lua API exposed by your build.
name = ""
class = 3
description = "Hub Stats Bot"
speed = "100"
email = ""
share = "0"
prefix = "!_Stats_"
postfix = ""
interval = 60
counter = 0
show_users = true
show_ops = true
show_share = false
function SafeCall(callback, fallback)
local ok, result = pcall(callback)
if ok and result ~= nil then
return result
end
return fallback
end
function FormatShare(bytes)
local value = tonumber(bytes)
if value == nil then
return "0B"
end
if value >= 1099511627776 then
return string.format("%.1fTB", value / 1099511627776)
end
if value >= 1073741824 then
return string.format("%.1fGB", value / 1073741824)
end
if value >= 1048576 then
return string.format("%.1fMB", value / 1048576)
end
if value >= 1024 then
return string.format("%.1fKB", value / 1024)
end
return tostring(value) .. "B"
end
function GetUserCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
function GetStatsText()
local parts = {}
if show_users then
table.insert(parts, tostring(GetUserCount()) .. "U")
end
if show_ops then
table.insert(parts, tostring(GetOperatorCount()) .. "Ops")
end
if show_share then
table.insert(parts, FormatShare(GetTotalShare()))
end
if table.getn(parts) == 0 then
return "Online"
end
return table.concat(parts, "_")
end
function GetName()
return prefix .. GetStatsText() .. postfix
end
Opciones de configuración
name
name = ""
El valor del nombre base para la entrada tipo bot.
En este script, el nombre visible es generado por GetName(), entonces name normalmente puede permanecer vacío.
class
class = 3
Controla la clase mostrada o el nivel de perfil de la entrada tipo bot.
El significado de los valores de clase depende de la configuración del concentrador. Utilice un valor que coincida con cómo debería aparecer la entrada de estadísticas en la lista de usuarios.
description
description = "Hub Stats Bot"
La descripción que se muestra para la entrada tipo bot.
Ejemplos:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
El valor de velocidad de conexión que se muestra para la entrada tipo bot. Esto es cosmético. No controla la frecuencia con la que se actualiza el script.
email = ""
El campo de correo electrónico que se muestra para la entrada tipo bot. Déjelo vacío a menos que desee mostrar una dirección de contacto.
share
share = "0"
El tamaño compartido que se muestra para la entrada tipo bot. Para un robot de visualización de estadísticas, 0 es apropiado a menos que desee que la entrada muestre un valor de acción decorativo.
prefix
prefix = "!_Stats_"
Texto colocado antes de las estadísticas generadas.
Ejemplos:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Elija un prefijo que se clasifique claramente en la lista de usuarios del concentrador.
postfix
postfix = ""
Texto colocado después de las estadísticas generadas.
Ejemplos:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Controla la frecuencia con la que se debe actualizar la entrada de la pantalla.
Valores recomendados:
| Valor | Significado |
|---|---|
30 | Más receptivo. Útil para centros ocupados. |
60 | Valor predeterminado recomendado. |
300 | Menor actividad. Útil para centros silenciosos. |
Evite valores bajos. No es necesario actualizar las estadísticas del centro cada segundo.
counter
counter = 0
Contador interno utilizado por el script. No cambie esto a menos que esté modificando la lógica del script.
show_users
show_users = true
Controla si el nombre para mostrar incluye el recuento actual de usuarios en línea.
Salida de ejemplo:
!_Stats_128U
show_ops
show_ops = true
Controla si el nombre para mostrar incluye el recuento de operadores actual.
Salida de ejemplo:
!_Stats_128U_4Ops
show_share
show_share = false
Controla si el nombre para mostrar incluye el recurso compartido total del centro.
Salida de ejemplo:
!_Stats_128U_4Ops_24.5TB
Habilite esto solo cuando su API Verlihub Lua exponga un valor compartido total confiable.
Notas de compatibilidad de API
El script de ejemplo utiliza estas funciones:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
Su versión del complemento Verlihub Lua puede exponer diferentes nombres de funciones. Si el script se carga pero siempre muestra cero, ajuste las llamadas API utilizadas por las funciones de contador.
Las principales funciones para editar son:
function GetUserCount()
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
Reemplace esas llamadas con las funciones admitidas por su versión del complemento Verlihub Lua.
Configuraciones de ejemplo
Sólo recuento de usuarios
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Visualización de ejemplo:
!_Users_128U_Online
Usuarios y operadores
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Visualización de ejemplo:
!_Stats_128U_4Ops
Pantalla de participación total
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Visualización de ejemplo:
!_Share_24.5TB
Estado del concentrador compacto
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Visualización de ejemplo:
!_Hub_128U_4Ops_24.5TB
Configuraciones de producción recomendadas
Para la mayoría de los centros, comience solo con usuarios y operadores:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Esto mantiene la pantalla lo suficientemente corta para las listas de usuarios normales.
Si la lista de usuarios del concentrador está abarrotada, utilice una visualización más corta:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Si el cálculo de participación total es costoso o no confiable en su versión Verlihub, manténgalo deshabilitado:
show_share = false
Probando el guión
Después de cargar el script, consulte la lista de usuarios del centro para ver la entrada de estadísticas generadas.
Confirma que:
- La entrada aparece sólo una vez.
- El recuento de usuarios mostrado es correcto.
- El recuento de operadores mostrado es correcto.
- El porcentaje total se muestra correctamente si está habilitado.
- El nombre no es demasiado largo para la lista de usuarios.
- El intervalo de actualización es razonable.
- La entrada desaparece después de descargar el script.
- Recargar el script no crea duplicados.
Si la pantalla siempre muestra cero, revise la sección de compatibilidad de API.
Solución de problemas
El guión no se carga
Compruebe que el complemento Lua esté activo:
!pluglist
Verifique la ruta del archivo:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilice la ruta absoluta si las rutas relativas no funcionan.
Las estadísticas siempre muestran cero
Esto generalmente significa que los nombres de las funciones API Lua no coinciden con la versión del complemento Verlihub.
Compruebe las funciones utilizadas en:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Luego reemplace el ejemplo VH:* llamadas con las funciones soportadas por su instalación.
El nombre de la entrada es demasiado largo
Deshabilite algunos campos o acorte el prefijo.
Ejemplo:
prefix = "!_S_"
show_share = false
Mostrar actualizaciones con demasiada frecuencia
Aumente el intervalo.
Recomendado:
interval = 60
Para centros silenciosos:
interval = 300
Aparecen entradas duplicadas
Descargar el guión:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Luego cárgalo nuevamente:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Si continúan los duplicados, reinicie el complemento Lua o el servicio Verlihub durante una ventana de mantenimiento.
Notas de seguridad
Este script debe ser liviano. No agregue:
- Solicitudes HTTP externas.
- Consultas a la base de datos en cada actualización.
- Escaneo de archivos.
- Bucles largos.
- Bloquear llamadas de sueño.
- Cálculos costosos por usuario.
Los scripts de visualización de estadísticas deben leer contadores centrales simples y actualizar el nombre para mostrar. Si un valor es costoso de calcular, guárdelo en caché fuera del proceso central.
Notas de mantenimiento
Mantenga una copia de seguridad antes de cambiar el script:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Si usa Git:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Cuando se cambia solo el prefijo, el sufijo, el intervalo o las estadísticas habilitadas, no se requieren cambios lógicos.
Mejoras futuras sugeridas
Posibles versiones posteriores podrían agregar:
- Visualización del recuento máximo de usuarios.
- Visualización del recuento de usuarios registrados.
- Visualización del tiempo de actividad del concentrador.
- Visualización de participación total por unidad.
- Separe las entradas de visualización para los usuarios y compártalas.
- Comando de estadísticas exclusivo del operador.
- Seguimiento diario de la marca máxima.
- Registro de instantáneas de estadísticas basadas en archivos.
Agregue solo las estadísticas que leerán los usuarios u operadores. Demasiada información hace que la entrada de la lista de usuarios sea más difícil de escanear.