Detectar origen de la ejecución de un script
lunes, 30 de mayo de 2011Un par de lineas que últimamente estoy añadiendo a los script que escribo en mi openSuse/KDE.
La idea es sencilla, puesto que muchos de estos script se ejecutan tanto desde una consola de texto como desde el menú de ejecución (ALT+F2) de KDE, lo correcto sería que dependiendo de la procedencia de esta llamada el script responda de una manera o de otra.
P.ejem: un script que devuelve la definición de una palabra después de consultar el diccionario online de la RAE, debería devolver el resultado en consola si fué llamado desde allí (incluso por otra aplicación) ó bien mostrar un cuadro de diálogo con el contenido si fué llamado desde el escritorio.
El comando usado es tty que indica en que terminal estamos (/dev/pts/1) ó bien emite una advertencia del tipo: no es una consola. Pues listo, comprobamos si exite el /dev/pts/X en cuestión y caso negativo usamos kdialog:
#!/bin/sh
if [ -z $1 ];then exit 1; fi
if [ ! -f "/tmp/$1.tmp" ]; then
url="http://buscon.rae.es/draeI/SrvltGUIBusUsual?origen=RAE&LEMA="
user_agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; es-ES)"
curl --silent --user-agent "$user_agent" "$url$1" | sed 's/]*>//gi' > "/tmp/$1.tmp"
fi
if [ -e $(tty) ]; then
#salida por consola tras formatearlo con LYNX
lynx -dump -force-html -hiddenlinks=ignore -nolist "/tmp/$1.tmp"
else
#salida a diálogo de KDE
/usr/bin/kdialog --textbox "/tmp/$1.tmp" 400 300 --title "RAE: $1"
fi
Voilá.
Nota: En el caso de la salida por consola formateamos el texto descargado (que llega en formato HTML) con ayuda de LYNX. En el caso de usar Kdialog simplemente usamos el diálogo textbox que admite un html básico.
14 de December, 2024 @ 19:54