Coleta registros SIP do FreeSWITCH e gera relatórios por domínio (FusionPBX)
|
Some checks are pending
Deploy corp01 / deploy (push) Waiting to run
Deploy corp05 / deploy (push) Waiting to run
Deploy corp06 / deploy (push) Waiting to run
Deploy corp07 / deploy (push) Waiting to run
Deploy corp02 / deploy (push) Successful in 1s
Deploy corp03 / deploy (push) Successful in 5s
Deploy corp04 / deploy (push) Successful in 2m1s
|
||
|---|---|---|
| .gitea/workflows | ||
| .env.example | ||
| .gitignore | ||
| coleta_registro.py | ||
| README.md | ||
| requirements.txt | ||
Coleta de Registros FreeSWITCH + FusionPBX
Este script coleta os registros SIP ativos do FreeSWITCH, cruza com os ramais cadastrados no FusionPBX (PostgreSQL) e gera CSVs por domínio contendo status, dispositivo, troncos e DDR.
O que ele gera
- Pasta
csv_registrations/com um CSV por domínio. - Colunas: Ramal, Domínio, Status, Dispositivo, Troncos, DDR.
Requisitos
- Python 3.8+
- Acesso local ao
fs_clino servidor do FreeSWITCH - Acesso local ao banco PostgreSQL do FusionPBX
- Dependência Python:
psycopg2-binary
Configuração
- Copie o arquivo
.env.examplepara.enve ajuste os valores. - Garanta que o usuário do banco tenha permissão de leitura nas tabelas do FusionPBX.
Variáveis do .env
FS_CLI_PATH: caminho dofs_cli(ex.:fs_cliou/usr/bin/fs_cli)FS_PROFILE: perfil do FreeSWITCH (ex.:internal)FS_CLI_TIMEOUT: timeout em segundos do comandofs_cli(ex.:10)DB_HOST: host do PostgresDB_PORT: porta do PostgresDB_NAME: nome do bancoDB_USER: usuárioDB_PASSWORD: senha
Como rodar
pip install -r requirements.txt
python3 coleta_registro.py
Replicar para outros servidores
- Clone este repositório no servidor que roda o FreeSWITCH.
- Configure o
.envcom os parâmetros daquele servidor. - Instale dependências e execute.
Esse fluxo é o mais confiável porque o fs_cli normalmente precisa rodar localmente no servidor do FreeSWITCH.
Deploy com Gitea Actions (runner no servidor)
Os workflows em .gitea/workflows/ usam labels por servidor (ex.: corp01, corp02, etc.).
Para cada servidor:
- Instale e registre o runner no próprio servidor.
- Atribua a label correspondente (ex.:
corp03). - Faça o clone em
/opt/collect-registry.
No push, o runner com a label correta executa o deploy localmente, sem SSH.
Exemplo de crontab (rodar todos os dias às 02h)
0 2 * * * /usr/bin/python3 /opt/collect-registry/coleta_registro.py >> /var/log/coleta_registro.log 2>&1
Ajuste o caminho do Python e do projeto conforme o seu servidor.