Solução cruzada de plataforma para automatizar sessões de telnet do tipo ncurses
-
20-09-2019 - |
Pergunta
Fundo
Parte do meu trabalho em rede e telecomunicações envolve automatizar sessões de telnet quando o hardware herdado não oferece soluções fáceis em outras interfaces. Muitas peças de equipamento mais antigas só podem ser acessadas através de portas de artesanato (portas seriais RS-232), SNMP ou telnet. Às vezes, a Telnet é a única maneira de acessar informações específicas, no entanto, a Telnet é projetada como uma interface humana e, portanto, requer raspagem na tela. Além disso, há também a questão de raspar telas onde apenas partes são atualizadas para salvar a largura de banda (ver ncurses). No meu trabalho, usei o Activestate Werend e a Python Telnet Library.
Pergunta
Quais idiomas e bibliotecas são capazes de automatizar as sessões da Telnet e ter os seguintes requisitos:
- Adequado para grandes projetos (por exemplo, TCL não parece escalar tão bem quanto Python na minha experiência e parece desatualizado)
- Plataforma cruzada (por exemplo Pexpect não funciona no Windows e ActiveState Espera se comporta de maneira diferente no Windows Além disso, requer que as máquinas mais recentes sejam desligadas)
- Capaz de rastrear sessões de raspar que repintar as partes da tela (semelhante ao comportamento dos NCurses nos programas da linha de comando)
- Grátis como na cerveja!
Uma solução preferível também incluiria o seguinte:
- Redistribuível facilmente (por exemplo, não requer um grande tempo de execução para ser instalado em uma máquina.)
- Também funciona para SSH, conexões seriais e outras interfaces da linha de comando.
Solução
Dê uma olhada no DEMOS/espera/termin_expect na distribuição do ActiveTCL. Ele emula um terminal adjunto do cursor e permite testar a saída em locais específicos da tela. Confira o exemplo de código de tela de tela no final do arquivo.