limpeza
This commit is contained in:
1 parent
2d2e40214b
commit
a88ee59f0d
20 files changed
-2509
No files matched your search
@@ -1,326 +0,0 @@
|
|||||||
# Funcionalidade: Adicionar ONU
|
|
||||||
|
|
||||||
## Descrição
|
|
||||||
Nova funcionalidade implementada para adicionar ONUs automaticamente nas OLTs, incluindo descoberta de slot, determinação de ONU ID disponível, configuração de VLAN e criação de service-port.
|
|
||||||
|
|
||||||
## Como Usar
|
|
||||||
|
|
||||||
### Comando de Texto
|
|
||||||
```
|
|
||||||
adicionar onu SERIAL_DA_ONU
|
|
||||||
add onu SERIAL_DA_ONU
|
|
||||||
cadastrar onu SERIAL_DA_ONU
|
|
||||||
criar onu SERIAL_DA_ONU
|
|
||||||
registrar onu SERIAL_DA_ONU
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exemplos
|
|
||||||
- `adicionar onu FHTT12345678`
|
|
||||||
- `add onu DACM91569513`
|
|
||||||
- `cadastrar onu ABCD12345678`
|
|
||||||
|
|
||||||
## Fluxo de Operação
|
|
||||||
|
|
||||||
### 1. Comando Inicial
|
|
||||||
O usuário digita o comando com o serial da ONU que deseja adicionar.
|
|
||||||
|
|
||||||
### 2. Seleção da OLT
|
|
||||||
O bot apresenta uma lista das OLTs disponíveis para o usuário escolher onde adicionar a ONU.
|
|
||||||
|
|
||||||
### 3. Descoberta do Slot
|
|
||||||
O sistema executa `show interface gpon discovered-onus` para encontrar o slot onde a ONU foi descoberta.
|
|
||||||
|
|
||||||
### 4. Análise de ONU IDs
|
|
||||||
O sistema executa `show interface gpon SLOT onu | nomore` para descobrir quais ONU IDs (0-127) estão em uso.
|
|
||||||
|
|
||||||
### 5. Determinação da VLAN
|
|
||||||
Com base na OLT e slot, o sistema determina automaticamente o VLAN ID usando o mapeamento pré-configurado.
|
|
||||||
|
|
||||||
### 6. Confirmação
|
|
||||||
Antes de adicionar, o bot exibe todas as informações e pede confirmação:
|
|
||||||
- Serial da ONU
|
|
||||||
- Slot descoberto
|
|
||||||
- ONU ID que será usado
|
|
||||||
- VLAN ID
|
|
||||||
- Configurações que serão aplicadas
|
|
||||||
|
|
||||||
### 7. Adição Automática
|
|
||||||
Após confirmação, o sistema executa automaticamente todos os comandos necessários.
|
|
||||||
|
|
||||||
## Comandos SSH Executados
|
|
||||||
|
|
||||||
### Descoberta do Slot
|
|
||||||
```bash
|
|
||||||
show interface gpon discovered-onus
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verificação de ONU IDs em Uso
|
|
||||||
```bash
|
|
||||||
show interface gpon 1/1/3 onu | nomore
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuração da ONU
|
|
||||||
```bash
|
|
||||||
config
|
|
||||||
interface gpon 1/1/3 # Slot descoberto
|
|
||||||
onu 42 # Próximo ID disponível
|
|
||||||
line-profile DM986-100
|
|
||||||
serial-number FHTT12345678
|
|
||||||
ethernet 1
|
|
||||||
native vlan vlan-id 603 # VLAN baseada na OLT/slot
|
|
||||||
top
|
|
||||||
service-port new
|
|
||||||
gpon 1/1/3 onu 42 gem 1 match vlan vlan-id 603 action vlan replace vlan-id 603
|
|
||||||
commit
|
|
||||||
top
|
|
||||||
exit
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Mapeamento de VLANs
|
|
||||||
|
|
||||||
### OLT DITO
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 601 |
|
|
||||||
| 1/1/2 | 602 |
|
|
||||||
| 1/1/3 | 603 |
|
|
||||||
| 1/1/4 | 604 |
|
|
||||||
|
|
||||||
### OLT COLMEIA
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 605 |
|
|
||||||
| 1/1/2 | 606 |
|
|
||||||
| 1/1/3 | 607 |
|
|
||||||
| 1/1/4 | 608 |
|
|
||||||
| 1/1/5 | 609 |
|
|
||||||
| 1/1/6 | 610 |
|
|
||||||
| 1/1/7 | 611 |
|
|
||||||
| 1/1/8 | 612 |
|
|
||||||
| 1/1/9 | 613 |
|
|
||||||
| 1/1/10 | 614 |
|
|
||||||
| 1/1/11 | 608 |
|
|
||||||
| 1/1/12 | 616 |
|
|
||||||
| 1/1/13 | 617 |
|
|
||||||
| 1/1/14 | 618 |
|
|
||||||
| 1/1/15 | 619 |
|
|
||||||
| 1/1/16 | 620 |
|
|
||||||
|
|
||||||
### OLT CANAA
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 605 |
|
|
||||||
| 1/1/2 | 606 |
|
|
||||||
| 1/1/3 | 607 |
|
|
||||||
| 1/1/4 | 608 |
|
|
||||||
| 1/1/5 | 609 |
|
|
||||||
| 1/1/6 | 610 |
|
|
||||||
| 1/1/7 | 611 |
|
|
||||||
| 1/1/8 | 612 |
|
|
||||||
|
|
||||||
### OLT CANAA 2
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 621 |
|
|
||||||
| 1/1/2 | 622 |
|
|
||||||
| 1/1/3 | 623 |
|
|
||||||
| 1/1/4 | 624 |
|
|
||||||
| 1/1/5 | 625 |
|
|
||||||
| 1/1/6 | 626 |
|
|
||||||
| 1/1/7 | 627 |
|
|
||||||
| 1/1/8 | 628 |
|
|
||||||
|
|
||||||
### OLT PEDRO AFONSO 1
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 301 |
|
|
||||||
| 1/1/2 | 302 |
|
|
||||||
| 1/1/3 | 303 |
|
|
||||||
| 1/1/4 | 304 |
|
|
||||||
| 1/1/5 | 305 |
|
|
||||||
| 1/1/6 | 306 |
|
|
||||||
| 1/1/7 | 307 |
|
|
||||||
| 1/1/8 | 308 |
|
|
||||||
| 1/1/9 | 309 |
|
|
||||||
| 1/1/10 | 310 |
|
|
||||||
| 1/1/11 | 311 |
|
|
||||||
| 1/1/12 | 312 |
|
|
||||||
| 1/1/13 | 313 |
|
|
||||||
| 1/1/14 | 314 |
|
|
||||||
| 1/1/15 | 315 |
|
|
||||||
| 1/1/16 | 316 |
|
|
||||||
|
|
||||||
### OLT CANAVIEIRAS
|
|
||||||
| Slot | VLAN |
|
|
||||||
|------|------|
|
|
||||||
| 1/1/1 | 601 |
|
|
||||||
| 1/1/2 | 602 |
|
|
||||||
| 1/1/3 | 603 |
|
|
||||||
| 1/1/4 | 604 |
|
|
||||||
| 1/1/5 | 605 |
|
|
||||||
| 1/1/6 | 606 |
|
|
||||||
| 1/1/7 | 607 |
|
|
||||||
| 1/1/8 | 608 |
|
|
||||||
| 1/1/9 | 609 |
|
|
||||||
| 1/1/10 | 610 |
|
|
||||||
| 1/1/11 | 611 |
|
|
||||||
| 1/1/12 | 612 |
|
|
||||||
| 1/1/13 | 613 |
|
|
||||||
| 1/1/14 | 614 |
|
|
||||||
| 1/1/15 | 615 |
|
|
||||||
| 1/1/16 | 616 |
|
|
||||||
|
|
||||||
## Recursos de Segurança
|
|
||||||
|
|
||||||
### Confirmação Obrigatória
|
|
||||||
- Sistema exige confirmação explícita antes de adicionar
|
|
||||||
- Exibe todas as configurações que serão aplicadas
|
|
||||||
- Mostra ONU IDs já em uso no slot
|
|
||||||
|
|
||||||
### Validação de Dados
|
|
||||||
- Verifica se a ONU está na lista de discovered-onus
|
|
||||||
- Encontra automaticamente o próximo ONU ID disponível
|
|
||||||
- Valida se existe VLAN configurada para a OLT/slot
|
|
||||||
|
|
||||||
### Processo Controlado
|
|
||||||
- Usa shell interativo para manter contexto
|
|
||||||
- Timeout de segurança (90 segundos)
|
|
||||||
- Logging detalhado de todas as operações
|
|
||||||
|
|
||||||
## Tratamento de Erros
|
|
||||||
|
|
||||||
### ONU Não Descoberta
|
|
||||||
- Mensagem clara informando que a ONU não está na lista discovered-onus
|
|
||||||
- Sugestão para verificar se a ONU está ligada
|
|
||||||
|
|
||||||
### Slot Lotado
|
|
||||||
- Informa quando todos os ONU IDs (0-127) estão em uso
|
|
||||||
- Sugere usar outro slot ou remover ONUs não utilizadas
|
|
||||||
|
|
||||||
### VLAN Não Configurada
|
|
||||||
- Alerta quando não há VLAN mapeada para a OLT/slot
|
|
||||||
- Informa as configurações necessárias
|
|
||||||
|
|
||||||
### Timeout
|
|
||||||
- Processo é interrompido após 90 segundos
|
|
||||||
- Conexão é fechada adequadamente
|
|
||||||
|
|
||||||
## Resultados
|
|
||||||
|
|
||||||
### Sucesso
|
|
||||||
```
|
|
||||||
✅ ONU Adicionada com Sucesso!
|
|
||||||
|
|
||||||
📱 Serial: FHTT12345678
|
|
||||||
📍 Localização: Slot 1/1/3, ONU 42
|
|
||||||
🏷️ VLAN: 603
|
|
||||||
🔌 Service-port: 1234
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
✅ Configurações aplicadas:
|
|
||||||
• Line-profile: DM986-100
|
|
||||||
• Serial number: FHTT12345678
|
|
||||||
• Ethernet: porta 1
|
|
||||||
• Native VLAN: 603
|
|
||||||
• Service-port: criado e configurado
|
|
||||||
• Configuração commitada
|
|
||||||
|
|
||||||
🎉 A ONU está pronta para uso!
|
|
||||||
```
|
|
||||||
|
|
||||||
### Erro
|
|
||||||
```
|
|
||||||
❌ Não foi possível adicionar a ONU
|
|
||||||
|
|
||||||
📱 Serial: FHTT12345678
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
❌ Erro: ONU FHTT12345678 não encontrada na lista de discovered-onus
|
|
||||||
|
|
||||||
💡 Dica: Verifique se a ONU está ligada e descoberta pela OLT.
|
|
||||||
Use o comando: show interface gpon discovered-onus
|
|
||||||
```
|
|
||||||
|
|
||||||
## Arquivos Modificados
|
|
||||||
|
|
||||||
### 1. `src/ssh/manager.js`
|
|
||||||
- `getVlanMapping()` - Mapeamento de VLANs por OLT/slot
|
|
||||||
- `discoverOnuSlot()` - Descobre slot da ONU na lista discovered-onus
|
|
||||||
- `getUsedOnuIds()` - Lista ONU IDs já em uso em um slot
|
|
||||||
- `findNextAvailableOnuId()` - Encontra próximo ID disponível
|
|
||||||
- `addOnu()` - Adiciona ONU completa (shell interativo)
|
|
||||||
- `addOnuBySerial()` - Processo completo por serial
|
|
||||||
|
|
||||||
### 2. `src/nlp/processor.js`
|
|
||||||
- Adicionado 'adicionar_onu' aos actionSynonyms
|
|
||||||
- Novos padrões regex para comandos de adição
|
|
||||||
- Suporte para variações de comando (add, criar, cadastrar, registrar)
|
|
||||||
|
|
||||||
### 3. `src/bot/handler.js`
|
|
||||||
- `handleAdicionarOnu()` - Interface para comando adicionar
|
|
||||||
- `handleAddOnuCallback()` - Callback para seleção de OLT e análise
|
|
||||||
- `handleConfirmAddCallback()` - Callback para confirmação e execução
|
|
||||||
- Atualização da mensagem de help
|
|
||||||
|
|
||||||
## Considerações Técnicas
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
- Processo otimizado em etapas bem definidas
|
|
||||||
- Uso de shell interativo para operações complexas
|
|
||||||
- Timeout de 90 segundos para operações da OLT
|
|
||||||
|
|
||||||
### Confiabilidade
|
|
||||||
- Validação em todas as etapas
|
|
||||||
- Descoberta automática de configurações
|
|
||||||
- Logs detalhados para troubleshooting
|
|
||||||
|
|
||||||
### Usabilidade
|
|
||||||
- Interface intuitiva com botões
|
|
||||||
- Mensagens claras e informativas
|
|
||||||
- Confirmação visual antes da ação
|
|
||||||
|
|
||||||
## Limitações
|
|
||||||
|
|
||||||
1. **Dependência de Discovered-onus**: ONU deve estar na lista discovered-onus
|
|
||||||
2. **Mapeamento Fixo**: VLANs são pré-configuradas no código
|
|
||||||
3. **Timeout**: Operações longas podem exceder 90s
|
|
||||||
4. **Dependência SSH**: Requer conectividade estável
|
|
||||||
|
|
||||||
## Próximas Melhorias
|
|
||||||
|
|
||||||
1. **VLAN Configurável**: Permitir definir VLAN customizada
|
|
||||||
2. **Line-profile Dinâmico**: Detectar modelo da ONU automaticamente
|
|
||||||
3. **Validação Pós-adição**: Verificar se ONU subiu corretamente
|
|
||||||
4. **Adição em Lote**: Adicionar múltiplas ONUs de uma vez
|
|
||||||
|
|
||||||
## Teste da Funcionalidade
|
|
||||||
|
|
||||||
### Cenário de Teste
|
|
||||||
1. Certifique-se que há uma ONU na lista discovered-onus
|
|
||||||
2. Digite: `adicionar onu SERIAL_DA_ONU`
|
|
||||||
3. Selecione uma OLT na lista
|
|
||||||
4. Verifique as informações exibidas
|
|
||||||
5. Confirme a adição
|
|
||||||
6. Aguarde conclusão da operação
|
|
||||||
|
|
||||||
### Comandos de Teste
|
|
||||||
- `adicionar onu TESTE123456`
|
|
||||||
- `add onu TESTE123456`
|
|
||||||
- `cadastrar onu TESTE123456`
|
|
||||||
- `criar TESTE123456`
|
|
||||||
|
|
||||||
### Verificação Manual
|
|
||||||
```bash
|
|
||||||
# Verificar se ONU está discovered
|
|
||||||
show interface gpon discovered-onus
|
|
||||||
|
|
||||||
# Verificar ONU IDs em uso
|
|
||||||
show interface gpon 1/1/3 onu | nomore
|
|
||||||
|
|
||||||
# Após adição, verificar se ONU subiu
|
|
||||||
show interface gpon 1/1/3 onu ONUID
|
|
||||||
|
|
||||||
# Verificar service-port criado
|
|
||||||
show running-config service-port
|
|
||||||
```
|
|
||||||
-125
@@ -1,125 +0,0 @@
|
|||||||
# Correções Aplicadas na Funcionalidade ADD ONU
|
|
||||||
|
|
||||||
## Problemas Identificados e Soluções
|
|
||||||
|
|
||||||
### 1. **Problema de Roteamento de Callbacks** ✅ CORRIGIDO
|
|
||||||
**Problema:** O callback `confirm_add_` estava sendo capturado pela condição genérica `confirm_` antes de chegar ao handler específico.
|
|
||||||
|
|
||||||
**Solução:** Reordenei as condições no `src/bot/handler.js` para que `confirm_add_` seja verificado antes da condição genérica `confirm_`.
|
|
||||||
|
|
||||||
**Arquivo:** `src/bot/handler.js`
|
|
||||||
**Linhas:** ~775-785
|
|
||||||
|
|
||||||
### 2. **Problema na Sequência SSH - Contexto Ethernet** ✅ CORRIGIDO
|
|
||||||
**Problema:** Após o comando `ethernet 1`, o bot entrava no contexto `(config-ethernet-1)#`, mas a lógica não reconhecia este prompt para continuar.
|
|
||||||
|
|
||||||
**Solução:** Adicionei reconhecimento específico para o prompt `(config-ethernet-1)#` no step 6.
|
|
||||||
|
|
||||||
**Arquivo:** `src/ssh/manager.js`
|
|
||||||
**Código:**
|
|
||||||
```javascript
|
|
||||||
} else if (step === 6 && dataStr.includes('(config-ethernet')) {
|
|
||||||
// No modo ethernet - enviar native vlan
|
|
||||||
shouldSendCommand = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. **Problema na Sequência SSH - Comando TOP** ✅ CORRIGIDO
|
|
||||||
**Problema:** Após `native vlan vlan-id 603`, o bot ainda estava em `(config-ethernet-1)#` mas esperava estar em `(config)#` para enviar `top`.
|
|
||||||
|
|
||||||
**Solução:** Ajustei a condição do step 7 para reconhecer o contexto ethernet antes de enviar `top`.
|
|
||||||
|
|
||||||
**Arquivo:** `src/ssh/manager.js`
|
|
||||||
**Código:**
|
|
||||||
```javascript
|
|
||||||
} else if (step === 7 && dataStr.includes('(config-ethernet')) {
|
|
||||||
// Após native vlan - enviar top para voltar ao config
|
|
||||||
shouldSendCommand = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. **Ajuste das Condições Subsequentes** ✅ CORRIGIDO
|
|
||||||
**Problema:** Com a adição do step 7, todos os steps subsequentes ficaram desalinhados.
|
|
||||||
|
|
||||||
**Solução:** Reajustei todos os números dos steps:
|
|
||||||
- Step 8: service-port new
|
|
||||||
- Step 9: configuração service-port
|
|
||||||
- Step 10: comando gpon
|
|
||||||
- Step 11: commit
|
|
||||||
- Step 12: top
|
|
||||||
- Step 13: exit
|
|
||||||
- Step 14: exit final
|
|
||||||
|
|
||||||
## Sequência Completa de Comandos
|
|
||||||
|
|
||||||
```
|
|
||||||
0: config → (config)#
|
|
||||||
1: interface gpon 1/1/3 → (config-gpon-1/1/3)#
|
|
||||||
2: onu 0 → (config-gpon-onu-0)#
|
|
||||||
3: line-profile DM986-100 → (config-gpon-onu-0)#
|
|
||||||
4: serial-number DACM915E0F76 → (config-gpon-onu-0)#
|
|
||||||
5: ethernet 1 → (config-ethernet-1)#
|
|
||||||
6: native vlan vlan-id 603 → (config-ethernet-1)#
|
|
||||||
7: top → (config)#
|
|
||||||
8: service-port new → (config)#
|
|
||||||
9: gpon 1/1/3 onu 0 gem 1... → (config-serviceport-X)#
|
|
||||||
10: commit → (config)#
|
|
||||||
11: top → (config)#
|
|
||||||
12: exit → #
|
|
||||||
13: exit → desconexão
|
|
||||||
```
|
|
||||||
|
|
||||||
## Status das Correções
|
|
||||||
|
|
||||||
- ✅ **Callback Routing**: Corrigido
|
|
||||||
- ✅ **SSH Context Recognition**: Corrigido
|
|
||||||
- ✅ **Step Sequence**: Corrigido
|
|
||||||
- ✅ **Prompt Detection**: Corrigido
|
|
||||||
|
|
||||||
## Para Testar
|
|
||||||
|
|
||||||
1. **Reinicie o bot:**
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Teste no Telegram:**
|
|
||||||
```
|
|
||||||
adicionar onu DACM915E0F76
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Sequência esperada:**
|
|
||||||
- Seleção da OLT
|
|
||||||
- Descoberta automática do slot
|
|
||||||
- Confirmação das configurações
|
|
||||||
- Execução completa dos comandos SSH
|
|
||||||
- Mensagem de sucesso
|
|
||||||
|
|
||||||
## Logs Esperados
|
|
||||||
|
|
||||||
Você deve ver toda a sequência de comandos sendo executada:
|
|
||||||
```
|
|
||||||
📝 Enviando comando 1: config
|
|
||||||
📝 Enviando comando 2: interface gpon 1/1/3
|
|
||||||
📝 Enviando comando 3: onu 0
|
|
||||||
📝 Enviando comando 4: line-profile DM986-100
|
|
||||||
📝 Enviando comando 5: serial-number DACM915E0F76
|
|
||||||
📝 Enviando comando 6: ethernet 1
|
|
||||||
📝 Enviando comando 7: native vlan vlan-id 603
|
|
||||||
📝 Enviando comando 8: top
|
|
||||||
📝 Enviando comando 9: service-port new
|
|
||||||
📝 Enviando comando 10: gpon 1/1/3 onu 0 gem 1...
|
|
||||||
📝 Enviando comando 11: commit
|
|
||||||
📝 Enviando comando 12: top
|
|
||||||
📝 Enviando comando 13: exit
|
|
||||||
📝 Enviando comando 14: exit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Próximos Passos
|
|
||||||
|
|
||||||
Se ainda houver problemas:
|
|
||||||
1. Verificar se todas as ONUs discovered estão sendo listadas
|
|
||||||
2. Testar com diferentes seriais
|
|
||||||
3. Verificar conectividade SSH com as OLTs
|
|
||||||
4. Analisar logs completos para identificar pontos de falha
|
|
||||||
|
|
||||||
**As correções foram aplicadas e o bot deve funcionar corretamente agora!** 🎉
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# 🛡️ Sistema de Autenticação do Bot
|
|
||||||
|
|
||||||
## ✅ **IMPLEMENTADO COM SUCESSO**
|
|
||||||
|
|
||||||
### 🔐 **Controle de Acesso**
|
|
||||||
|
|
||||||
**Usuários Autorizados:** Apenas usuários na lista podem usar o bot
|
|
||||||
**Configuração:** Via arquivo `.env`
|
|
||||||
**Verificação:** Todas as mensagens e callbacks são verificados
|
|
||||||
|
|
||||||
### 📝 **Configuração**
|
|
||||||
|
|
||||||
**Arquivo:** `.env`
|
|
||||||
```properties
|
|
||||||
# IDs dos usuários autorizados (separados por vírgula)
|
|
||||||
ALLOWED_USERS=593272271
|
|
||||||
```
|
|
||||||
|
|
||||||
**Para adicionar mais usuários:**
|
|
||||||
```properties
|
|
||||||
ALLOWED_USERS=593272271,123456789,987654321
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🚫 **Mensagem de Acesso Negado**
|
|
||||||
|
|
||||||
Usuários não autorizados recebem:
|
|
||||||
```
|
|
||||||
🚫 Acesso Negado
|
|
||||||
|
|
||||||
❌ Você não tem permissão para usar este bot.
|
|
||||||
🆔 Seu ID: 123456789
|
|
||||||
|
|
||||||
📞 Entre em contato com o administrador para solicitar acesso.
|
|
||||||
```
|
|
||||||
|
|
||||||
### 👤 **Como Descobrir ID do Usuário**
|
|
||||||
|
|
||||||
1. **Usuário envia mensagem para o bot**
|
|
||||||
2. **Bot responde com o ID na mensagem de negação**
|
|
||||||
3. **Ou use o comando:** `meu id`
|
|
||||||
|
|
||||||
### 🛠️ **Comandos Administrativos**
|
|
||||||
|
|
||||||
#### **`admin`** - Painel Administrativo
|
|
||||||
```
|
|
||||||
🛡️ Painel Administrativo
|
|
||||||
|
|
||||||
👥 Gestão de Usuários:
|
|
||||||
• usuarios autorizados - Ver lista de usuários
|
|
||||||
• meu id - Ver seu ID do Telegram
|
|
||||||
|
|
||||||
📊 Sistema:
|
|
||||||
• status - Status do bot
|
|
||||||
• equipamentos - Lista de equipamentos
|
|
||||||
|
|
||||||
🔧 Comandos disponíveis:
|
|
||||||
• Ver sinal, adicionar ONU, remover ONU
|
|
||||||
• Resetar ONU, atualizar firmware
|
|
||||||
• Gerenciar usuários Juniper
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **`usuarios autorizados`** - Lista de Usuários
|
|
||||||
```
|
|
||||||
👥 Usuários Autorizados
|
|
||||||
|
|
||||||
📊 Total: 1 usuário(s)
|
|
||||||
|
|
||||||
1. ID: 593272271
|
|
||||||
|
|
||||||
🆔 Seu ID: 593272271
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **`meu id`** - Identificação do Usuário
|
|
||||||
```
|
|
||||||
🆔 Sua Identificação
|
|
||||||
|
|
||||||
👤 User ID: 593272271
|
|
||||||
💬 Chat ID: 593272271
|
|
||||||
|
|
||||||
📋 Use estes IDs para configurar permissões
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🔧 **Implementação Técnica**
|
|
||||||
|
|
||||||
#### **Verificação de Autorização**
|
|
||||||
```javascript
|
|
||||||
isAuthorized(userId) {
|
|
||||||
if (config.bot.allowedUsers.length === 0) {
|
|
||||||
return true; // Se não há lista, permite todos
|
|
||||||
}
|
|
||||||
return config.bot.allowedUsers.includes(userId);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **Proteção de Mensagens**
|
|
||||||
```javascript
|
|
||||||
// Verificar autorização
|
|
||||||
if (!this.isAuthorized(userId)) {
|
|
||||||
await this.bot.sendMessage(chatId, '🚫 Acesso Negado...');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **Proteção de Callbacks**
|
|
||||||
```javascript
|
|
||||||
// Verificar autorização
|
|
||||||
if (!this.isAuthorized(userId)) {
|
|
||||||
await this.bot.answerCallbackQuery(callbackQuery.id, '🚫 Acesso negado');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 📊 **Logs de Segurança**
|
|
||||||
|
|
||||||
**Acesso negado:**
|
|
||||||
```
|
|
||||||
🚫 Acesso negado para usuário João (123456789)
|
|
||||||
🚫 Callback negado para usuário (123456789)
|
|
||||||
```
|
|
||||||
|
|
||||||
**Mensagens de usuários autorizados:**
|
|
||||||
```
|
|
||||||
📨 Mensagem de Rodrigo (593272271): admin
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🚀 **Para Adicionar Novo Usuário**
|
|
||||||
|
|
||||||
1. **O usuário envia mensagem para o bot**
|
|
||||||
2. **Bot responde com o ID dele**
|
|
||||||
3. **Administrador adiciona o ID no `.env`:**
|
|
||||||
```properties
|
|
||||||
ALLOWED_USERS=593272271,NOVO_ID_AQUI
|
|
||||||
```
|
|
||||||
4. **Reiniciar o bot**
|
|
||||||
5. **Usuário já pode usar o bot**
|
|
||||||
|
|
||||||
### ⚡ **Exemplo de Uso**
|
|
||||||
|
|
||||||
**Usuário não autorizado tenta usar:**
|
|
||||||
```
|
|
||||||
Usuário: ver sinal DACM123456
|
|
||||||
Bot: 🚫 Acesso Negado
|
|
||||||
🆔 Seu ID: 123456789
|
|
||||||
```
|
|
||||||
|
|
||||||
**Administrador adiciona ID e reinicia bot:**
|
|
||||||
```properties
|
|
||||||
ALLOWED_USERS=593272271,123456789
|
|
||||||
```
|
|
||||||
|
|
||||||
**Usuário já autorizado:**
|
|
||||||
```
|
|
||||||
Usuário: ver sinal DACM123456
|
|
||||||
Bot: 📡 Selecione a OLT para verificar o sinal...
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🛡️ **Segurança Implementada**
|
|
||||||
|
|
||||||
- ✅ **Controle total de acesso**
|
|
||||||
- ✅ **Verificação em todas as operações**
|
|
||||||
- ✅ **Logs de tentativas de acesso**
|
|
||||||
- ✅ **Mensagens informativas para negação**
|
|
||||||
- ✅ **Comandos administrativos**
|
|
||||||
- ✅ **Identificação de usuários**
|
|
||||||
|
|
||||||
### 🎯 **Status**
|
|
||||||
|
|
||||||
**Sistema de autenticação 100% funcional!**
|
|
||||||
|
|
||||||
**Usuário autorizado atual:** Rodrigo (593272271)
|
|
||||||
**Para testar:** Reinicie o bot e use `admin` para ver o painel
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**No Telegram:**
|
|
||||||
- `admin` - Ver painel administrativo
|
|
||||||
- `usuarios autorizados` - Ver lista de usuários
|
|
||||||
- `meu id` - Ver seu ID
|
|
||||||
|
|
||||||
**Agora seu bot está seguro!** 🛡️✨
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# Configuração do Bot de Telegram
|
|
||||||
|
|
||||||
## Passo 1: Obter Token do Bot
|
|
||||||
|
|
||||||
1. Abra o Telegram e procure por `@BotFather`
|
|
||||||
2. Digite `/newbot` e siga as instruções
|
|
||||||
3. Escolha um nome para seu bot (ex: "Bot de Ajuda Rede")
|
|
||||||
4. Escolha um username (ex: "bot_ajuda_rede_bot")
|
|
||||||
5. Copie o token fornecido pelo BotFather
|
|
||||||
|
|
||||||
## Passo 2: Configurar o arquivo .env
|
|
||||||
|
|
||||||
1. Abra o arquivo `.env` na raiz do projeto
|
|
||||||
2. Cole o token do bot:
|
|
||||||
```
|
|
||||||
TELEGRAM_BOT_TOKEN=1234567890:AABBCCDDEEFFgghhiijjkkllmmnnoopp
|
|
||||||
```
|
|
||||||
|
|
||||||
## Passo 3: Obter seu ID do Telegram (opcional - para restringir acesso)
|
|
||||||
|
|
||||||
1. No Telegram, procure por `@userinfobot`
|
|
||||||
2. Digite `/start`
|
|
||||||
3. Copie seu ID numérico
|
|
||||||
4. Adicione no arquivo `.env`:
|
|
||||||
```
|
|
||||||
ALLOWED_USERS=123456789
|
|
||||||
```
|
|
||||||
|
|
||||||
## Passo 4: Instalar dependências e executar
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
## Comandos de Teste
|
|
||||||
|
|
||||||
Após o bot estar rodando, teste no Telegram:
|
|
||||||
|
|
||||||
### Comandos básicos:
|
|
||||||
- `/start` - Iniciar o bot
|
|
||||||
- `/help` - Ver ajuda
|
|
||||||
- `/equipamentos` - Listar equipamentos
|
|
||||||
|
|
||||||
### Desconectar usuários (Juniper):
|
|
||||||
- "desconectar cliente joao123"
|
|
||||||
- "kick usuário maria456"
|
|
||||||
- "expulsar cliente teste"
|
|
||||||
|
|
||||||
### Listar usuários:
|
|
||||||
- "listar usuários conectados"
|
|
||||||
- "mostrar clientes"
|
|
||||||
|
|
||||||
### SSH:
|
|
||||||
- "ssh juniper"
|
|
||||||
- "conectar concentrador"
|
|
||||||
|
|
||||||
### Status:
|
|
||||||
- "verificar status concentrador"
|
|
||||||
- "status juniper"
|
|
||||||
|
|
||||||
## Equipamentos Configurados
|
|
||||||
|
|
||||||
- **juniper** - Concentrador Juniper (131.0.192.254)
|
|
||||||
- **concentrador** - Alias para o Juniper
|
|
||||||
- **router1** - Router exemplo (192.168.1.1)
|
|
||||||
- **switch1** - Switch exemplo (192.168.1.10)
|
|
||||||
|
|
||||||
## Comandos Juniper Suportados
|
|
||||||
|
|
||||||
- `clear network-access aaa subscriber USUARIO` - Desconectar usuário
|
|
||||||
- `show network-access aaa subscribers` - Listar usuários conectados
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Bot não responde:
|
|
||||||
1. Verifique se o token está correto no `.env`
|
|
||||||
2. Verifique se não há erros no console
|
|
||||||
3. Teste com `/start`
|
|
||||||
|
|
||||||
### Erro de SSH:
|
|
||||||
1. Verifique se o IP 131.0.192.254 está acessível
|
|
||||||
2. Teste credenciais manualmente
|
|
||||||
3. Verifique firewall/portas
|
|
||||||
|
|
||||||
### Bot responde "sem permissão":
|
|
||||||
1. Adicione seu ID no `ALLOWED_USERS` no `.env`
|
|
||||||
2. Ou remova a linha para permitir todos os usuários
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
# 🐳 Docker Quick Start - Bot de Ajuda Telegram
|
|
||||||
|
|
||||||
## ⚡ **DEPLOY RÁPIDO**
|
|
||||||
|
|
||||||
### **1. Configurar Ambiente**
|
|
||||||
```bash
|
|
||||||
# Copiar template
|
|
||||||
cp .env.production .env
|
|
||||||
|
|
||||||
# Editar credenciais
|
|
||||||
nano .env # Linux/Mac
|
|
||||||
notepad .env # Windows
|
|
||||||
```
|
|
||||||
|
|
||||||
### **2. Deploy Automático**
|
|
||||||
```bash
|
|
||||||
# Linux/Mac
|
|
||||||
./deploy.sh
|
|
||||||
|
|
||||||
# Windows
|
|
||||||
.\deploy.ps1
|
|
||||||
|
|
||||||
# Manual
|
|
||||||
docker-compose up -d --build
|
|
||||||
```
|
|
||||||
|
|
||||||
### **3. Verificar**
|
|
||||||
```bash
|
|
||||||
# Status
|
|
||||||
docker-compose ps
|
|
||||||
|
|
||||||
# Logs
|
|
||||||
docker-compose logs -f telegram-bot
|
|
||||||
|
|
||||||
# Teste no Telegram
|
|
||||||
# Envie: /start
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 **COMANDOS ÚTEIS**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Gerenciamento básico
|
|
||||||
docker-compose up -d # Iniciar
|
|
||||||
docker-compose down # Parar
|
|
||||||
docker-compose restart # Reiniciar
|
|
||||||
docker-compose ps # Status
|
|
||||||
|
|
||||||
# Logs e debug
|
|
||||||
docker-compose logs -f # Logs em tempo real
|
|
||||||
docker-compose logs --tail=50 # Últimos 50 logs
|
|
||||||
docker stats bot-ajuda-telegram # Uso de recursos
|
|
||||||
|
|
||||||
# Build e update
|
|
||||||
docker-compose build --no-cache # Rebuild
|
|
||||||
docker-compose up -d --build # Update e restart
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 **MONITORAMENTO**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Health check
|
|
||||||
docker-compose exec telegram-bot node -e "console.log('OK')"
|
|
||||||
|
|
||||||
# Verificar conectividade SSH
|
|
||||||
docker-compose exec telegram-bot ping 131.0.192.254
|
|
||||||
|
|
||||||
# Ver configuração
|
|
||||||
docker-compose config
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚨 **TROUBLESHOOTING**
|
|
||||||
|
|
||||||
### **Bot não inicia:**
|
|
||||||
```bash
|
|
||||||
docker-compose logs telegram-bot | grep ERROR
|
|
||||||
```
|
|
||||||
|
|
||||||
### **Problema SSH:**
|
|
||||||
```bash
|
|
||||||
docker-compose logs telegram-bot | grep SSH
|
|
||||||
```
|
|
||||||
|
|
||||||
### **Erro Telegram:**
|
|
||||||
```bash
|
|
||||||
docker-compose logs telegram-bot | grep TelegramError
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📋 **ESTRUTURA**
|
|
||||||
|
|
||||||
```
|
|
||||||
bot-ajuda/
|
|
||||||
├── Dockerfile # Configuração da imagem
|
|
||||||
├── docker-compose.yml # Orquestração
|
|
||||||
├── .dockerignore # Otimização build
|
|
||||||
├── .env.production # Template configuração
|
|
||||||
├── deploy.sh # Script deploy Linux/Mac
|
|
||||||
├── deploy.ps1 # Script deploy Windows
|
|
||||||
└── logs/ # Logs persistentes
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✅ **PRONTO!**
|
|
||||||
|
|
||||||
Seu bot está rodando em produção com:
|
|
||||||
- 🔒 Segurança (usuário não-root)
|
|
||||||
- 📊 Monitoramento (health checks)
|
|
||||||
- 🔄 Restart automático
|
|
||||||
- 📝 Logs persistentes
|
|
||||||
- ⚡ Performance otimizada
|
|
||||||
|
|
||||||
**Teste enviando `/start` para o bot no Telegram!** 🎉
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# 🎯 Correção Final - Duplo Exit Implementado
|
|
||||||
|
|
||||||
## ✅ **Problema Identificado e Corrigido:**
|
|
||||||
|
|
||||||
Você estava correto! São necessários **dois comandos `exit`** para sair completamente dos modos de configuração:
|
|
||||||
|
|
||||||
### 📋 **Sequência Correta Implementada:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
1. config # Entra no modo configuração
|
|
||||||
2. interface gpon 1/1/1 # Entra no modo interface específica
|
|
||||||
3. onu-reset onu 10 # Executa reset da ONU
|
|
||||||
4. yes # Confirma o reset
|
|
||||||
5. exit # Sai do modo interface (config-gpon-1/1/1 → config)
|
|
||||||
6. exit # Sai do modo configuração (config → modo normal)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🎯 **Fluxo Detalhado:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
DM4610-OLT-POP-DITO# config
|
|
||||||
Entering configuration mode terminal
|
|
||||||
DM4610-OLT-POP-DITO(config)# interface gpon 1/1/1
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/1)# onu-reset onu 10
|
|
||||||
Are you sure you want to reset this ONU? [no,yes] yes
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/1)# exit ← Primeiro exit
|
|
||||||
DM4610-OLT-POP-DITO(config)# exit ← Segundo exit
|
|
||||||
DM4610-OLT-POP-DITO# ← Volta ao modo normal
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🔧 **Mudanças Implementadas:**
|
|
||||||
|
|
||||||
1. **Array de comandos atualizado:**
|
|
||||||
- Adicionado primeiro `exit` (sai do modo interface)
|
|
||||||
- Adicionado segundo `exit` (sai do modo configuração)
|
|
||||||
|
|
||||||
2. **Removido exit duplicado:**
|
|
||||||
- Eliminado o `exit` que era executado separadamente
|
|
||||||
- Agora tudo está na sequência principal
|
|
||||||
|
|
||||||
3. **Logs atualizados:**
|
|
||||||
- Mostra execução de 6 comandos (em vez de 4)
|
|
||||||
- Indica claramente cada etapa de saída
|
|
||||||
|
|
||||||
### 📊 **Logs Esperados:**
|
|
||||||
|
|
||||||
```
|
|
||||||
📝 Executando comando 1/6: config
|
|
||||||
📝 Executando comando 2/6: interface gpon 1/1/1
|
|
||||||
📝 Executando comando 3/6: onu-reset onu 10
|
|
||||||
⏳ Aguardando prompt de confirmação...
|
|
||||||
📝 Executando comando 4/6: yes
|
|
||||||
📝 Executando comando 5/6: exit
|
|
||||||
📝 Executando comando 6/6: exit
|
|
||||||
🔌 Desconectado da OLT
|
|
||||||
```
|
|
||||||
|
|
||||||
### ✅ **Resultado:**
|
|
||||||
|
|
||||||
- ✅ Entra no modo configuração corretamente
|
|
||||||
- ✅ Executa reset da ONU
|
|
||||||
- ✅ Confirma com "yes"
|
|
||||||
- ✅ Sai do modo interface
|
|
||||||
- ✅ Sai do modo configuração
|
|
||||||
- ✅ Retorna ao prompt normal
|
|
||||||
- ✅ Desconecta limpo
|
|
||||||
|
|
||||||
**🚀 Agora o reset da ONU deve funcionar perfeitamente e sair de todos os modos corretamente!**
|
|
||||||
|
|
||||||
**Obrigado pela observação precisa sobre os dois exits! 👍**
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# Correções Finais - ADD ONU SSH Context
|
|
||||||
|
|
||||||
## ✅ **PROBLEMAS CORRIGIDOS**
|
|
||||||
|
|
||||||
### 1. **Service-Port Context Detection**
|
|
||||||
**Problema:** Após `service-port new`, bot vai para `(config-service-port-X)#` mas condição esperava `(config)#`
|
|
||||||
|
|
||||||
**Correção Step 9:**
|
|
||||||
```javascript
|
|
||||||
} else if (step === 9 && dataStr.includes('(config-service-port')) {
|
|
||||||
// Após service-port new - enviar configuração service-port
|
|
||||||
shouldSendCommand = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. **Sequência de Contextos Corrigida**
|
|
||||||
```
|
|
||||||
Step 8: service-port new → (config-service-port-X)#
|
|
||||||
Step 9: gpon 1/1/3 onu 0... → (config-service-port-X)#
|
|
||||||
Step 10: commit → (config)#
|
|
||||||
Step 11: top → (config)#
|
|
||||||
Step 12: exit → #
|
|
||||||
Step 13: exit → desconexão
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. **Condições Atualizadas**
|
|
||||||
- ✅ Step 9: `(config-service-port` detection
|
|
||||||
- ✅ Step 10: `(config-service-port` para commit
|
|
||||||
- ✅ Step 11: `(config)#` após commit
|
|
||||||
- ✅ Step 12: `(config)#` para exit
|
|
||||||
- ✅ Step 13: `#` sem config para exit final
|
|
||||||
|
|
||||||
## 🚀 **TESTE AGORA**
|
|
||||||
|
|
||||||
**Reinicie o bot e teste:**
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**No Telegram:**
|
|
||||||
```
|
|
||||||
adicionar onu DACM915E0F76
|
|
||||||
```
|
|
||||||
|
|
||||||
**Sequência esperada completa:**
|
|
||||||
```
|
|
||||||
📝 Enviando comando 1: config
|
|
||||||
📝 Enviando comando 2: interface gpon 1/1/3
|
|
||||||
📝 Enviando comando 3: onu 0
|
|
||||||
📝 Enviando comando 4: line-profile DM986-100
|
|
||||||
📝 Enviando comando 5: serial-number DACM915E0F76
|
|
||||||
📝 Enviando comando 6: ethernet 1
|
|
||||||
📝 Enviando comando 7: native vlan vlan-id 603
|
|
||||||
📝 Enviando comando 8: top
|
|
||||||
📝 Enviando comando 9: service-port new
|
|
||||||
📝 Enviando comando 10: gpon 1/1/3 onu 0 gem 1...
|
|
||||||
📝 Enviando comando 11: commit
|
|
||||||
📝 Enviando comando 12: top
|
|
||||||
📝 Enviando comando 13: exit
|
|
||||||
📝 Enviando comando 14: exit
|
|
||||||
✅ ONU Adicionada com Sucesso!
|
|
||||||
```
|
|
||||||
|
|
||||||
**Agora deve funcionar 100%!** 🎯
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
# 🔧 Correção de Timeout na Atualização de Firmware
|
|
||||||
|
|
||||||
## 🐛 **Problema Identificado:**
|
|
||||||
|
|
||||||
O método de atualização de firmware estava usando shell interativo com timeout de 60 segundos, mas o comando `request firmware onu install` demora muito mais tempo para processar completamente, causando timeout.
|
|
||||||
|
|
||||||
**Erro observado:**
|
|
||||||
```
|
|
||||||
Error: Timeout na operação de update firmware
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✅ **Solução Implementada:**
|
|
||||||
|
|
||||||
### **Mudança de Estratégia:**
|
|
||||||
- ❌ **ANTES:** Shell interativo com espera de processamento completo
|
|
||||||
- ✅ **DEPOIS:** `executeCommand` simples + sucesso imediato após envio
|
|
||||||
|
|
||||||
### **Nova Lógica:**
|
|
||||||
1. **Conecta** na OLT
|
|
||||||
2. **Envia** o comando `request firmware onu install...`
|
|
||||||
3. **Considera sucesso** imediatamente após envio
|
|
||||||
4. **Desconecta** da OLT
|
|
||||||
5. **Informa** que o comando foi enviado (não que completou)
|
|
||||||
|
|
||||||
## 🔄 **Código Corrigido:**
|
|
||||||
|
|
||||||
### **Método `updateOnuFirmware` Simplificado:**
|
|
||||||
```javascript
|
|
||||||
async updateOnuFirmware(equipmentId, slot, onuId, firmwareFile) {
|
|
||||||
// 1. Conectar
|
|
||||||
const connection = await this.connect(equipmentId);
|
|
||||||
|
|
||||||
// 2. Enviar comando
|
|
||||||
const firmwareCommand = `request firmware onu install ${firmwareFile} interface gpon ${slot} onu ${onuId}`;
|
|
||||||
const result = await this.executeCommand(connection.connectionId, firmwareCommand);
|
|
||||||
|
|
||||||
// 3. Desconectar imediatamente
|
|
||||||
this.disconnect(connection.connectionId);
|
|
||||||
|
|
||||||
// 4. Considerar sucesso (comando enviado)
|
|
||||||
return {
|
|
||||||
success: true,
|
|
||||||
message: `Comando de atualização de firmware enviado com sucesso`
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### **Mensagens Atualizadas:**
|
|
||||||
|
|
||||||
#### **Mensagem de Sucesso:**
|
|
||||||
```
|
|
||||||
✅ Comando de Atualização Enviado!
|
|
||||||
|
|
||||||
📦 Firmware: DM986-100-v56.tar
|
|
||||||
📍 Slot: 1/1/1
|
|
||||||
🔌 ONU ID: 5
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
✅ Status: Comando enviado com sucesso
|
|
||||||
⏳ Processamento: A atualização está sendo processada pela OLT
|
|
||||||
🕒 Tempo estimado: 5-15 minutos
|
|
||||||
📡 Importante: Monitore o status da ONU
|
|
||||||
|
|
||||||
💡 A ONU ficará offline durante a atualização
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **Mensagem de Erro:**
|
|
||||||
```
|
|
||||||
❌ Erro ao Enviar Comando
|
|
||||||
|
|
||||||
📦 Firmware: DM986-100-v56.tar
|
|
||||||
📍 Slot: 1/1/1
|
|
||||||
🔌 ONU ID: 5
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
❌ Erro: [detalhes do erro]
|
|
||||||
🔄 Tente novamente ou verifique a conexão
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📋 **Vantagens da Nova Abordagem:**
|
|
||||||
|
|
||||||
### **✅ Benefícios:**
|
|
||||||
- **Sem timeout:** Não aguarda processamento completo
|
|
||||||
- **Resposta rápida:** Feedback imediato ao usuário
|
|
||||||
- **Simplicidade:** Menos complexidade no código
|
|
||||||
- **Confiabilidade:** Não depende de detecção de prompts
|
|
||||||
|
|
||||||
### **📝 Considerações:**
|
|
||||||
- **Responsabilidade do usuário:** Monitorar status da ONU
|
|
||||||
- **Transparência:** Usuário sabe que é apenas envio do comando
|
|
||||||
- **Realismo:** Reflete a realidade do processo (demora mesmo)
|
|
||||||
|
|
||||||
## 🎯 **Resultado Esperado:**
|
|
||||||
|
|
||||||
### **Processo Completo:**
|
|
||||||
1. **Usuário:** Clica "⬆️ Atualizar ONU"
|
|
||||||
2. **Bot:** Detecta modelo e mostra opções
|
|
||||||
3. **Usuário:** Escolhe firmware e confirma
|
|
||||||
4. **Bot:** Envia comando rapidamente (~5 segundos)
|
|
||||||
5. **Bot:** Informa sucesso do envio
|
|
||||||
6. **OLT:** Processa atualização (5-15 minutos)
|
|
||||||
7. **Usuário:** Monitora status da ONU
|
|
||||||
|
|
||||||
### **Fluxo de Logs:**
|
|
||||||
```
|
|
||||||
🔄 Iniciando update firmware ONU - OLT: olt_dito, Slot: 1/1/1, ONU: 5, FW: DM986-100-v56.tar
|
|
||||||
📡 Conectando na OLT: olt_dito
|
|
||||||
✅ Conectado! ConnectionId: olt_dito_xxxxx
|
|
||||||
📝 Enviando comando: request firmware onu install DM986-100-v56.tar interface gpon 1/1/1 onu 5
|
|
||||||
🔌 Desconectado da OLT
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✅ **Status:**
|
|
||||||
|
|
||||||
- [x] Método `updateOnuFirmware` simplificado
|
|
||||||
- [x] Timeout removido
|
|
||||||
- [x] Mensagens atualizadas
|
|
||||||
- [x] Código testado e validado
|
|
||||||
- [x] Documentação atualizada
|
|
||||||
|
|
||||||
**🚀 Correção implementada e pronta para uso!**
|
|
||||||
|
|
||||||
## 🧪 **Como Testar:**
|
|
||||||
|
|
||||||
1. **Reinicie o bot** para carregar as alterações
|
|
||||||
2. Digite: `ver sinal DACM91569513`
|
|
||||||
3. Clique: `⬆️ Atualizar ONU`
|
|
||||||
4. Escolha firmware e confirme
|
|
||||||
5. **Resultado esperado:** Sucesso em ~5 segundos
|
|
||||||
6. **Aguarde:** 5-15 minutos para a OLT processar
|
|
||||||
|
|
||||||
**💡 Agora o bot responde rapidamente após enviar o comando, sem aguardar o processamento completo!**
|
|
||||||
@@ -1,186 +0,0 @@
|
|||||||
# ⬆️ Funcionalidade de Atualização de Firmware ONU - Implementação Completa
|
|
||||||
|
|
||||||
## 🎯 **Visão Geral**
|
|
||||||
|
|
||||||
Nova funcionalidade que permite atualizar o firmware de ONUs diretamente pelo bot do Telegram, com detecção automática do modelo e seleção de firmware específica.
|
|
||||||
|
|
||||||
## 📋 **Recursos Implementados**
|
|
||||||
|
|
||||||
### 1. **Detecção Automática de Modelo**
|
|
||||||
- ✅ Identifica automaticamente o Equipment ID da ONU
|
|
||||||
- ✅ Suporte para modelos DM986-100 e DM986-414
|
|
||||||
- ✅ Parser inteligente que busca Equipment ID no output
|
|
||||||
|
|
||||||
### 2. **Opções de Firmware por Modelo**
|
|
||||||
|
|
||||||
#### **DM986-100:**
|
|
||||||
- 📦 **FW INTERMEDIÁRIA:** `DM986-100-inter.tar`
|
|
||||||
- 📦 **FW ATUAL (v56):** `DM986-100-v56.tar`
|
|
||||||
- 📦 **FW ROUTER (R300):** `DM986-100-R300.tar`
|
|
||||||
|
|
||||||
#### **DM986-414:**
|
|
||||||
- 📦 **FW INTERMEDIÁRIA:** `DM986-414-inter.tar`
|
|
||||||
- 📦 **FW ATUAL (v70):** `DM986-414-v70.tar`
|
|
||||||
|
|
||||||
### 3. **Interface de Usuário**
|
|
||||||
- ✅ Botão "⬆️ Atualizar ONU" nos resultados de verificação de sinal
|
|
||||||
- ✅ Menu de seleção de firmware específico para cada modelo
|
|
||||||
- ✅ Sistema de confirmação dupla para segurança
|
|
||||||
- ✅ Feedback detalhado durante todo o processo
|
|
||||||
|
|
||||||
## 🔧 **Implementação Técnica**
|
|
||||||
|
|
||||||
### **Novos Métodos no SSH Manager:**
|
|
||||||
|
|
||||||
1. **`getOnuDetails(equipmentId, slot, onuId)`**
|
|
||||||
- Executa `show interface gpon SLOT onu ONU_ID`
|
|
||||||
- Extrai Equipment ID do output
|
|
||||||
- Retorna informações detalhadas da ONU
|
|
||||||
|
|
||||||
2. **`parseEquipmentId(output)`**
|
|
||||||
- Parser inteligente para identificar modelo
|
|
||||||
- Busca por padrões "Equipment ID:" e modelos conhecidos
|
|
||||||
- Suporte a diferentes formatos de output
|
|
||||||
|
|
||||||
3. **`updateOnuFirmware(equipmentId, slot, onuId, firmwareFile)`**
|
|
||||||
- Executa comando `request firmware onu install ARQUIVO interface gpon SLOT onu ONU_ID`
|
|
||||||
- Usa shell interativo para estabilidade
|
|
||||||
- Timeout de 60 segundos
|
|
||||||
|
|
||||||
### **Novos Handlers no Bot:**
|
|
||||||
|
|
||||||
1. **`handleUpdateOnuCallback()`**
|
|
||||||
- Processa clique no botão "⬆️ Atualizar ONU"
|
|
||||||
- Detecta modelo da ONU automaticamente
|
|
||||||
- Gera menu de opções de firmware
|
|
||||||
|
|
||||||
2. **`handleFirmwareCallback()`**
|
|
||||||
- Processa seleção de firmware específico
|
|
||||||
- Mostra tela de confirmação com detalhes
|
|
||||||
|
|
||||||
3. **`handleConfirmFirmware()`**
|
|
||||||
- Executa atualização após confirmação
|
|
||||||
- Feedback em tempo real do processo
|
|
||||||
|
|
||||||
## 🚀 **Fluxo de Uso**
|
|
||||||
|
|
||||||
### **1. Iniciar Verificação:**
|
|
||||||
```
|
|
||||||
Usuario: ver sinal DACM91569513
|
|
||||||
```
|
|
||||||
|
|
||||||
### **2. Resultados com Novo Botão:**
|
|
||||||
```
|
|
||||||
📡 Sinal da ONU DACM91569513
|
|
||||||
🏢 OLT: OLT DITO (192.168.190.7)
|
|
||||||
📍 Localização: Slot 1/1/1, ONU 5
|
|
||||||
|
|
||||||
Botões:
|
|
||||||
[🔄 Atualizar sinal] [📋 Ver configuração]
|
|
||||||
[🔌 Reiniciar ONU] [⬆️ Atualizar ONU] ← NOVO
|
|
||||||
[🔍 Pesquisar em outra OLT]
|
|
||||||
```
|
|
||||||
|
|
||||||
### **3. Detecção Automática:**
|
|
||||||
```
|
|
||||||
🔍 Identificando modelo da ONU 5 no slot 1/1/1...
|
|
||||||
|
|
||||||
⬆️ Atualização de Firmware
|
|
||||||
📍 Slot: 1/1/1
|
|
||||||
🔌 ONU ID: 5
|
|
||||||
🏢 OLT: DITO
|
|
||||||
🔍 Modelo: DM986-100
|
|
||||||
|
|
||||||
📦 Selecione a versão do firmware:
|
|
||||||
[📦 FW INTERMEDIÁRIA]
|
|
||||||
[📦 FW ATUAL (v56)]
|
|
||||||
[📦 FW ROUTER (R300)]
|
|
||||||
[❌ Cancelar]
|
|
||||||
```
|
|
||||||
|
|
||||||
### **4. Confirmação:**
|
|
||||||
```
|
|
||||||
⚠️ Confirmação de Atualização de Firmware
|
|
||||||
|
|
||||||
📦 Firmware: DM986-100-v56.tar
|
|
||||||
📍 Slot: 1/1/1
|
|
||||||
🔌 ONU ID: 5
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
⚠️ ATENÇÃO:
|
|
||||||
• A atualização pode demorar alguns minutos
|
|
||||||
• A ONU ficará offline durante o processo
|
|
||||||
• Não interrompa a operação
|
|
||||||
|
|
||||||
[✅ SIM, Atualizar] [❌ Cancelar]
|
|
||||||
```
|
|
||||||
|
|
||||||
### **5. Execução:**
|
|
||||||
```
|
|
||||||
⬆️ Atualizando Firmware...
|
|
||||||
📦 Firmware: DM986-100-v56.tar
|
|
||||||
📍 Slot: 1/1/1
|
|
||||||
🔌 ONU ID: 5
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
⏳ Enviando comando de atualização...
|
|
||||||
|
|
||||||
↓ (Após processamento)
|
|
||||||
|
|
||||||
✅ Firmware Enviado com Sucesso!
|
|
||||||
⏳ Status: Comando enviado para a OLT
|
|
||||||
🔄 A atualização pode levar alguns minutos
|
|
||||||
📡 Monitore o status da ONU
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 **Comandos Executados**
|
|
||||||
|
|
||||||
### **1. Detecção de Modelo:**
|
|
||||||
```bash
|
|
||||||
show interface gpon 1/1/1 onu 5
|
|
||||||
```
|
|
||||||
|
|
||||||
### **2. Atualização de Firmware:**
|
|
||||||
```bash
|
|
||||||
request firmware onu install DM986-100-v56.tar interface gpon 1/1/1 onu 5
|
|
||||||
```
|
|
||||||
|
|
||||||
## ⚠️ **Considerações Importantes**
|
|
||||||
|
|
||||||
### **Segurança:**
|
|
||||||
- ✅ Confirmação dupla obrigatória
|
|
||||||
- ✅ Validação de modelo antes de mostrar opções
|
|
||||||
- ✅ Avisos sobre impacto da operação
|
|
||||||
|
|
||||||
### **Compatibilidade:**
|
|
||||||
- ✅ Apenas modelos DM986-100 e DM986-414 suportados
|
|
||||||
- ✅ Mensagem clara para modelos não suportados
|
|
||||||
- ✅ Parsing robusto de Equipment ID
|
|
||||||
|
|
||||||
### **Processo:**
|
|
||||||
- ⏳ Operação pode demorar alguns minutos
|
|
||||||
- 📡 ONU fica offline durante atualização
|
|
||||||
- 🔄 Usuário deve monitorar status após envio
|
|
||||||
|
|
||||||
## 🎯 **Status da Implementação**
|
|
||||||
|
|
||||||
- [x] Detecção automática de modelo
|
|
||||||
- [x] Menu de firmware específico por modelo
|
|
||||||
- [x] Sistema de confirmação
|
|
||||||
- [x] Comandos de atualização
|
|
||||||
- [x] Interface de usuário completa
|
|
||||||
- [x] Tratamento de erros
|
|
||||||
- [x] Documentação
|
|
||||||
- [x] Arquivo de teste
|
|
||||||
|
|
||||||
**🚀 Funcionalidade de Atualização de Firmware ONU implementada e pronta para uso!**
|
|
||||||
|
|
||||||
## 🧪 **Como Testar**
|
|
||||||
|
|
||||||
1. **Reinicie o bot** para carregar as alterações
|
|
||||||
2. Digite: `ver sinal DACM91569513`
|
|
||||||
3. Clique: `⬆️ Atualizar ONU`
|
|
||||||
4. Veja a detecção automática do modelo
|
|
||||||
5. Escolha uma opção de firmware
|
|
||||||
6. Confirme a operação
|
|
||||||
7. Acompanhe o processo de atualização
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
# 🤖 Bot de Telegram Multifuncional - Funcionalidades
|
|
||||||
|
|
||||||
## ✅ Funcionalidades Implementadas
|
|
||||||
|
|
||||||
### 🔐 **Concentrador Juniper (131.0.192.254)**
|
|
||||||
- **Desconectar usuários**: `clear network-access aaa subscriber username USUARIO`
|
|
||||||
- **Listar usuários conectados**: `show network-access aaa subscribers`
|
|
||||||
- **Comandos aceitos**:
|
|
||||||
- "desconectar cliente joao123"
|
|
||||||
- "kick usuário maria456"
|
|
||||||
- "expulsar cliente teste"
|
|
||||||
- "remover cliente admin"
|
|
||||||
- "listar usuários conectados"
|
|
||||||
|
|
||||||
### 📡 **OLTs para Verificação de Sinal**
|
|
||||||
- **OLT DITO**: 192.168.190.7
|
|
||||||
- **OLT COLMEIA**: 192.168.190.8
|
|
||||||
- **OLT CANAA**: 192.168.190.9
|
|
||||||
- **OLT CANAA 2**: 192.168.190.10
|
|
||||||
|
|
||||||
**Processo de verificação de sinal:**
|
|
||||||
1. **Busca da ONU**: `show running-config interface gpon | context-match "SERIAL"`
|
|
||||||
2. **Extração de dados**: Slot e ONU ID
|
|
||||||
3. **Verificação do sinal**: `show interface gpon SLOT onu ONU_ID | nomore`
|
|
||||||
|
|
||||||
**Comandos aceitos:**
|
|
||||||
- "ver sinal DACM91569513"
|
|
||||||
- "verificar sinal ABCD12345678"
|
|
||||||
- "sinal TESTE123456"
|
|
||||||
|
|
||||||
### 🧠 **Processamento de Linguagem Natural**
|
|
||||||
|
|
||||||
#### Comandos Suportados:
|
|
||||||
- ✅ `/start` - Inicializar bot
|
|
||||||
- ✅ `/help` - Ajuda e comandos
|
|
||||||
- ✅ `/equipamentos` - Listar equipamentos
|
|
||||||
- ✅ **Desconectar usuários** (múltiplos formatos)
|
|
||||||
- ✅ **Verificar sinal de ONU** (com seleção de OLT)
|
|
||||||
- ✅ **Listar usuários conectados**
|
|
||||||
- ✅ **Conexões SSH**
|
|
||||||
- ✅ **Status de equipamentos**
|
|
||||||
|
|
||||||
#### Detecção Inteligente:
|
|
||||||
- Reconhece sinônimos (desconectar = kick = expulsar = remover)
|
|
||||||
- Detecta nomes de usuários vs equipamentos
|
|
||||||
- Sugestões automáticas para comandos incorretos
|
|
||||||
- Confiança baseada em padrões regex e palavras-chave
|
|
||||||
|
|
||||||
### 🎛️ **Interface do Telegram**
|
|
||||||
|
|
||||||
#### Menus Interativos:
|
|
||||||
- **Seleção de OLT** para verificação de sinal
|
|
||||||
- **Opções pós-verificação** (atualizar, ver config, pesquisar em outra OLT)
|
|
||||||
- **Gerenciamento de usuários** (atualizar lista, desconectar)
|
|
||||||
- **Confirmações** para ações críticas
|
|
||||||
|
|
||||||
#### Botões Inline:
|
|
||||||
- 📊 Status
|
|
||||||
- 🔄 Reiniciar/Atualizar
|
|
||||||
- 📋 Comandos personalizados
|
|
||||||
- ❌ Desconectar/Cancelar
|
|
||||||
- 🔍 Pesquisar em outras OLTs
|
|
||||||
|
|
||||||
### 🔧 **Arquitetura Modular**
|
|
||||||
|
|
||||||
```
|
|
||||||
src/
|
|
||||||
├── index.js # Entrada principal
|
|
||||||
├── bot/
|
|
||||||
│ └── handler.js # Lógica principal do bot
|
|
||||||
├── ssh/
|
|
||||||
│ └── manager.js # Gerenciamento SSH e comandos
|
|
||||||
├── nlp/
|
|
||||||
│ └── processor.js # Processamento de linguagem natural
|
|
||||||
└── config/
|
|
||||||
└── config.js # Configurações
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🛡️ **Recursos de Segurança**
|
|
||||||
- **Autenticação**: Lista de usuários autorizados (ALLOWED_USERS)
|
|
||||||
- **Validação**: Verificação de parâmetros e comandos
|
|
||||||
- **Timeouts**: Timeout configurável para conexões SSH
|
|
||||||
- **Error Handling**: Tratamento robusto de erros
|
|
||||||
|
|
||||||
### 📊 **Monitoramento e Debug**
|
|
||||||
- **Logs detalhados** com modo debug
|
|
||||||
- **Tracking de intenções** NLP
|
|
||||||
- **Rastreamento de conexões** SSH ativas
|
|
||||||
- **Métricas de confiança** para comandos
|
|
||||||
|
|
||||||
## 🎯 **Exemplos de Uso**
|
|
||||||
|
|
||||||
### Desconectar Usuários:
|
|
||||||
```
|
|
||||||
"Desconectar usuario analuciagomes"
|
|
||||||
"kick cliente joao123"
|
|
||||||
"expulsar usuário maria456"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Verificar Sinal:
|
|
||||||
```
|
|
||||||
"ver sinal DACM91569513"
|
|
||||||
"verificar sinal ABCD12345678"
|
|
||||||
"sinal TESTE123456"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Outros Comandos:
|
|
||||||
```
|
|
||||||
"listar usuários conectados"
|
|
||||||
"ssh concentrador"
|
|
||||||
"status juniper"
|
|
||||||
"ping 192.168.190.7"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 **Próximos Passos Sugeridos**
|
|
||||||
|
|
||||||
1. **Expansão de OLTs**: Adicionar mais equipamentos
|
|
||||||
2. **Comandos Avançados**: Reset de ONU, alteração de VLAN
|
|
||||||
3. **Relatórios**: Logs de ações, histórico de comandos
|
|
||||||
4. **Notificações**: Alertas automáticos de problemas
|
|
||||||
5. **Interface Web**: Dashboard complementar
|
|
||||||
6. **Backup/Restore**: Configurações de equipamentos
|
|
||||||
7. **Agendamento**: Tarefas programadas
|
|
||||||
8. **Multi-tenant**: Suporte a múltiplos clientes
|
|
||||||
|
|
||||||
## ⚙️ **Configuração Rápida**
|
|
||||||
|
|
||||||
1. Configure o `.env` com o token do bot
|
|
||||||
2. Execute `npm install && npm start`
|
|
||||||
3. No Telegram: `/start` para começar
|
|
||||||
4. Use `/help` para ver todos os comandos
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
# 🔧 Correção: Erro no Comando /help
|
|
||||||
|
|
||||||
## ❌ **PROBLEMA IDENTIFICADO**
|
|
||||||
|
|
||||||
**Erro:** `TelegramError: ETELEGRAM: 400 Bad Request: can't parse entities: Can't find end of the entity starting at byte offset 734`
|
|
||||||
|
|
||||||
**Causa:** Problema no parsing do Markdown na mensagem de ajuda devido a caracteres especiais mal formatados.
|
|
||||||
|
|
||||||
## ✅ **SOLUÇÃO APLICADA**
|
|
||||||
|
|
||||||
### 1. **Remoção do Markdown Problemático**
|
|
||||||
- **Antes:** Usava `parse_mode: 'Markdown'` com formatação complexa
|
|
||||||
- **Agora:** Mensagem simples sem Markdown para evitar erros de parsing
|
|
||||||
|
|
||||||
### 2. **Reformatação da Mensagem**
|
|
||||||
- **Antes:** Asteriscos (*) para negrito que causavam conflitos
|
|
||||||
- **Agora:** Emojis e texto simples para organização visual
|
|
||||||
|
|
||||||
### 3. **Estrutura Melhorada**
|
|
||||||
```
|
|
||||||
📋 COMANDOS DISPONÍVEIS:
|
|
||||||
|
|
||||||
🔧 COMANDOS BÁSICOS:
|
|
||||||
/start - Inicia o bot
|
|
||||||
/help - Mostra esta ajuda
|
|
||||||
/equipamentos - Lista equipamentos
|
|
||||||
|
|
||||||
🔐 SSH E CONEXÕES:
|
|
||||||
...
|
|
||||||
|
|
||||||
👥 JUNIPER - GERENCIAR USUÁRIOS:
|
|
||||||
...
|
|
||||||
|
|
||||||
📡 OLT - VERIFICAR SINAL DE ONU:
|
|
||||||
...
|
|
||||||
|
|
||||||
➕ OLT - ADICIONAR ONU:
|
|
||||||
...
|
|
||||||
|
|
||||||
🗑️ OLT - REMOVER ONU:
|
|
||||||
...
|
|
||||||
|
|
||||||
🔄 OLT - REINICIAR ONU:
|
|
||||||
...
|
|
||||||
|
|
||||||
⬆️ OLT - ATUALIZAR FIRMWARE ONU:
|
|
||||||
...
|
|
||||||
|
|
||||||
📊 STATUS E MONITORAMENTO:
|
|
||||||
...
|
|
||||||
|
|
||||||
🗣️ LINGUAGEM NATURAL:
|
|
||||||
...
|
|
||||||
|
|
||||||
✅ EXEMPLOS PRÁTICOS:
|
|
||||||
...
|
|
||||||
|
|
||||||
🏢 OLTs DISPONÍVEIS:
|
|
||||||
...
|
|
||||||
|
|
||||||
🛡️ COMANDOS ADMINISTRATIVOS:
|
|
||||||
...
|
|
||||||
|
|
||||||
🔒 SEGURANÇA:
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔍 **ANÁLISE DO ERRO**
|
|
||||||
|
|
||||||
**Byte offset 734:** Indica que o erro ocorreu em um ponto específico da mensagem onde havia formatação Markdown mal formada.
|
|
||||||
|
|
||||||
**Possíveis causas:**
|
|
||||||
1. Asteriscos (*) não fechados corretamente
|
|
||||||
2. Underscores (_) em posições problemáticas
|
|
||||||
3. Caracteres especiais conflitando com o parsing
|
|
||||||
4. Formatação aninhada incorreta
|
|
||||||
|
|
||||||
## 🛠️ **ALTERAÇÕES TÉCNICAS**
|
|
||||||
|
|
||||||
### **Antes:**
|
|
||||||
```javascript
|
|
||||||
await this.bot.sendMessage(chatId, helpMessage, { parse_mode: 'Markdown' });
|
|
||||||
```
|
|
||||||
|
|
||||||
### **Agora:**
|
|
||||||
```javascript
|
|
||||||
await this.bot.sendMessage(chatId, helpMessage);
|
|
||||||
```
|
|
||||||
|
|
||||||
**Resultado:** Mensagem enviada como texto simples sem parsing de Markdown.
|
|
||||||
|
|
||||||
## ✅ **BENEFÍCIOS DA CORREÇÃO**
|
|
||||||
|
|
||||||
1. **🚫 Sem Erros:** Eliminação completa do erro de parsing
|
|
||||||
2. **📱 Compatibilidade:** Funciona em todos os clientes Telegram
|
|
||||||
3. **👀 Legibilidade:** Emojis tornam a mensagem mais visual
|
|
||||||
4. **⚡ Performance:** Sem overhead de parsing Markdown
|
|
||||||
5. **🔧 Manutenibilidade:** Mais fácil de editar sem se preocupar com formatação
|
|
||||||
|
|
||||||
## 🎯 **RESULTADO**
|
|
||||||
|
|
||||||
**Comando `/help` agora funciona perfeitamente!**
|
|
||||||
|
|
||||||
### **Estrutura Visual:**
|
|
||||||
- ✅ Seções organizadas com emojis
|
|
||||||
- ✅ Comandos claramente separados
|
|
||||||
- ✅ Exemplos práticos destacados
|
|
||||||
- ✅ Informações de segurança visíveis
|
|
||||||
- ✅ Lista completa de OLTs disponíveis
|
|
||||||
|
|
||||||
### **Funcionalidades Exibidas:**
|
|
||||||
- 🔧 Comandos básicos
|
|
||||||
- 🔐 SSH e conexões
|
|
||||||
- 👥 Gerenciamento de usuários Juniper
|
|
||||||
- 📡 Verificação de sinal ONU
|
|
||||||
- ➕ Adição de ONU (novo!)
|
|
||||||
- 🗑️ Remoção de ONU
|
|
||||||
- 🔄 Reinicialização de ONU
|
|
||||||
- ⬆️ Atualização de firmware
|
|
||||||
- 📊 Status e monitoramento
|
|
||||||
- 🛡️ Comandos administrativos
|
|
||||||
|
|
||||||
## 🚀 **PARA TESTAR**
|
|
||||||
|
|
||||||
Reinicie o bot e teste:
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**No Telegram:**
|
|
||||||
```
|
|
||||||
/help
|
|
||||||
```
|
|
||||||
|
|
||||||
**Resultado esperado:** Mensagem completa exibida sem erros, com todas as funcionalidades organizadas por categoria.
|
|
||||||
|
|
||||||
## 📝 **PREVENÇÃO FUTURA**
|
|
||||||
|
|
||||||
Para evitar problemas similares:
|
|
||||||
1. **Teste sempre** comandos que usam Markdown
|
|
||||||
2. **Use texto simples** quando possível
|
|
||||||
3. **Valide caracteres especiais** antes de enviar
|
|
||||||
4. **Implemente fallback** para mensagens críticas
|
|
||||||
|
|
||||||
**Correção aplicada com sucesso!** ✅
|
|
||||||
@@ -1,140 +0,0 @@
|
|||||||
# Atualização: Novas OLTs Adicionadas
|
|
||||||
|
|
||||||
## Resumo
|
|
||||||
Foram adicionadas duas novas OLTs ao sistema para suporte completo às funcionalidades de verificação de sinal e remoção de ONU.
|
|
||||||
|
|
||||||
## Novas OLTs Configuradas
|
|
||||||
|
|
||||||
### 1. OLT PEDRO AFONSO 1
|
|
||||||
- **ID:** `olt_pedro_afonso`
|
|
||||||
- **Nome:** "OLT PEDRO AFONSO 1"
|
|
||||||
- **Host:** 192.168.100.2
|
|
||||||
- **Credenciais:** admin/admin
|
|
||||||
- **Porta:** 22
|
|
||||||
- **Tipo:** Datacom
|
|
||||||
|
|
||||||
### 2. OLT CANAVIEIRAS
|
|
||||||
- **ID:** `olt_canavieiras`
|
|
||||||
- **Nome:** "OLT CANAVIEIRAS"
|
|
||||||
- **Host:** 192.168.100.4
|
|
||||||
- **Credenciais:** admin/admin
|
|
||||||
- **Porta:** 22
|
|
||||||
- **Tipo:** Datacom
|
|
||||||
|
|
||||||
## Funcionalidades Suportadas
|
|
||||||
|
|
||||||
As novas OLTs têm suporte completo para todas as funcionalidades existentes:
|
|
||||||
|
|
||||||
### ✅ Verificação de Sinal
|
|
||||||
- Comando: `ver sinal SERIAL_DA_ONU`
|
|
||||||
- Busca automática da ONU pelo serial
|
|
||||||
- Exibição de informações detalhadas do sinal
|
|
||||||
- Botões para ações adicionais (reiniciar, atualizar, etc.)
|
|
||||||
|
|
||||||
### ✅ Remoção de ONU
|
|
||||||
- Comando: `remover onu SERIAL_DA_ONU`
|
|
||||||
- Busca automática da ONU e service-port
|
|
||||||
- Confirmação obrigatória antes da remoção
|
|
||||||
- Remoção completa (interface + service-port)
|
|
||||||
|
|
||||||
### ✅ Reiniciar ONU
|
|
||||||
- Disponível após verificar sinal
|
|
||||||
- Processo seguro com confirmação
|
|
||||||
- Execução automática dos comandos
|
|
||||||
|
|
||||||
### ✅ Atualizar Firmware ONU
|
|
||||||
- Disponível após verificar sinal
|
|
||||||
- Detecção automática do modelo
|
|
||||||
- Opções de firmware específicas
|
|
||||||
- Processo otimizado sem timeout
|
|
||||||
|
|
||||||
## Lista Completa de OLTs Disponíveis
|
|
||||||
|
|
||||||
Agora o sistema suporta **6 OLTs** no total:
|
|
||||||
|
|
||||||
1. **OLT DITO** (192.168.190.7)
|
|
||||||
2. **OLT COLMEIA** (192.168.190.8)
|
|
||||||
3. **OLT CANAA** (192.168.190.9)
|
|
||||||
4. **OLT CANAA 2** (192.168.190.10)
|
|
||||||
5. **OLT PEDRO AFONSO 1** (192.168.100.2) 🆕
|
|
||||||
6. **OLT CANAVIEIRAS** (192.168.100.4) 🆕
|
|
||||||
|
|
||||||
## Arquivos Modificados
|
|
||||||
|
|
||||||
### 1. `src/ssh/manager.js`
|
|
||||||
- Adicionadas configurações das duas novas OLTs
|
|
||||||
- Mantido padrão existente de nomenclatura
|
|
||||||
- Credenciais admin/admin conforme especificado
|
|
||||||
|
|
||||||
### 2. `src/bot/handler.js`
|
|
||||||
- Atualizada mensagem de help com as novas OLTs
|
|
||||||
- Atualizados comentários de exemplo nos callbacks
|
|
||||||
- Sistema automaticamente suporta as novas OLTs
|
|
||||||
|
|
||||||
## Compatibilidade
|
|
||||||
|
|
||||||
### ✅ Callbacks Automáticos
|
|
||||||
O sistema de callbacks já estava preparado para IDs compostos:
|
|
||||||
- `olt_pedro_afonso` → parsing automático como `olt_` + `pedro_afonso`
|
|
||||||
- `olt_canavieiras` → parsing automático como `olt_` + `canavieiras`
|
|
||||||
|
|
||||||
### ✅ Funcionalidades Existentes
|
|
||||||
Todas as funcionalidades existentes funcionam automaticamente:
|
|
||||||
- Seleção de OLT via botões inline
|
|
||||||
- Verificação de sinal por serial
|
|
||||||
- Remoção de ONU com confirmação
|
|
||||||
- Reinicialização de ONU
|
|
||||||
- Atualização de firmware
|
|
||||||
|
|
||||||
## Como Testar
|
|
||||||
|
|
||||||
### Teste de Verificação de Sinal
|
|
||||||
1. Digite: `ver sinal SERIAL_DA_ONU`
|
|
||||||
2. Selecione **"OLT PEDRO AFONSO 1"** ou **"OLT CANAVIEIRAS"**
|
|
||||||
3. Verifique se a busca funciona corretamente
|
|
||||||
|
|
||||||
### Teste de Remoção de ONU
|
|
||||||
1. Digite: `remover onu SERIAL_DA_ONU`
|
|
||||||
2. Selecione uma das novas OLTs
|
|
||||||
3. Confirme se encontra a ONU e service-port
|
|
||||||
4. Teste a confirmação de remoção
|
|
||||||
|
|
||||||
### Verificação de Help
|
|
||||||
1. Digite: `/help`
|
|
||||||
2. Confirme que as novas OLTs aparecem na lista
|
|
||||||
|
|
||||||
## Considerações Técnicas
|
|
||||||
|
|
||||||
### Rede 192.168.100.x
|
|
||||||
As novas OLTs estão na rede 192.168.100.x (diferente das existentes 192.168.190.x):
|
|
||||||
- Verifique conectividade de rede
|
|
||||||
- Confirme que as credenciais admin/admin estão corretas
|
|
||||||
- Teste conectividade SSH antes do uso
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
- Mesma arquitetura das OLTs existentes
|
|
||||||
- Timeouts e tratamento de erro idênticos
|
|
||||||
- Logs detalhados para troubleshooting
|
|
||||||
|
|
||||||
## Próximos Passos
|
|
||||||
|
|
||||||
1. **Teste em Produção**: Validar conectividade com as novas OLTs
|
|
||||||
2. **Verificação de Credenciais**: Confirmar usuário/senha corretos
|
|
||||||
3. **Teste de Comandos**: Validar compatibilidade dos comandos Datacom
|
|
||||||
4. **Monitoramento**: Acompanhar logs para identificar possíveis ajustes
|
|
||||||
|
|
||||||
## Comando de Teste Rápido
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Reiniciar o bot
|
|
||||||
node src/index.js
|
|
||||||
|
|
||||||
# Testar help
|
|
||||||
/help
|
|
||||||
|
|
||||||
# Testar nova OLT
|
|
||||||
ver sinal TESTE123456
|
|
||||||
# Selecionar "OLT PEDRO AFONSO 1" ou "OLT CANAVIEIRAS"
|
|
||||||
```
|
|
||||||
|
|
||||||
As duas novas OLTs estão prontas para uso com funcionalidade completa! 🚀
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
# Funcionalidade: Remover ONU
|
|
||||||
|
|
||||||
## Descrição
|
|
||||||
Nova funcionalidade implementada para remover ONUs completamente das OLTs, incluindo a interface e o service-port.
|
|
||||||
|
|
||||||
## Como Usar
|
|
||||||
|
|
||||||
### Comando de Texto
|
|
||||||
```
|
|
||||||
remover onu SERIAL_DA_ONU
|
|
||||||
remover SERIAL_DA_ONU
|
|
||||||
deletar onu SERIAL_DA_ONU
|
|
||||||
apagar SERIAL_DA_ONU
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exemplos
|
|
||||||
- `remover onu FHTT12345678`
|
|
||||||
- `remover DACM91569513`
|
|
||||||
- `deletar onu ABCD12345678`
|
|
||||||
|
|
||||||
## Fluxo de Operação
|
|
||||||
|
|
||||||
### 1. Comando Inicial
|
|
||||||
O usuário digita o comando com o serial da ONU que deseja remover.
|
|
||||||
|
|
||||||
### 2. Seleção da OLT
|
|
||||||
O bot apresenta uma lista das OLTs disponíveis para o usuário escolher onde buscar a ONU.
|
|
||||||
|
|
||||||
### 3. Busca da ONU
|
|
||||||
O sistema busca a ONU pelo serial na OLT selecionada e localiza:
|
|
||||||
- Slot da ONU
|
|
||||||
- ONU ID
|
|
||||||
- Service-port associado
|
|
||||||
|
|
||||||
### 4. Confirmação
|
|
||||||
Antes de remover, o bot exibe todas as informações encontradas e pede confirmação:
|
|
||||||
- Serial da ONU
|
|
||||||
- Localização (slot e ONU ID)
|
|
||||||
- Service-port
|
|
||||||
- OLT selecionada
|
|
||||||
|
|
||||||
### 5. Remoção
|
|
||||||
Após confirmação, o sistema executa automaticamente:
|
|
||||||
```bash
|
|
||||||
config
|
|
||||||
interface gpon SLOT
|
|
||||||
no onu ONU_ID
|
|
||||||
top
|
|
||||||
no service-port SERVICE_PORT_ID
|
|
||||||
commit
|
|
||||||
top
|
|
||||||
exit
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Comandos SSH Executados
|
|
||||||
|
|
||||||
### Busca do Service-port
|
|
||||||
```bash
|
|
||||||
show running-config service-port | context-match "gpon SLOT onu ONU_ID"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remoção da ONU
|
|
||||||
```bash
|
|
||||||
config
|
|
||||||
interface gpon 1/1/3 # Exemplo de slot
|
|
||||||
no onu 0 # Exemplo de ONU ID
|
|
||||||
top
|
|
||||||
no service-port 102 # Exemplo de service-port
|
|
||||||
commit
|
|
||||||
top
|
|
||||||
exit
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Recursos de Segurança
|
|
||||||
|
|
||||||
### Confirmação Obrigatória
|
|
||||||
- Sistema exige confirmação explícita antes de remover
|
|
||||||
- Exibe todas as informações da ONU antes da remoção
|
|
||||||
- Aviso de que a ação não pode ser desfeita
|
|
||||||
|
|
||||||
### Validação de Dados
|
|
||||||
- Verifica se a ONU existe na OLT selecionada
|
|
||||||
- Localiza o service-port automaticamente
|
|
||||||
- Confirma todas as informações antes de proceder
|
|
||||||
|
|
||||||
### Processo Controlado
|
|
||||||
- Usa shell interativo para manter contexto
|
|
||||||
- Timeout de segurança (60 segundos)
|
|
||||||
- Logging detalhado de todas as operações
|
|
||||||
|
|
||||||
## Tratamento de Erros
|
|
||||||
|
|
||||||
### ONU Não Encontrada
|
|
||||||
- Mensagem clara informando que a ONU não foi encontrada
|
|
||||||
- Sugestão para verificar serial ou tentar outra OLT
|
|
||||||
|
|
||||||
### Erro de Conexão
|
|
||||||
- Informa problemas de conectividade com a OLT
|
|
||||||
- Sugere tentar novamente
|
|
||||||
|
|
||||||
### Service-port Não Encontrado
|
|
||||||
- Caso o service-port não seja localizado
|
|
||||||
- Exibe saída dos comandos para diagnóstico
|
|
||||||
|
|
||||||
### Timeout
|
|
||||||
- Processo é interrompido após 60 segundos
|
|
||||||
- Conexão é fechada adequadamente
|
|
||||||
|
|
||||||
## Resultados
|
|
||||||
|
|
||||||
### Sucesso
|
|
||||||
```
|
|
||||||
✅ ONU Removida com Sucesso!
|
|
||||||
|
|
||||||
📱 Serial: FHTT12345678
|
|
||||||
📍 Localização: Slot 1/1/3, ONU 0
|
|
||||||
🔌 Service-port: 102
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
✅ Status: ONU removida completamente
|
|
||||||
🗑️ Ações realizadas:
|
|
||||||
• Removida interface ONU
|
|
||||||
• Removido service-port
|
|
||||||
• Configuração commitada
|
|
||||||
|
|
||||||
💡 A ONU pode ser reconfigurada quando necessário
|
|
||||||
```
|
|
||||||
|
|
||||||
### Erro
|
|
||||||
```
|
|
||||||
❌ Erro na Remoção
|
|
||||||
|
|
||||||
📱 Serial: FHTT12345678
|
|
||||||
📍 Localização: Slot 1/1/3, ONU 0
|
|
||||||
🔌 Service-port: 102
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
❌ Erro: [Descrição do erro]
|
|
||||||
|
|
||||||
🔄 Verifique o status da ONU ou tente novamente
|
|
||||||
```
|
|
||||||
|
|
||||||
## Arquivos Modificados
|
|
||||||
|
|
||||||
### 1. `src/ssh/manager.js`
|
|
||||||
- `findServicePort()` - Localiza service-port de uma ONU
|
|
||||||
- `parseServicePort()` - Extrai service-port da saída SSH
|
|
||||||
- `removeOnu()` - Remove ONU completa (shell interativo)
|
|
||||||
- `removeOnuBySerial()` - Processo completo por serial
|
|
||||||
|
|
||||||
### 2. `src/nlp/processor.js`
|
|
||||||
- Adicionado 'remover_onu' aos actionSynonyms
|
|
||||||
- Novos padrões regex para comandos de remoção
|
|
||||||
- `looksLikeOnuSerial()` - Valida formato de serial
|
|
||||||
|
|
||||||
### 3. `src/bot/handler.js`
|
|
||||||
- `handleRemoverOnu()` - Interface para comando remover
|
|
||||||
- `handleRemoveOnuCallback()` - Callback para seleção de OLT
|
|
||||||
- `handleConfirmRemoveCallback()` - Callback para confirmação
|
|
||||||
- Atualização da mensagem de help
|
|
||||||
|
|
||||||
## Considerações Técnicas
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
- Processo otimizado em 3 etapas bem definidas
|
|
||||||
- Uso de shell interativo para operações complexas
|
|
||||||
- Timeout adequado para operações da OLT
|
|
||||||
|
|
||||||
### Confiabilidade
|
|
||||||
- Validação em todas as etapas
|
|
||||||
- Rollback não implementado (por design do equipamento)
|
|
||||||
- Logs detalhados para troubleshooting
|
|
||||||
|
|
||||||
### Usabilidade
|
|
||||||
- Interface intuitiva com botões
|
|
||||||
- Mensagens claras e informativas
|
|
||||||
- Confirmação visual antes da ação
|
|
||||||
|
|
||||||
## Limitações
|
|
||||||
|
|
||||||
1. **Irreversibilidade**: Ação não pode ser desfeita
|
|
||||||
2. **Timeout**: Operações longas podem exceder 60s
|
|
||||||
3. **Dependência SSH**: Requer conectividade estável
|
|
||||||
4. **Permissões**: Usuário SSH deve ter privilégios admin
|
|
||||||
|
|
||||||
## Próximas Melhorias
|
|
||||||
|
|
||||||
1. **Log de Auditoria**: Registrar todas as remoções
|
|
||||||
2. **Backup de Configuração**: Salvar config antes de remover
|
|
||||||
3. **Remoção em Lote**: Remover múltiplas ONUs
|
|
||||||
4. **Validação Avançada**: Verificar se ONU está offline
|
|
||||||
|
|
||||||
## Teste da Funcionalidade
|
|
||||||
|
|
||||||
### Cenário de Teste
|
|
||||||
1. Digite: `remover onu FHTT12345678`
|
|
||||||
2. Selecione uma OLT na lista
|
|
||||||
3. Verifique as informações exibidas
|
|
||||||
4. Confirme a remoção
|
|
||||||
5. Aguarde conclusão da operação
|
|
||||||
|
|
||||||
### Comandos de Teste
|
|
||||||
- `remover onu TESTE123456`
|
|
||||||
- `deletar TESTE123456`
|
|
||||||
- `apagar onu TESTE123456`
|
|
||||||
- `remove TESTE123456`
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
# 🔧 Correção do Reset ONU - Problema Resolvido
|
|
||||||
|
|
||||||
## 🐛 **Problema Identificado:**
|
|
||||||
|
|
||||||
O comando de reset da ONU não estava funcionando devido a dois problemas principais:
|
|
||||||
|
|
||||||
1. **Sintaxe incorreta:** `config terminal` → deveria ser apenas `config`
|
|
||||||
2. **Confirmação interativa:** O equipamento pergunta `Are you sure you want to reset this ONU? [no,yes]` e espera resposta
|
|
||||||
|
|
||||||
## ✅ **Soluções Implementadas:**
|
|
||||||
|
|
||||||
### 1. **Corrigida a sintaxe do comando:**
|
|
||||||
```bash
|
|
||||||
# ANTES (incorreto):
|
|
||||||
config terminal && interface gpon 1/1/1 && onu-reset onu 10 && exit
|
|
||||||
|
|
||||||
# DEPOIS (correto):
|
|
||||||
1. config
|
|
||||||
2. interface gpon 1/1/1
|
|
||||||
3. onu-reset onu 10
|
|
||||||
4. yes
|
|
||||||
5. exit
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. **Implementada execução sequencial:**
|
|
||||||
- Comandos executados um por vez
|
|
||||||
- Aguarda 2 segundos após `onu-reset` antes de enviar `yes`
|
|
||||||
- Delays de 1 segundo entre comandos para estabilidade
|
|
||||||
|
|
||||||
### 3. **Melhorado tratamento de erros:**
|
|
||||||
- Log detalhado de cada comando
|
|
||||||
- Tratamento específico para erro no comando `yes`
|
|
||||||
- Continuação mesmo se houver erros menores
|
|
||||||
|
|
||||||
## 📋 **Fluxo Correto:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
DM4610-OLT-POP-DITO# config
|
|
||||||
Entering configuration mode terminal
|
|
||||||
DM4610-OLT-POP-DITO(config)# interface gpon 1/1/1
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/1)# onu-reset onu 10
|
|
||||||
Are you sure you want to reset this ONU? [no,yes] yes
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/1)# exit
|
|
||||||
DM4610-OLT-POP-DITO(config)# exit
|
|
||||||
DM4610-OLT-POP-DITO#
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 **Como Testar:**
|
|
||||||
|
|
||||||
1. **Iniciar o bot:**
|
|
||||||
```bash
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **No Telegram:**
|
|
||||||
```
|
|
||||||
ver sinal DACM91569513
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Clicar:** `🔌 Reiniciar ONU`
|
|
||||||
|
|
||||||
4. **Confirmar:** `✅ SIM, Reiniciar`
|
|
||||||
|
|
||||||
## 📊 **Logs Esperados:**
|
|
||||||
|
|
||||||
```
|
|
||||||
🔄 Iniciando reset ONU - OLT: olt_dito, Slot: 1/1/1, ONU: 10
|
|
||||||
📡 Conectando na OLT: olt_dito
|
|
||||||
✅ Conectado! ConnectionId: olt_dito_1754618005083
|
|
||||||
📝 Executando comando 1/4: config
|
|
||||||
📊 Resultado do comando: { success: true, output: 'Entering configuration mode terminal' }
|
|
||||||
📝 Executando comando 2/4: interface gpon 1/1/1
|
|
||||||
📊 Resultado do comando: { success: true, output: '' }
|
|
||||||
📝 Executando comando 3/4: onu-reset onu 10
|
|
||||||
📊 Resultado do comando: { success: true, output: 'Are you sure you want to reset this ONU? [no,yes]' }
|
|
||||||
⏳ Aguardando prompt de confirmação...
|
|
||||||
📝 Executando comando 4/4: yes
|
|
||||||
📊 Resultado do comando: { success: true, output: '' }
|
|
||||||
📝 Executando comando final: exit
|
|
||||||
🔌 Desconectado da OLT
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🎯 **Status:**
|
|
||||||
|
|
||||||
- ✅ Sintaxe corrigida
|
|
||||||
- ✅ Confirmação interativa implementada
|
|
||||||
- ✅ Logs detalhados adicionados
|
|
||||||
- ✅ Tratamento de erros melhorado
|
|
||||||
- ✅ Delays para estabilidade
|
|
||||||
- ✅ Pronto para teste
|
|
||||||
|
|
||||||
**🚀 O reset da ONU agora deve funcionar corretamente!**
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
# 🔌 Funcionalidade de Reiniciar ONU - Implementação Concluída
|
|
||||||
|
|
||||||
## 📋 Resumo das Alterações
|
|
||||||
|
|
||||||
### 1. **SSH Manager** (`src/ssh/manager.js`)
|
|
||||||
- ✅ Adicionado método `resetOnu()` - versão original com shell interativo
|
|
||||||
- ✅ Adicionado método `resetOnuAlternative()` - versão simplificada (RECOMENDADA)
|
|
||||||
- 🔧 A versão alternativa usa comando único para evitar timeouts
|
|
||||||
|
|
||||||
### 2. **Bot Handler** (`src/bot/handler.js`)
|
|
||||||
- ✅ Adicionado botão "🔌 Reiniciar ONU" nos resultados de verificação de sinal
|
|
||||||
- ✅ Implementado `handleResetOnuCallback()` - processa clique do botão
|
|
||||||
- ✅ Implementado `handleConfirmResetOnu()` - processa confirmação
|
|
||||||
- ✅ Adicionado tratamento no `handleConfirmCallback()`
|
|
||||||
- ✅ Atualizada mensagem de ajuda com nova funcionalidade
|
|
||||||
|
|
||||||
### 3. **Fluxo de Funcionamento**
|
|
||||||
1. Usuario digita: `"ver sinal DACM91569513"`
|
|
||||||
2. Bot mostra resultados com botões de ação
|
|
||||||
3. Usuario clica: `"🔌 Reiniciar ONU"`
|
|
||||||
4. Bot pede confirmação com detalhes da ONU
|
|
||||||
5. Usuario confirma: `"✅ SIM, Reiniciar"`
|
|
||||||
6. Bot executa comando e mostra resultado
|
|
||||||
|
|
||||||
### 4. **Comandos Executados na OLT**
|
|
||||||
```bash
|
|
||||||
config terminal && interface gpon SLOT && onu-reset onu ONU_ID && exit
|
|
||||||
```
|
|
||||||
**Exemplo:** `config terminal && interface gpon 1/1/1 && onu-reset onu 5 && exit`
|
|
||||||
|
|
||||||
### 5. **Arquivos de Teste Criados**
|
|
||||||
- `test-reset-onu.js` - Teste geral da funcionalidade
|
|
||||||
- `test-reset-alternative.js` - Teste específico da versão alternativa
|
|
||||||
|
|
||||||
## 🚀 Como Testar
|
|
||||||
|
|
||||||
1. **Inicie o bot:**
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **No Telegram, digite:**
|
|
||||||
```
|
|
||||||
ver sinal DACM91569513
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Clique no botão:** `🔌 Reiniciar ONU`
|
|
||||||
|
|
||||||
4. **Confirme a ação:** `✅ SIM, Reiniciar`
|
|
||||||
|
|
||||||
## ⚠️ Solução para Timeout
|
|
||||||
|
|
||||||
**Problema:** Timeout na operação de reset
|
|
||||||
**Solução:** Implementada versão alternativa `resetOnuAlternative()` que:
|
|
||||||
- Usa comando único em vez de shell interativo
|
|
||||||
- Evita detecção complexa de prompts
|
|
||||||
- Reduz chance de timeout
|
|
||||||
- Mantém mesma funcionalidade
|
|
||||||
|
|
||||||
## 🔧 Configuração das OLTs
|
|
||||||
|
|
||||||
As seguintes OLTs estão configuradas:
|
|
||||||
- **OLT DITO:** 192.168.190.7
|
|
||||||
- **OLT COLMEIA:** 192.168.190.8
|
|
||||||
- **OLT CANAA:** 192.168.190.9
|
|
||||||
- **OLT CANAA 2:** 192.168.190.10
|
|
||||||
|
|
||||||
## ✅ Status da Implementação
|
|
||||||
|
|
||||||
- [x] Método de reset ONU implementado
|
|
||||||
- [x] Interface do bot atualizada
|
|
||||||
- [x] Botões de confirmação adicionados
|
|
||||||
- [x] Tratamento de erros implementado
|
|
||||||
- [x] Solução para timeout aplicada
|
|
||||||
- [x] Documentação criada
|
|
||||||
- [x] Arquivos de teste preparados
|
|
||||||
|
|
||||||
**🎯 Implementação concluída e pronta para uso!**
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# 🔌 Melhoria: Exibição do Service-Port ID
|
|
||||||
|
|
||||||
## ✅ **MELHORIAS IMPLEMENTADAS**
|
|
||||||
|
|
||||||
### 1. **Captura Aprimorada do Service-Port**
|
|
||||||
|
|
||||||
**Antes:** Captura básica que podia falhar
|
|
||||||
```javascript
|
|
||||||
if (dataStr.includes('service-port') && /service-port\s+(\d+)/.test(dataStr))
|
|
||||||
```
|
|
||||||
|
|
||||||
**Agora:** Captura dupla e mais robusta
|
|
||||||
```javascript
|
|
||||||
// Captura 1: Pattern mais flexível
|
|
||||||
if (dataStr.includes('service-port') && /service-port[^a-zA-Z]*(\d+)/.test(dataStr))
|
|
||||||
|
|
||||||
// Captura 2: Do prompt de configuração
|
|
||||||
if (dataStr.includes('(config-service-port-') && /config-service-port-(\d+)/.test(dataStr))
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. **Exibição Melhorada na Mensagem**
|
|
||||||
|
|
||||||
**Nova mensagem de sucesso:**
|
|
||||||
```
|
|
||||||
✅ ONU Adicionada com Sucesso!
|
|
||||||
|
|
||||||
📱 Serial: DACM915E0F76
|
|
||||||
📍 Localização: Slot 1/1/3, ONU 0
|
|
||||||
🏷️ VLAN: 603
|
|
||||||
🔌 Service-port: 6 (Auto-gerado) ← DESTAQUE!
|
|
||||||
🏢 OLT: DITO
|
|
||||||
|
|
||||||
✅ Configurações aplicadas:
|
|
||||||
• Line-profile: DM986-100
|
|
||||||
• Serial number: DACM915E0F76
|
|
||||||
• Ethernet: porta 1
|
|
||||||
• Native VLAN: 603
|
|
||||||
• Service-port: 6 criado e configurado ← DETALHADO!
|
|
||||||
• Configuração commitada
|
|
||||||
|
|
||||||
🎉 A ONU está pronta para uso!
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. **Logs Detalhados**
|
|
||||||
|
|
||||||
**Agora o console mostra:**
|
|
||||||
```
|
|
||||||
📋 Service-port ID capturado do prompt: 6
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🎯 **Resultado**
|
|
||||||
|
|
||||||
**O bot agora informa claramente:**
|
|
||||||
- ✅ **Número exato** do service-port criado
|
|
||||||
- ✅ **Confirmação visual** de que foi auto-gerado
|
|
||||||
- ✅ **Detalhamento** nas configurações aplicadas
|
|
||||||
- ✅ **Logs** para troubleshooting
|
|
||||||
|
|
||||||
## 🚀 **Para Testar**
|
|
||||||
|
|
||||||
Reinicie o bot e teste:
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**No Telegram:**
|
|
||||||
```
|
|
||||||
adicionar onu TESTE123456
|
|
||||||
```
|
|
||||||
|
|
||||||
**Resultado esperado:**
|
|
||||||
```
|
|
||||||
✅ ONU Adicionada com Sucesso!
|
|
||||||
🔌 Service-port: 7 (Auto-gerado)
|
|
||||||
• Service-port: 7 criado e configurado
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 **Informações Agora Exibidas**
|
|
||||||
|
|
||||||
1. **📱 Serial** da ONU
|
|
||||||
2. **📍 Localização** (Slot + ONU ID)
|
|
||||||
3. **🏷️ VLAN** configurada
|
|
||||||
4. **🔌 Service-port** auto-gerado ← **NOVO!**
|
|
||||||
5. **🏢 OLT** utilizada
|
|
||||||
6. **✅ Configurações** detalhadas
|
|
||||||
|
|
||||||
**Agora o usuário tem visibilidade completa do que foi configurado!** 🎉
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
# 🔧 Implementação Shell Interativo - Reset ONU
|
|
||||||
|
|
||||||
## 🐛 **Problema Identificado:**
|
|
||||||
|
|
||||||
O método anterior usando `executeCommand` em sequência não mantinha o contexto dos modos de configuração. Cada comando era executado independentemente, perdendo o estado da sessão CLI.
|
|
||||||
|
|
||||||
**Sintomas observados:**
|
|
||||||
- `config` funcionava
|
|
||||||
- `interface gpon 1/1/3` falhava com "syntax error"
|
|
||||||
- Todos os comandos subsequentes falhavam
|
|
||||||
- Não entrava no modo de configuração
|
|
||||||
|
|
||||||
## ✅ **Solução Implementada:**
|
|
||||||
|
|
||||||
### **Shell Interativo com Detecção de Prompts:**
|
|
||||||
|
|
||||||
A nova implementação usa `conn.connection.shell()` para manter uma sessão interativa contínua e detecta os prompts específicos para enviar os comandos na sequência correta.
|
|
||||||
|
|
||||||
### **Fluxo de Detecção:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
1. Aguarda: '#' → Envia: 'config'
|
|
||||||
2. Aguarda: '(config)#' → Envia: 'interface gpon 1/1/3'
|
|
||||||
3. Aguarda: '(config-gpon' → Envia: 'onu-reset onu 0'
|
|
||||||
4. Aguarda: 'Are you sure' ou '[no,yes]' → Envia: 'yes'
|
|
||||||
5. Aguarda: '(config-gpon' → Envia: 'exit'
|
|
||||||
6. Aguarda: '(config)#' → Envia: 'exit'
|
|
||||||
7. Aguarda: '#' (sem config) → Finaliza
|
|
||||||
```
|
|
||||||
|
|
||||||
### **Vantagens da Nova Implementação:**
|
|
||||||
|
|
||||||
- ✅ **Mantém contexto:** Sessão CLI contínua
|
|
||||||
- ✅ **Detecção precisa:** Identifica prompts específicos
|
|
||||||
- ✅ **Sequencial:** Aguarda cada prompt antes do próximo comando
|
|
||||||
- ✅ **Timeout robusto:** 60 segundos de segurança
|
|
||||||
- ✅ **Logs detalhados:** Mostra cada data recebido
|
|
||||||
|
|
||||||
### **Prompts Detectados:**
|
|
||||||
|
|
||||||
```
|
|
||||||
DM4610-OLT-POP-DITO# ← Prompt inicial
|
|
||||||
DM4610-OLT-POP-DITO(config)# ← Modo configuração
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/3)# ← Modo interface
|
|
||||||
Are you sure you want to reset this ONU? [no,yes] ← Confirmação
|
|
||||||
DM4610-OLT-POP-DITO(config-gpon-1/1/3)# ← Após confirmação
|
|
||||||
DM4610-OLT-POP-DITO(config)# ← Após primeiro exit
|
|
||||||
DM4610-OLT-POP-DITO# ← Após segundo exit (finalizado)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 **Teste:**
|
|
||||||
|
|
||||||
1. **Reinicie o bot** (se estiver rodando)
|
|
||||||
2. **Digite:** `ver sinal DACM91569513`
|
|
||||||
3. **Clique:** `🔌 Reiniciar ONU`
|
|
||||||
4. **Confirme:** `✅ SIM, Reiniciar`
|
|
||||||
|
|
||||||
## 📊 **Logs Esperados:**
|
|
||||||
|
|
||||||
```
|
|
||||||
🔄 Iniciando reset ONU - OLT: olt_dito, Slot: 1/1/3, ONU: 0
|
|
||||||
📡 Conectando na OLT: olt_dito
|
|
||||||
✅ Conectado! ConnectionId: olt_dito_xxxxx
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO#
|
|
||||||
📝 Enviando comando 1: config
|
|
||||||
📨 Recebido: Entering configuration mode terminal
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO(config)#
|
|
||||||
📝 Enviando comando 2: interface gpon 1/1/3
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO(config-gpon-1/1/3)#
|
|
||||||
📝 Enviando comando 3: onu-reset onu 0
|
|
||||||
📨 Recebido: Are you sure you want to reset this ONU? [no,yes]
|
|
||||||
📝 Enviando comando 4: yes
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO(config-gpon-1/1/3)#
|
|
||||||
📝 Enviando comando 5: exit
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO(config)#
|
|
||||||
📝 Enviando comando 6: exit
|
|
||||||
📨 Recebido: DM4610-OLT-POP-DITO#
|
|
||||||
🔌 Desconectado da OLT
|
|
||||||
```
|
|
||||||
|
|
||||||
**🎯 Esta implementação deve resolver completamente o problema de contexto e executar o reset da ONU com sucesso!**
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
# 🎉 SUCCESS! - Correção Final da Funcionalidade ADD ONU
|
|
||||||
|
|
||||||
## ✅ **SUCESSO CONFIRMADO!**
|
|
||||||
A ONU foi adicionada com sucesso! O único problema restante era a finalização do processo SSH.
|
|
||||||
|
|
||||||
## 🔧 **Última Correção Aplicada**
|
|
||||||
|
|
||||||
### **Problema:**
|
|
||||||
Após `commit`, o sistema ainda estava em `(config-service-port-6)#` mas o step 11 esperava `(config)#` para enviar `top`.
|
|
||||||
|
|
||||||
### **Solução:**
|
|
||||||
Ajustei o step 11 para detectar `(config-service-port` em vez de `(config)#`:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
} else if (step === 11 && dataStr.includes('(config-service-port')) {
|
|
||||||
// Após commit (ainda em service-port) - enviar top
|
|
||||||
shouldSendCommand = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📋 **Sequência Final Correta:**
|
|
||||||
|
|
||||||
```
|
|
||||||
Step 8: service-port new → (config-service-port-X)#
|
|
||||||
Step 9: gpon 1/1/3 onu 0 gem 1... → (config-service-port-X)#
|
|
||||||
Step 10: commit → (config-service-port-X)# ← Permanece aqui!
|
|
||||||
Step 11: top → (config)#
|
|
||||||
Step 12: exit → #
|
|
||||||
Step 13: exit → desconexão
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🎯 **Resultado:**
|
|
||||||
|
|
||||||
### ✅ **Funcionalidade ADD ONU 100% FUNCIONAL!**
|
|
||||||
|
|
||||||
**Operações realizadas com sucesso:**
|
|
||||||
- ✅ Descoberta automática do slot (1/1/3)
|
|
||||||
- ✅ Determinação do ONU ID disponível (0)
|
|
||||||
- ✅ Configuração automática da VLAN (603)
|
|
||||||
- ✅ Execução de todos os comandos SSH
|
|
||||||
- ✅ Line-profile aplicado (DM986-100)
|
|
||||||
- ✅ Serial number configurado (DACM915E0F76)
|
|
||||||
- ✅ Ethernet configurada (porta 1)
|
|
||||||
- ✅ Native VLAN configurada (603)
|
|
||||||
- ✅ Service-port criado (6)
|
|
||||||
- ✅ Configuração commitada
|
|
||||||
- ✅ Processo finalizado corretamente
|
|
||||||
|
|
||||||
## 🚀 **Status Final:**
|
|
||||||
|
|
||||||
**O bot agora pode:**
|
|
||||||
1. **Ver sinal** das ONUs em 6 OLTs
|
|
||||||
2. **Adicionar ONUs** automaticamente ✅ NOVO!
|
|
||||||
3. **Remover ONUs** com confirmação
|
|
||||||
4. **Resetar ONUs**
|
|
||||||
5. **Atualizar firmware** das ONUs
|
|
||||||
6. **Gerenciar usuários** no concentrador Juniper
|
|
||||||
|
|
||||||
## 🔄 **Para Testar Completamente:**
|
|
||||||
|
|
||||||
Reinicie o bot e teste toda a funcionalidade:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd c:\Users\rodri\build\bot-ajuda
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**Comandos para testar:**
|
|
||||||
```
|
|
||||||
adicionar onu TESTE123456
|
|
||||||
ver sinal TESTE123456
|
|
||||||
remover onu TESTE123456
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 **Estatísticas da Implementação:**
|
|
||||||
|
|
||||||
- **Total de arquivos modificados:** 4
|
|
||||||
- **Total de funções criadas:** 8
|
|
||||||
- **Total de comandos SSH:** 14 por ONU
|
|
||||||
- **Total de OLTs suportadas:** 6
|
|
||||||
- **Total de VLANs mapeadas:** 62
|
|
||||||
- **Tempo de desenvolvimento:** Concluído!
|
|
||||||
|
|
||||||
## 🎉 **PARABÉNS!**
|
|
||||||
|
|
||||||
**A funcionalidade de adicionar ONUs está 100% implementada e funcional!**
|
|
||||||
|
|
||||||
Seu bot agora é uma ferramenta completa de gerenciamento de rede com:
|
|
||||||
- **Automação completa** do ciclo de vida das ONUs
|
|
||||||
- **Interface intuitiva** via Telegram
|
|
||||||
- **Segurança** com confirmações
|
|
||||||
- **Logs detalhados** para troubleshooting
|
|
||||||
- **Suporte multi-OLT** (6 equipamentos)
|
|
||||||
|
|
||||||
**Missão cumprida!** 🎯✨
|
|
||||||
-78
@@ -1,78 +0,0 @@
|
|||||||
# Script de Deploy - Bot de Ajuda Telegram (Windows)
|
|
||||||
# ===================================================
|
|
||||||
|
|
||||||
Write-Host "🚀 Iniciando deploy do Bot de Ajuda Telegram..." -ForegroundColor Green
|
|
||||||
|
|
||||||
# Verificar se Docker está instalado
|
|
||||||
if (-not (Get-Command docker -ErrorAction SilentlyContinue)) {
|
|
||||||
Write-Host "❌ Docker não encontrado. Instale o Docker Desktop primeiro." -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verificar se Docker Compose está instalado
|
|
||||||
if (-not (Get-Command docker-compose -ErrorAction SilentlyContinue)) {
|
|
||||||
Write-Host "❌ Docker Compose não encontrado. Instale o Docker Compose primeiro." -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verificar se arquivo .env existe
|
|
||||||
if (-not (Test-Path .env)) {
|
|
||||||
Write-Host "⚠️ Arquivo .env não encontrado!" -ForegroundColor Yellow
|
|
||||||
Write-Host "📋 Copiando template de produção..." -ForegroundColor Cyan
|
|
||||||
Copy-Item .env.production .env
|
|
||||||
Write-Host "✅ Arquivo .env criado a partir do template." -ForegroundColor Green
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "🔧 AÇÃO NECESSÁRIA:" -ForegroundColor Yellow
|
|
||||||
Write-Host " 1. Edite o arquivo .env"
|
|
||||||
Write-Host " 2. Configure TELEGRAM_BOT_TOKEN"
|
|
||||||
Write-Host " 3. Configure DEFAULT_SSH_PASSWORD"
|
|
||||||
Write-Host " 4. Configure ALLOWED_USERS"
|
|
||||||
Write-Host " 5. Execute este script novamente"
|
|
||||||
Write-Host ""
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verificar configurações
|
|
||||||
$envContent = Get-Content .env -Raw
|
|
||||||
if ($envContent -match "YOUR_BOT_TOKEN_HERE" -or $envContent -match "YOUR_SSH_PASSWORD_HERE") {
|
|
||||||
Write-Host "❌ Arquivo .env contém valores de template. Configure as variáveis necessárias." -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✅ Configurações validadas" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Parar containers existentes
|
|
||||||
Write-Host "🛑 Parando containers existentes..." -ForegroundColor Yellow
|
|
||||||
docker-compose down 2>$null
|
|
||||||
|
|
||||||
# Build da imagem
|
|
||||||
Write-Host "🔨 Construindo nova imagem..." -ForegroundColor Cyan
|
|
||||||
docker-compose build --no-cache
|
|
||||||
|
|
||||||
# Iniciar containers
|
|
||||||
Write-Host "🚀 Iniciando containers..." -ForegroundColor Green
|
|
||||||
docker-compose up -d
|
|
||||||
|
|
||||||
# Aguardar inicialização
|
|
||||||
Write-Host "⏳ Aguardando inicialização..." -ForegroundColor Yellow
|
|
||||||
Start-Sleep -Seconds 10
|
|
||||||
|
|
||||||
# Verificar status
|
|
||||||
Write-Host "📊 Verificando status dos containers..." -ForegroundColor Cyan
|
|
||||||
docker-compose ps
|
|
||||||
|
|
||||||
# Mostrar logs
|
|
||||||
Write-Host "📜 Últimos logs do bot:" -ForegroundColor Cyan
|
|
||||||
docker-compose logs --tail=20 telegram-bot
|
|
||||||
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "🎉 Deploy concluído!" -ForegroundColor Green
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "📋 Comandos úteis:" -ForegroundColor Cyan
|
|
||||||
Write-Host " Ver logs: docker-compose logs -f telegram-bot"
|
|
||||||
Write-Host " Parar bot: docker-compose down"
|
|
||||||
Write-Host " Reiniciar bot: docker-compose restart telegram-bot"
|
|
||||||
Write-Host " Status: docker-compose ps"
|
|
||||||
Write-Host ""
|
|
||||||
Write-Host "🔍 Para verificar se o bot está funcionando:" -ForegroundColor Yellow
|
|
||||||
Write-Host " Envie /start para o bot no Telegram"
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Script de Deploy - Bot de Ajuda Telegram
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🚀 Iniciando deploy do Bot de Ajuda Telegram..."
|
|
||||||
|
|
||||||
# Verificar se Docker está instalado
|
|
||||||
if ! command -v docker &> /dev/null; then
|
|
||||||
echo "❌ Docker não encontrado. Instale o Docker primeiro."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verificar se Docker Compose está instalado
|
|
||||||
if ! command -v docker-compose &> /dev/null; then
|
|
||||||
echo "❌ Docker Compose não encontrado. Instale o Docker Compose primeiro."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verificar se arquivo .env existe
|
|
||||||
if [ ! -f .env ]; then
|
|
||||||
echo "⚠️ Arquivo .env não encontrado!"
|
|
||||||
echo "📋 Copiando template de produção..."
|
|
||||||
cp .env.production .env
|
|
||||||
echo "✅ Arquivo .env criado a partir do template."
|
|
||||||
echo ""
|
|
||||||
echo "🔧 AÇÃO NECESSÁRIA:"
|
|
||||||
echo " 1. Edite o arquivo .env"
|
|
||||||
echo " 2. Configure TELEGRAM_BOT_TOKEN"
|
|
||||||
echo " 3. Configure DEFAULT_SSH_PASSWORD"
|
|
||||||
echo " 4. Configure ALLOWED_USERS"
|
|
||||||
echo " 5. Execute este script novamente"
|
|
||||||
echo ""
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verificar se variáveis obrigatórias estão configuradas
|
|
||||||
source .env
|
|
||||||
|
|
||||||
if [ -z "$TELEGRAM_BOT_TOKEN" ] || [ "$TELEGRAM_BOT_TOKEN" = "YOUR_BOT_TOKEN_HERE" ]; then
|
|
||||||
echo "❌ TELEGRAM_BOT_TOKEN não configurado no arquivo .env"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$DEFAULT_SSH_PASSWORD" ] || [ "$DEFAULT_SSH_PASSWORD" = "YOUR_SSH_PASSWORD_HERE" ]; then
|
|
||||||
echo "❌ DEFAULT_SSH_PASSWORD não configurado no arquivo .env"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Configurações validadas"
|
|
||||||
|
|
||||||
# Parar containers existentes
|
|
||||||
echo "🛑 Parando containers existentes..."
|
|
||||||
docker-compose down 2>/dev/null || true
|
|
||||||
|
|
||||||
# Build da imagem
|
|
||||||
echo "🔨 Construindo nova imagem..."
|
|
||||||
docker-compose build --no-cache
|
|
||||||
|
|
||||||
# Iniciar containers
|
|
||||||
echo "🚀 Iniciando containers..."
|
|
||||||
docker-compose up -d
|
|
||||||
|
|
||||||
# Aguardar inicialização
|
|
||||||
echo "⏳ Aguardando inicialização..."
|
|
||||||
sleep 10
|
|
||||||
|
|
||||||
# Verificar status
|
|
||||||
echo "📊 Verificando status dos containers..."
|
|
||||||
docker-compose ps
|
|
||||||
|
|
||||||
# Mostrar logs
|
|
||||||
echo "📜 Últimos logs do bot:"
|
|
||||||
docker-compose logs --tail=20 telegram-bot
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎉 Deploy concluído!"
|
|
||||||
echo ""
|
|
||||||
echo "📋 Comandos úteis:"
|
|
||||||
echo " Ver logs: docker-compose logs -f telegram-bot"
|
|
||||||
echo " Parar bot: docker-compose down"
|
|
||||||
echo " Reiniciar bot: docker-compose restart telegram-bot"
|
|
||||||
echo " Status: docker-compose ps"
|
|
||||||
echo ""
|
|
||||||
echo "🔍 Para verificar se o bot está funcionando:"
|
|
||||||
echo " Envie /start para o bot no Telegram"
|
|
||||||
Reference in new issue
Block a user