Charla

Cómo complicar innecesariamente tu vida programando una shell asíncrona en Python

Javier Torres Niño

  • 23 September 2017, 11 a.m. - 11:30 a.m.
  • Room Intelygenz
  • Idioma: es

Hace unos meses me encontré repitiendo pequeñas variaciones de los mismos comandos día tras día. Un script tradicional no era suficiente para mis propósitos, dado que parte del comando debía ejecutarse remotamente a través de SSH, dejando la sesión de SSH abierta.

Así que decidí liarme la manta a la cabeza y crear una aplicación de consola que permitiera automatizar estos procesos, y ya puestos, aprender algo nuevo de Python. El resultado final es una aplicación de modo texto, con funcionalidades tan diversas como:

  • Múltiples sesiones simultáneas, a lo tmux
  • Ejecución remota de comandos via SSH, permitiendo pasar a sesiones interactivas
  • Autocompletado de comandos
  • Inesperadamente, soporte para ratón en la propia consola
  • Temas gráficos personalizables (¿por qué no?)

Y como muestra, un pantallazo: screenshot

El objetivo de la charla es dar a conocer un poco de las librerías utilizadas, así como de su integración:

  • ply para el parseo de sintaxis (lexer y parser)
  • prompt_toolkit para la interfaz gráfica
  • asyncio para la ejecución asíncrona de tareas
  • asyncssh para la conexión a servidores por SSH