# 🔧 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!**