jueves, 14 de mayo de 2009

Shell Scripts

Se trata de agrupar comandos de consola dentro de un archivo para ejecutarlos secuencialmente. El archivo se convierte en un comando que ejecuta los comandos contenidos en el mismo. De hecho, la consola provee un lenguaje de programación versátil y poderoso; ya que contiene estructuras similares a las que se encuentran en otros lenguages de programación como loops o condicionales. Por lo que, estructurando la secuencia de ejecucion de ciertos comandos dentro de un archivo y dandole permisos de ejecución (con chmod) podemos crear programas para casi cualquier proposito.
Para crear un Shell Script, primero hay que crear un archivo de texto con los comandos en la secuencia que le daríamos si los estuvieramos typeando en la consola. Podemos usar cualquier editor de texto plano. Como gedit en Gnome, o alguno directamente desde la consola: como Nano, Vim o Emacs. En mi caso en particular, me gusta trabajar desde la consola, por lo que estoy aprendiendo a utilizar el editor de texto estructurado Vim, con el objetivo de pasarme a Emacs.
Como ejemplo, crearemos un Shell Script que busque errores en el log del servidor Apache y reporte la cantidad de errores por tipo (las lineas que proceden al simbolo # son comentarios, y no afectan la secuencia del programa).
Con un editor de texto creamos un archivo y lo llamamos "logapchk.sh", dentro de el escribimos lo siguiente:

#!/bin/sh
# La primer linea indica el shell que estamos utilizando.
#
# Este Shell Script busca en el log del apache y genera un reporte
#
# Imprime un mensaje en la salida estandar para informar a
# quien ejecute el programa
que es lo que estamos haciendo

echo "Buscando errores en Apache log ..."
echo ""

# Usamos el comando "grep" para contar (-c) la cantidad de
# lineas que contienen

# la palabra buscada y guardamos el resultado como una variable.

notice='grep -c notice /var/log/apache/error.log'
warning='grep -c warning /var/log/apache/error.log'
error='grep -c error /var/log/apache/error.log'

# damos salida a la pantalla

echo "Cantidad de notices " $notice
echo "Cantidad de warnings "$warning
echo "Cantidad de errores "$error

Luego de crear este archivo le damos permiso de ejecución con

$ chmod u+x logapchk.sh

Ejecutamos el archivo con:

$ logapchk.sh

y deberia aparecer algo como:

Buscando errores en Apache log ...

Cantidad de notices 3
Cantidad de warnings 6
Cantidad de errores 12

No hay comentarios: