CÓMO HABILITAR EL MODO DE DEPURACIÓN DE SECUENCIAS DE COMANDOS DE LA SHELL EN LINUX

bash-148836_640Os dejo este interesante y útil post que he traducido de la fuente original, la cual podéis visitar en el siguiente enlace:

http://www.tecmint.com/enable-shell-debug-mode-linux/

y que trata sobre las diversas opciones de depuración de fallos (Debuggin) de las que disponemos a la hora de programar un script de SHELL. Podemos decir que el siguiente articulo nos da las pautas a seguir a la hora de iniciarnos en la programación SHELL dando uso de las buenas practicas. Esto nos facilitará la detección de errores en nuestros scripts y sus correspondientes correcciones.

 

Un script es simplemente una lista de comandos almacenados en un archivo. En lugar de ejecutar una secuencia de comandos escribiéndolos uno a uno todo el tiempo en el terminal, un usuario del sistema puede almacenar todos ellos (comandos) en un archivo y repetidamente invocar dicho archivo para volver a ejecutar los comandos varias veces.

Mientras aprendemos a programar scripts o durante las primeras etapas de aprendizaje, comenzamos normalmente escribiendo éstos, con unas pocas líneas de comandos, o sea un pequeño script nada complejo. Y normalmente depuramos tales scripts solo mirando su salida en el interprete de comandos y asegurándonos de que funcionen como queríamos.

Sin embargo, a medida que empezamos a escribir secuencias de comandos muy largas y avanzadas con múltiples líneas, por ejemplo scripts que modifican la configuración del sistema, realizan copias de seguridad críticas sobre redes y muchos más, nos daremos cuenta de que sólo mirar la salida de un script no es suficiente para encontrar errores en ellos.

Por lo tanto, vamos a ver varias formas a través de las cuales podremos habilitar la depuración de scripts de shell.

 

Cómo iniciar un script

Un script se distingue de otros archivos por su primera línea, que contiene un #! (She-bang – define el tipo de archivo) y un nombre de ruta (path to interpreter) que informa al sistema que el archivo es una colección de comandos que serán interpretados por el programa especificado (intérprete).

A continuación se presentan ejemplos de las «primeras líneas» en diferentes tipos de scripts:

foto-1

Cómo ejecutar una secuencia de comandos de Shell en Linux

La sintaxis convencional para invocar una secuencia de comandos de shell es:

foto-2

Otra forma posible es especificar claramente el shell que ejecutará el script, como se muestra a continuación:

foto-3

Por ejemplo:

foto-4

Para los scripts que no tienen el “She-bang” #! en la primera línea y sólo contienen comandos básicos del sistema, como el siguiente:

foto-5

Basta con hacerlo ejecutable y correrlo de la siguiente manera:

foto-6

Métodos para habilitar el modo de depuración de secuencias de comandos en la Shell

A continuación se muestran las principales opciones o parámetros de depuración de una secuencia de comandos:

-v (short for verbose) – le dice a la shell que muestre todas las líneas de un script mientras se leen, activa el modo verboso o detallado, paso por paso.

-n (abreviatura de noexec o no ecxecution) – instruye a la shell a leer todos los comandos, sin embargo no los ejecuta. Esta opción activa el modo de comprobación de sintaxis.

-x (abreviatura de xtrace o rastreo de ejecución): indica a la shell que muestre todos los comandos y sus argumentos en el terminal mientras se ejecutan. Esta opción activa el modo de rastreo de la shell.

  1. Modificación de la primera línea de una secuencia de comandos de Shell

El primer mecanismo es alterando la primera línea del script como se indica a continuación, esto permitirá la depuración de todo el script.

foto-7

Según la forma de la foto anterior, la opción puede ser una o una combinación de las opciones o parámetros de depuración anteriormente citados.

  1. Invocar la Shell con opciones de depuración

El segundo es invocando la shell con las opciones de depuración de la siguiente manera, este método también activará la depuración de todo el script.

foto-8

Por ejemplo:

foto-9

  1. Usando el comando interno (built-in) set de la Shell

El tercer método es mediante el comando interno (built-in) “set” para depurar una sección determinada de un script, como una función por ejemplo. Este mecanismo es importante, ya que nos permite activar la depuración en cualquier segmento de un script de shell.

Podemos activar el modo de depuración utilizando el comando set como se muestra en la siguiente captura, donde option es cualquiera de las opciones de depuración.

foto-10

Para habilitar el modo de depuración, usaremos:

foto-11

Y para deshabilitar el modo de depuración, usaremos:

foto-12

Además, si hemos habilitado varios modos de depuración en diferentes segmentos de una secuencia de comandos de shell, podemos desactivar todos ellos a la vez de la siguiente manera:

foto-13

Como hemos visto, podemos depurar un script de shell completo o una sección particular del mismo.

 

En el siguiente post de esta serie, cubriremos cómo utilizar las opciones de depuración explicando los modos “verbose”, “syntax checking” y el “shell tracing debugging” con ejemplos. Espero que os haya resultado de utilidad tanto a los que se inician como a los que tienen experiencia y buscaban información al respecto.

 

Podéis ver el siguiente post de esta serie, en inglés, en su fuente original. Os dejo el enlace a la web:

http://www.tecmint.com/check-syntax-in-shell-script/

BOMBAS FORK

seguridad1¿Qué es una Bomba Fork?

Una bomba lógica fork es un código informático que produce un ataque de denegación de servicio (DOS), haciendo uso de la operación fork. Fork o bifurcación, en lenguaje de programación, consiste en hacer que un programa se replique a sí mismo, creando una serie de procesos hijos dependientes del proceso padre. Son procesos en cadena idénticos, que se replican hasta el infinito produciendo la saturación de los recursos de hardware de un sistema (CPU y RAM), y produciendo así la caída del sistema y/o la denegación del servicio (DOS). Sigue leyendo

PING_NMAP.SH

ShellShockA veces necesitamos chequear si una serie de máquinas están operativas en la red, para ello solemos hacer uso del comando «ping», pero esto puede ser tedioso si es un número considerable de equipos.

Otra utilidad de la cual un administrador de sistemas hace uso para ver los servicios disponibles en un servidor es «nmap», que aunque tiene una funcionalidad completamente diferente, la cito porque está como parte del script. No sacaremos todas las «armas» de este comando, de hecho solo usaremos el modificador «-sP» (sólo ping) para este uso. Sigue leyendo