2.9 KiB
2.9 KiB
🔧 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:
configfuncionavainterface gpon 1/1/3falhava 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:
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:
- Reinicie o bot (se estiver rodando)
- Digite:
ver sinal DACM91569513 - Clique:
🔌 Reiniciar ONU - 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!