Cuando usar ls y cuando usar find

En general, a la hora de hacer scripts con listados de archivos y directorios, el comando “ls” es más que suficiente.

Sin embargo, a la hora de querer hacer un listado con la ruta completa, haciendo ls -R,  el resultado es parecido a este:

# ls -R

dir:
arch1 arch2 arch 3 arch4

Este tipo de salida, es difícil de procesar, después en los scripts.  Lo deseable es contar  con salidas:

dir/arch1
dir/arch2
dir/arch3
dir/arch4

Para conseguir esto, lo útil es usar find con un modificador de profundidad, para evitar que se listen todos los niveles de la jerarquía:

find /dir/* -maxdepth 0′

Os dejo un enlace al manual, para ver otros modificadores: http://unixhelp.ed.ac.uk/CGI/man-cgi?find

Reducir el tamaño de la particion de swap en LVM

Por defecto, la instalación de CENTOS hace unas particiones inmensas de swap, que están muy lejos del tamaño que vamos a querer usar nosotros.

Vamos a hacerlo a través de la consola.

Primero, reducimos el tamaño de SWAP, desmontando la paginación, y volviendo al estado antiguo.

swapoff -v /dev/VolGroup00/LogVol01
lvreduce  /dev/VolGroup00/LogVol01 -L 512M
mkswap  /dev/VolGroup00/LogVol01
swapon -va
cat /proc/swaps

Más información: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-swap-removing.html

vmware. Renombrando máquinas virtuales a través de vcenter

Hoy voy a hablar de ago que los de vmware tienen que pulir para próximas versiones del vcenter. Cuando se renombra una máquina virtual, sorprendentemente, los archivos y las carpetas en el datastore mantienen su antiguo nombre.

A día de hoy, la única forma que he conseguido de automatizar relativamente este problema, es:

  • Renombrar en vcenter
  • Migrar la máquina de datastore.

No es la mejor de las soluciones, pero, nos saca del apuro.

Os pongo el enlace de donde he sacado esta solución:  http;//tech.zsoldier.com/2010/05/rename-vm-without-shutting-downusing.html

Physical Review X: Call for papers march 2011

American Physical Society está lanzando su nueva revista científica abierta y con contenidos bajo licencias CC (Creative Commons). Una buena noticia para el mundo científico, ya que permitirá el acceso a la información de grupos con pocos recursos económicos.

Aparentemente, la revista se financiará a través de una tasa de publicación de artículos estimados en 1500$ para los grupos de investigación que decidan publicar en ella.

La primera recopilación de artículos será en marzo de 2011, y su primera edición, se plantea para otoño de este mismo año.

Más información: http://www.physorg.com/news/2011-01-american-physical-society.html

La gestión de los logs en bash script.

Tener trazas es vital para encontrar los problemas cuando ocurren. Y ocurren. Vamos a ver hoy como hacer una gestión de creación, trazado y borrado de logs en nuestros propios scripts.

Donde se guardan los logs

Por defecto, los ficheros de log se guardan en la carpeta /var/log/X, siendo X el programa que los generó.

En mi caso, por problemas de permisos en la máquina donde los ejecuto, los guardo en /tmp.

Crear el fichero de log

Para tener más información, mis ficheros de log contienen en su nombre qué usuario es el que generó la traza.

LOG=/tmp/$APP.$(whoami).log

Mensajes de log

Cada mensaje de log, está identificado por la aplicación que lo generó, así como la hora minuto y segundo en que se generó la línea:

function log {

echo [$APP $(date +%H:%M:%S)] $@ >> $LOG

}

El uso de esta función sería:

log ‘mensaje de prueba 1. Ejecuto en directorio’ $PWD

Sentíos libros de añadir cualquier información más a la traza.

Borrar las trazas cuando exceden de un determinado tamaño.

No se puede llenar el sistema de archivos. Sobre todo cuando es una tarea periódica que ejecuta, por ejemplo todos los días.

Por ello, antes de empezar cada ejecución yo tengo una función de validar si el log ya existe, y, si excede un determinado tamaño, se borra y se empieza uno nuevo

function openLog {

LOG_LOG=$1

LOG_APP=$2

# If log is bigger than maxsize, delete it

if [ -e $LOG_LOG ] ; then

SIZE=$(stat -c %s $LOG_LOG)

if [ $SIZE -gt $MAXSIZE ] ; then

echo ‘borrando log’

rm -rf $LOG_LOG

fi;

fi;

# Create log if it doesn’t exist.

if [ ! -e $LOG_LOG ]; then

touch $LOG_LOG

fi;

}

# Create log if it doesn’t exist.

if [ ! -e $LOG ]

touch $LOG

}

Conclusiones

Es, por tanto, necesario comenzar siempre la ejecución de nuestros script abriendo el fichero de log, que lo creará si no existe o lo borrará si es demasiado grande.

Sentíos libres de utilizar y mejorar estas funciones ampliando su funcionalidad o la cantidad de información que vuelcan al sistema.

No a la ley sinde

Mañana, de nuevo llega la ley sinde al congreso. Esta vez llega ratificada por el senado y el gobierno ya ha recabado los suficientes apoyos para aprobarla.

Desde aquí, queremos manifestarnos en contra de la mal llamada “ley de economía sostenible” que no es más que la encapsulación de medidas que no nos van a hacer más sostenibles, ni nos van a llevar al crecimiento, pero sí nos van a hacer menos libres.

No a la ley de economía sostenible.

No a la ley antidescargas

Cambiar la IP de un servidor ESX

Recién instalado un ESX 4.1 sobre un blade, tenemos que revisar toda la configuración de red. Para que el servidor de DHCP rellene de forma automática la configuración de DNS, dejamos durante la instalación que coja los valores de DHCP.

Ahora, en el primer reinicio, cambiamos los valores de la interfaz de red con el comando:

esxcfg-vswif -i ADDR -n NETMASK INTERFACE

Además, en mi caso, aprovechamos para cambiar el nombre de la máquina. En el archivo /etc/sysconfig/network añadimos una linea:

HOSTNAME=hostname

También en este fichero es donde se debe configurar la información del gateway.

Recordad que los cambios hechos con el comando ‘hostname’ sólo duran hasta el siguiente reinicio.

Para más información: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=4309499

VMWare: VMA. Virtual

No sé si conoceréis la máquina virtual VMA de Vmware para gestión de ESX desde una única máquina virtual. Deja hacer gestión integrada de distintos ESX, guarda las credenciales de acceso a los distintos Host,  y viene cargado con los componentes para hacer scripts de gestión a través de la API en perl.

Os dejo el enlace para que la bajéis para hacer pruebas: http://www.vmware.com/support/developer/vima/

Para las credenciales usa una capa llamada “FASTPASS” que se encarga de las conexiones con los distintos ESX. Para añadir hosts a FastPass:

sudo vifp addserver HOST
sudo vifp listservers
Usuario root
El usuario de root está deshabilitado por defecto. Para habilitarlo, es necesario cambiar la consola de inicialización de usuario desde /bin/nologin a /bin/bash.

Lo mínimo indispensable para depurar un script en perl

“Yo no quiero saber perl. No quiero desarrollar nada nuevo. Sólo quiero depurar un script “

Aquí está lo mínimo para ser capaces de depurar en poco tiempo un script. Para empezar, para lanzar el script usamos el flag -d:

perl -d SCRIPT

Una vez dentro del depurador, observamos que se parece muchísimo al gdb. Aquí está lo mínimo para ser capaces de depurar con cierta soltura:

  • q: quit
  • l: lista n lineas
  • n: next
  • s:step. Ejecuta la siguiente línea sin entrar en el propio código.
  • p: print. Imprime los valores de las variables.