martes, 10 de marzo de 2015

HOW TO: Solución a error: -bash: /bin/rm: La lista de argumentos es demasiado larga


Si al intentar borrar, con el comando rm, una gran cantidad de archivos de un directorio te aparece este error -bash: /bin/rm: La Lista de argumentos es demasiado larga:
Puedes validar la cantidad de archivos que se borrarán, y que, posiblemente sea muy grande para utilizar el comando rm.  Como alternativa, utiliza el siguiente comando:

find DIRECTORIO.A.BORRAR / -name FILTRO | xargs rm

Ejemplo:
#find /var/spool/pnp4nagios/npcd/ -name 'perfdata*' | xargs rm

Como verán el la siguiente pantalla, estoy mandando a borrar 808685 archivos del directorio.
Este error se produce en sistemas que tienen el kernel de linux anterior al 2.6.23 ya que esos kernels tienen un tope en la lista de argumentos soportada.

lunes, 2 de marzo de 2015

HOW TO: CONFIGURAR ENVIO DE CORREO DESDE CITRIX XENSERVER 6.2.

En algunas ocasiones, necesitamos desarrollar scripts automáticos que, luego de realizar cierta actividad programa, nos envíe un correo electrónico con el resumen de la labor programada, etc.

Con estos sencillos pasos configuraremos nuestra instalación de Citrix XenServer para que envíe correos electrónicos a través de un servidor SMTP previamente configurado.

Prerequisitos:
1. Un servidor SMTP para el envío de los correos.  El servidor a configurar, deberá tener acceso a este servidor para poder enviar los correos a través de este servidor SMTP.
2. Deseable, configurar el servidor para que pueda acceder a la Internet y poder instalar los paquetes necesarios para realizar esta configración.

Empezemos:

1. Ubicados en el servidor base de virtualización Citrix XenServer (para este ejemplo con la versión 6.2) descargamos el programa mailx; programa que utilizaremos para el envío de los correos. Como root ejecutamos el siguiente comando:

wget http://vault.centos.org/5.4/os/i386/CentOS/mailx-8.1.1-44.2.2.i386.rpm

2. Instalamos el programa descargado:
rpm -hiv mailx-8.1.1-44.2.2.i386.rpm

3. Instalado el programa, procedemos a configurar el servidor SMTP en nuestro servidor Citrix XenServer el cual enviará los correos a través de ese SMTP.  Editamos el archivo /etc/ssmtp/ssmtp.conf con nuestro editor preferido (nano, vi, etc).  Editamos lo que a continuación sigue:

mailhub: Configuramos en esta variable nuestro servidor SMTP local por el cual enviaremos los correos. Si nuestro servidor smtp escucha por el puerto por defecto - 25, no es necesario agregar el puerto.  Si escucha por un puerto diferente, agregamos :PUERTO al final del nombre o IP del servidor smtp.  

rewriteDomain: Configuramos acá, el dominio smtp.

En mi caso, la configuración de mi archivo /etc/ssmtp/ssmtp.conf queda así:

Probamos el servicio:
Desde la consola, ejecutamos un comando para probar si los mensajes se están enviando:

echo "Esto es un email de prueba" | /bin/mail -s "TEST EMAIL" framirez.ve@gmail.com


Confirmamos la recepción del correo electrónico:

Ahora, podemos empezar a utilizar la funcionalidad de envío de correos electrónicos en cualquier script que realicemos.

martes, 6 de enero de 2015

HOW TO: INSTALAR NUEVOS PAQUETES, ACTUALIZACIONES VIA APT-GET EN DEBIAN 5 O VERSIONES ANTERIORES.

Con el pasar de los meses, nuestros distribuciones de GNU/Linux suelen en algún momento caer en obsolescencia planificada.  Los Sistemas Operativos siempre evolucionan; dan salida a viejas versiones para publicar las nuevas.  El soporte y desarrollo de aplicaciones tanto de sistema operativo como aplicaciones se deja de brindar en las versiones viejas para enfocarse a las nuevas, versiones nuevas en las cuales se supone que se proporcionan mejoras y nuevas funcionalidades.  El deber ser, mientras el negocio lo permita, es ir migrando versión tras versión para poder contar siempre con l

En algunos casos, como la distribución GNU/Linux Debian, para sus diferentes distribuciones, se desincorporan las viejas versiones Debian de sus repositorios o "replicas" oficiales y se pasan a repositorios historiales.

Con algunas sencillas modificaciones, podremos entonces instalar o actualizar algún paquete vía apt-get de los repositorios historiales de la distribución GNU/Linux en cuestión.

Nota: Esta entrada está basada en GNU/Linux Debian 5, con fecha fin de actualizaciones de seguridad desde el 06-02-2012.

1. Validar nuestra distribución linux: Con el comando "cat /etc/issue" podemos hacerlo:

2. Ubicar el paquete o programa a instalar:
Ejecutamos el comando aptitude search nombre-paquete. En este ejemplo intentaré instalar el programa figlet. La salida no debería traer ningún tipo de información.

3. Editar el archivo /etc/apt/sources.list.  Desincorporar las lineas de configuración que apuntan a repositorios que ya están obsoletos y agregar los repositorios historiales que funcionen con la distribución Linux (para este caso, Debian 5):

Lineas a agregar:
#***NUEVAS REPOSITORIOS PARA VERSIONES VIEJAS DE DEBIAN 5***
deb http://archive.debian.org/debian-archive/debian/ lenny main contrib non-free
deb http://archive.debian.org/debian-security/ lenny/updates main contrib non-free
#***********************************************************

Lineas a eliminar o comentar: Todas las demás líneas.

El archivo sources.list quedará parecido al siguiente.

4. Ejecutar el comando apt-get update para actualizar los repositorios.

5. Nuevamente, ubicar el paquete o programa a instalar:
Ejecutamos el comando aptitude search nombre-paquete. En este ejemplo intentaré instalar el programa figlet. La salida debería ser similar a la siguiente:

6. Procedemos a instalar el paquete con el comando apt-get install nombre-paquete.

7. Para finalizar, validamos la instalación del paquete:


HOW TO: EJECUTAR COMANDO DESDE HISTORIAL EN LINUX.

En algunas ocasiones, cuando leemos del archivo .bash_history para verificar que comandos hemos ejecutado en nuestro Sistema Operativo Linux, se nos viene la necesidad de re-ejecutar alguno en especifico que aparece en la salida del comando .history.  Ejecutando el comando !n (donde "n" es el número de comando que muestra el archivo de salida .bash_history), podemos realizarlo:

1. Ejecutamos el comando history.  Podemos hacer algunos filtros (un head, tail, grep, etc).  Este comando arrojará algo parecido a la siguiente imagen:


Nota: El comando history es diferente para cada usuario.  Para el usuario root, el comando history hace referencia al archivo "/root/.bash_history". Para usuarios convencionales del sistema, se encuentra en "$HOME/.bash_history".

2. Para re-ejecutar un comando (Por ejemplo, queremos re-ejecutar el comando 13 tail -f /var/log/nagios3/nagios.log), pulsamos !13 y pulsamos la tecla intro.  Veremos pues como se desplega la instrucción que corresponde al comando que acabamos de ejecutar:


Siempre, para más información, ejecutar man + comando (man history).

viernes, 2 de enero de 2015

HOW TO: CREAR BANNER DE INICIO DE SESIÓN VIA CONSOLA EN GNU/LINUX.

Figlet: Aplicación para generar banners de texto.

Como instalarlo:
1. Validar si poseemos el programa instalado:

En un consola o terminal ejecutar "aptitude search figlet" para validar (sin comillas).
Como root, ejecutar "apt-get install figlet" para instalar (sin comillas).

2. Luego de instalado el programa, crearemos el banner para que al iniciar una consola terminal en el equipo, aparezca el mensaje que configuramos:
 # figlet "NAGIOS-SRV" > /etc/motd (Entre las comillas va el nombre del mensaje que queremos colocar).
 
3. Para validar el cambio, procedemos a leer el archivo /etc/motd con el nuevo contenido:


Nota: Si queremos conservar el archivo motd original, podemos hacer el respaldo de la siguiente manera:
# cp -rfv /etc/motd /etc/motd-ORIG

Ahora, al iniciar nuevas sesiones remotas (por ejemplo vía ssh) hasta el servidor que configuramos con el banner, podemos visualizarlo:

Para opciones adicionales, consultar el man pages de figlet (# man figlet) o referencias en http://es.wikipedia.org/wiki/FIGlet