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/

“DNSMASQ”, UN SENCILLO SERVIDOR DNS

dnsmasqNOTA: En la primera parte de este post se explica en líneas generales que es un servidor DNS y la configuración de DNSMASQ, al final del post he añadido capturas de cada uno de los pasos realizados en este “LAB”. El material necesario para realizar el entorno ha sido:

 

 

  • Máquina Host MacBook Pro con VirtualBOX instalado.

  • Máquina virtual con Opensuse y dos tarjetas de red en modo “bridge” y “red interna” (192.168.1.200 y 172.16.0.1) respectivamente, en la que he instalado DNSMASQ (haciendo de servidor DNS y servidor DHCP).

  • Máquina virtual con Fedora y tarjeta de red en modo “red interna” (cesión IP 172.16.0.78) haciendo de cliente DNS y cliente DHCP.

Sigue leyendo

CÓMO INSTALAR Y CONFIGURAR OPENLDAP EN GNU/LINUX

database-openldap¿Qué es OpenLDAP?

OpenLDAP es una implementación libre de código abierto del protocolo “Lightweight Directory Access Protocol” (LDAP) y está liberada bajo su propia licencia “OpenLDAP Public License”. En si mismo, LDAP es un protocolo de comunicación independiente de la plataforma, muchas distribuciones GNU/Linux incluyen el software OpenLDAP, aunque también corre bajo BSD, AIX, HP-UX, Mac OS X, Oracle Solaris y Microsoft Windows.

El proyecto OpenLDAP se inició en 1998 por Kurt Zeilenga. Comenzó como un clon de la implementación LDAP de la “Universidad de Michigan”, entidad donde se desarrolló originalmente el protocolo y que actualmente sigue trabajando en la evolución del mismo.

En pocas palabras, si en nuestra red disponemos de un servidor LDAP, bastará con crear las cuentas de usuario y grupos en nuestro servidor para que los clientes puedan hacer uso del sistema y de sus servicios desde cualquier puesto de la red. Por lo tanto, es un sistema ideal para centralizar la administración de usuarios en un único lugar. Sigue leyendo

CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX II

apache-logo¿Qué es LAMP?

LAMP es el acrónimo usado para describir un conjunto de subsistemas de infraestructura, con el fin de alcanzar una solución global de intranet/internet para configurar sitios web dinámicos que usa las siguientes herramientas:

 

 

  • GNU/Linux, el sistema operativo.
  • Apache, el servidor web.
  • MySQL/MariaDB, el gestor de bases de datos.
  • PHP (Perl ó Python) el lenguaje de programación.

Sigue leyendo

CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX I

apache-logo¿Qué es Apache web server?

Es un servidor web de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en el código del popular NCSA HTTPd 1.3 (Servidor web desarrollado originalmente en el National Center for Supercomputing Applications), pero más tarde fue reescrito casi por completo.

Este servidor web es una de las aplicaciones más conocidas del mundo GNU/Linux además de ser el más implantado entre los distintos servidores que ofertan servicios web en Internet. Sigue leyendo

CÓMO INSTALAR Y CONFIGURAR UN SERVIDOR DHCP EN GNU/LINUX

dhcp¿Qué es un servidor DHCP?

Es una máquina que hace uso del protocolo de configuración dinámica de host (DHCP, Dynamic Host Configuration Protocol) que no es mas que un estándar TCP/IP diseñado para simplificar la administración de la configuración IP de los equipos cliente de nuestra red.

Si disponemos de un servidor DHCP, la configuración IP de los PC’s puede hacerse de forma automática sin necesidad de hacerlo manualmente en cada equipo de la red. Sigue leyendo