Bash gráfico ¿por qué no? (GUIs)

Quien siga el blog sabrá lo asiduo que soy al bash script. Mucha gente se equivoca con este lenguaje; sobre todo en que con el no podemos hacer nada visual...

Hace ya algún tiempo tuvimos que llevar acabo un sistema de autenticación de usuarios, una vez acabado se nos planteó un problema.

El "Sr administrador de red" no había visto en su vida un sistema Linux, y por descontado no tenía ni idea que era un servidor Radius y mucho menos como administrarlo. Por lo tanto me tocaba dárselo mascadito (administración de usuarios, creación de credenciales y certificados, tiempos de conexión permitidos, logs, etc., etc.) y  por supuesto le hice un script muy completito.

Lo bueno fue cuando me mandaron a explicarle como funcionaba el script (cosa de niños)...el hombre cuando vio el terminal lo vio negro, negro (en ambos sentidos de la palabra) su cara era un poema frente al parpadeo constante del prompt.

Tras esto mi jefe propuso hacerle un frontend mas "amigable" con php, lo cual nos horrorizó... Después de auditar  el ISP pretendían conectarse al Radius por web?...y lo mejor fue el plazo... 3 días...

Puff necesitaba que mi script pudiese interactuar gráficamente con este hombre y rápido...

Fue ahí donde conocí Zenity.


Zenity, Zen Dialogs, es un software que permite generar diálogos simples empleando la biblioteca de GTK+ a manera de wrapper e ideado como sustituto de gdialog para GNOME2 y dialog en consola.

Soporta diferentes tipos de diálogos:
  • Calendarios.
  • Texto de entrada.
  • Mensajes de error, información y advertencia.
  • Selección de archivos.
  • Listas.
  • Ícono en el área de notificación (bandeja del sistema).
  • Barra de progreso.
  • Pregunta al usuario, dando la posibilidad de responder aceptar ó cancelar.
  • Solicitar nombre de usuario y contraseña.
  • Textos largos.
  • Registro de escala.
  • Formularios.
  • Selección de color.
Para comprender esto lo mejor es ver un pequeño ejemplo:

Aquí tenéis el código del script

Como salida de estas escasas 25 lineas de código obtendremos lo siguiente:







Más una barra de proceso que no acabo de pillar con el capturador de pantalla.

Otro ejemplo aun mas pequeño:

zenity --warning --text "Esto de reventará el disco duro"

Pero Zenity solo es una de tantas herramientas con la que podemos dotar nuestros scripts de una apariencia más amigable.

Por ejemplo tenemos también un fork de Zenity llamado Yad el cual nos permite un poco mas de flexibilidad.

Para instalarlo:
Lo descargamos aquí
./configure
make
make install



Descárgate el script aquí




La lista de alternativas es larga...yad, glade, xdialog, gtkdialog...





Otro ejemplo con yad:
 
debajo corre dd
debajo corre dd

Bueno la próxima vez le tocara a SOCKETS EN BASH ..

un saludo

4 comentarios :

  1. Tremendo dato, gracias por compartirlo.

    Saludos.

    ResponderEliminar
  2. Es una P***** el trabajo extra pero quedas muy bien con el cliente ;-)

    ResponderEliminar
  3. Algún día voy a terminar el script del dd.

    PD: soy Due204 el autor del script de la ultima imagen, el del ejemplo con yad.

    ResponderEliminar