Linux

Programando Crones en menos de 1 minuto

Saturday, May 8th, 2010

Hace un tiempo publiqué un post donde enseñaba los conceptos y usos básicos para programar tareas con crontab, en ese post expliqué que la fracción mínima para ejecutar un cron era de 1 minuto. Ahora, ¿qué sucede si tenemos que ejecutar ciertas tareas en fracciones de segundos dentro de esa unidad mínima de 1 minuto? ¿Se puede realizar? Si, claro que si!

El cron básicamente seguirá corriendo cada un minuto, pero lo que haremos para fraccionar la tarea, será crear un pequeño script en sh que podrá ser algo parecido a esto, donde contaremos las veces deseadas (0 a 5), correremos el comando (en este caso un simple echo con date para ver si efectivamente lo hace cada 10 segundos)  y luego fijaremos el tiempo donde no se realizará nada con sleep. Haz cambios a este código reemplazando los valores y comandos y ya podrás ejecutar una tarea programada en menos de 1 minuto.

#!/bin/sh
for (( z=0; z< =5; z++ ))
do
echo "print cada 10 segundos" && date
sleep 10
done

Nota: la segunda línea del script debe ir “z< ” y “=5” juntos, por alguna razón el plugin de syntaxis no me interpreta bien ciertas expresiones en sh desde el HTML y añade un espacio.

Luego de tener el script listo y personalizado, basta con colocar la siguiente línea en los crones de root o del usuario que sea:

* * * * * sh /ruta/al/script.sh

Bucle For en Bash

Friday, May 7th, 2010

Cómo hacer un bucle/loop for en bash

Un ‘bucle‘ es una declaración lenguaje de programación que permite que el código se ejecute en varias ocasiones hasta que la condición asignada a dicho bucle deje de cumplirse. En los sistemas Unix y derivados, contamos con el poderoso shell bash y su correspondiente lenguaje de scripting, el cual nos permite automatizar casi cualquier tarea en nuestro sistema. Tener conocimientos correctos sobre el uso de bucles y bash scripting, es fundamental para desarrollar soluciones rápidas en todo sistema.

Este ejemplo es muy simple pero servirá para mostrar el nivel de utilidad y practicidad que tiene el uso de for desde la línea de comandos. Tomemos el ejemplo de que los usuarios de un sistema se ubican en su lugar estándart /home, en este caso queremos realizar un backup de cada home de los usuarios, lo más práctico y rápido sería hacerlo de esta forma:

cd /home
for i in *; do tar -cvpzf respaldo-$i.tar.gz $i; done

El resultado:

[root@vostrolan home] ls -lah *.tar
-rw-r--r--. 1 root root 8.0M 2010-05-07 08:58 respaldo-lighttpd.tar
-rw-r--r--. 1 root root  41M 2010-05-07 08:58 respaldo-webtech.tar
[root@vostrolan home]

Otro ejemplo es tomar información de un archivo para ser interpretada como $i en el for. Supongamos que tenemos un archivo llamado lista.txt con nombres de usuario que tienen que ser creados en el sistema, la lista se vería como algo similar a esto:

[root@vostrolan ~] cat lista.txt
juan
pedro
luis
daniel
esteban
[root@vostrolan ~] for i in $(cat lista.txt); do useradd $i; done

Si nos fijamos, el for tomó el valor de cada línea del archivo especificado a través de cat y fue pasado como variable para crear usuarios de sistema:

[root@vostrolan ~] tail -5 /etc/passwd
juan:x:503:504::/home/juan:/bin/bash
pedro:x:504:505::/home/pedro:/bin/bash
luis:x:505:506::/home/luis:/bin/bash
daniel:x:506:507::/home/daniel:/bin/bash
esteban:x:507:508::/home/esteban:/bin/bash
[root@vostrolan ~]

Estos son ejemplos básicos del uso del uso de for en la línea de comandos. Sin embargo, un uso más extendido puede hacerse al implementarlo en shell scripts con condicionantes como if, case, etc, lo dejo a la imaginación de cada uno.

Comprobar DNS reverso en Linux

Saturday, May 1st, 2010

Existe una forma muy fácil de comprobar como responden los DNS reversos de cada IP que se nos ocurra, esto aplica a las IPs principales como adicionales de cualquier sistema unix like, lo haremos mediante el comando “host”:

[webtech@vostrolan ~]$ [webtech@vostrolan ~]$ host 174.133.182.50
50.182.133.174.in-addr.arpa domain name pointer srv325.infranetworking.com.
[webtech@vostrolan ~]$

Como instalar phpMyAdmin

Thursday, November 13th, 2008

Como Instalar phpMyAdmin.

phpMyAdmin es una herramienta programada en PHP que nos permite a través de una página web administrar bases de datos MySQL. Hoy en día casi todos los proveedores de Hosting poseen paneles de control que ya incluyen esta utilidad por defecto. ¿Pero qué pasa cuando estamos en un servidor sin panel, o bien con un panel precario que no incorpora esta herramienta? Esta guía pretende instalar y configurar de forma fácil y rápida phpMyAdmin en tu servidor Linux.

# Primero posiciónate en un directorio público de tu servidor web.
# Descargamos el paquete desde http://www.phpmyadmin.net/home_page/downloads.php, ejemplo:
wget http://ufpr.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-3.1.0-beta1-all-languages.tar.gz
 
# Descomprimimos y renombramos
tar -xpzf  phpMyAdmin-3.1.0-beta1-all-languages.tar.gz
mv phpMyAdmin-*/ myadmin/
 
# Configuramos método de autenticación
# Editamos el archivo de configuración, y elegimos método 'http'
cd myadmin/
pico config.sample.inc.php
 
# Una vez estés dentro del archivo, busca esta cadena:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
 
# Reemplaza el valor de 'cookie' por 'http', por lo que se vería así:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
 
# Movemos el archivo de configuración para dejar todo listo
mv config.sample.inc.php config.inc.php

Listo, tenemos phpmyadmin instalado y configurado para autenticar en base a usuarios MySQL existentes en el sistema, usa cualquier usuario de mysql y password asignado para conectar, debería ir bien desde http://url/myadmin/

Debian Lenny… ho ho!

Friday, May 2nd, 2008

Luego de haber usado durante 1 año la versión 7.04 de Ubuntu, procedí a actualizar mediante el gestor de actualizaciones y pude subir a 8.04. Lamentablemente esta versión me trajo muuuuchos problemas, se colgaba tanto o más que un Windows, así que se pueden imaginar. Fue un release muy prematuro, lleno de bugs y horrores por doquier.

Caliente, me decidí a instalar Debian Lenny y la verdad estoy encantado :D , cero cuelgues y una extraordinaria velocidad, instalación totalmente limpia desde internet con el formato netinst de 100 y pocos MB desde un DVD (no tenía CDs cuando lo quemé, se que es un desperdicio!).

Al ser un notebook (Dell Vostro 1500) el equipo donde lo instalé supuse que iba a tener problemas con los drivers, todo el hardware fue detectado perfectamente, incluso la tarjeta wireless integrada Broadcom así como la red alternativa de cable, video sin problemas y con altas resoluciones. Pero el sonido me dio problemas, bastantes, hasta que llegué a la solución, compilar todo a mano. Corremos los siguientes comandos para preparar el entorno, descargar y compilar:

aptitude install build-essential module-assistant
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.16.tar.bz2
tar xvfz alsa-driver-1.0.16.tar.bz2
cd alsa-driver-1.0.16/
./configure && make && make install

Configuramos como paso final, cuando nuestra tarjeta sea detectada y damos siguiente con el comando:

alsaconf

Reinicia tu PC, o bien gdm y alsasound desde /etc/init.d/

Por ahora, bueno Debian.. vamos a ver más adelante como se comporta ante mis pruebas de estress :D