howto: integrando subversion con zentyal ( el antiguo ebox )

En el trabajo usamos bastante el software Zentyal para gestionar servidores, de hecho me saqué la certificación (otro día hablaré de eso, porque está bastante bien).

Una de las cosas que más me gusta es que usa LDAP y es sencillo de integrar con muchas apps. En etse caso os propongo una receta para integrar un repositiorio SVN con el sistema de usuarios de Zentyal. Continue reading

Formato de las entradas para cron

Otra nota mental sacado de http://www.nncron.ru/help/EN/working/cron-format.htm

* * * * * *
| | | | | |
| | | | | +-- Year (range: 1900-3000)
| | | | +---- Day of the Week (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month (range: 1-31)
| +---------- Hour (range: 0-23)
+------------ Minute (range: 0-59)

Monitorizar la entrada y salida de tu linux

El otro día en el curro teníamos un servidor medio caído por que si IO waiting era mas heavy que los Hellowen. El problema es que no sabíamos quien era el culpable. Nos pusimos a buscar la manera de dar con el y Txema nos apunto la existencia de iotop. Desgraciadamente el server corría una versión del kernel demasiado antigua y no nos sirvió de mucho. Pero bueno, es una herramienta interesante.

Recuperar RAID, LVM y GRUB desde un LiveCD de Ubuntu

Para completar la serie de artículos sería:

#Activamos el componente universe

apt-add-repository «deb http://archive.ubuntu.com/ubuntu $(lsb_release -c -s) universe»

apt-get update
#Instalamos todo lo necesario
sudo apt-get install mdadm lvm2 ssmtp

#Ensamblamos el raid, en mi caso md1 con sda1 y sdb1
mdadm --assemble /dev/md1 /dev/sda1 /dev/sdb1 #cambiar según necesidades

#activamos los volumenes lvm
sudo vgchange -a y

#Ahora montar ...
sudo mkdir /target
sudo mount /dev/mapper/raid1-root /target #Cambiar según necesidades


#Y solo queda instalar GRUB
sudo grub-install --root-directory=/target '(md1)'

OJO! La nueva Ubuntu 9.10 (karmic koala) lleva grub2! Así que si restauramos con ella con este método una instalación con grub1 podemos tener problemas.

Renombrar fotos en base a los datos exif

Desde que tengo la cámara compacta y la réflex un problema es gestionar las fotos sacadas con ambas. Normalmente uso un gestor de fotografías que me las ordena por fecha (f-spot). Pero si quiero navegar por ellas con un gestor de ficheros aparece el problema: Fotos tomadas en un mismo lugar y fecha con cámaras distintas aparecen desordenadas (por los distintos nombres de fichero). Sería útil que las fotos tuviesen los nombres en función de la fecha y hora en la que han sido tomadas y así aparezcan en la secuencia adecuada. En GNU/Linux tenemos una pequeña pero útil herramienta que nos permite hacer esto: renrot. Como su nombre indica renombra y rota la imágenes en función de los datos EXIF de las mismas.

Si no lo tenemos instalado es tan sencillo como usar apt en nuestra Ubuntu/Debian

apt-get install renrot

Primero podemos ejecutarlo con la opción dry run, que solo nos mostrará que pretende hacer sin realmente llevarlo acabo:

renrot -n %Y%m%d_%H:%M_%n --no-rotate --dry-run *

Una vez hemos comprobado que efectivamente va a funcionar como queremos podemos lanzar el comando definitivo

renrot -n %Y%m%d_%H:%M_%n --no-rotate *

Bueno, ahora a hacer la criba y procesar las fotos de vacaciones, que son 850 y me costará un rato, de momento un adelanto:

Noche estrellada en picos de europa

Chuletilla rápida de find

Sacado de:

  • Buscar y listar todos los ficheros que tengan la cadena ABC  en el directorio actual y su subdirectorios:
find ./ -name "*" -exec grep -H ABC {} \;
find ./ -type f -print | xargs grep -H "ABC" /dev/null
egrep -r ABC *
  • Buscar por extensión del directorio actual hacia abajo
find ./ -name "*.conf" -print
  • Buscar los ficheros de los usuarios mayores de 5Mb:
find /home -size +5000000c -print
  • Buscar todos los ficheros de un usuario (usando su UID) en todo el sistema:
find / -user 501 -print
  • Buscar todos los ficheros creados o actualizados en los últimos 5 minutos:
find / -cmin -5
  • Buscar todos los ficheros del usuario 20 y cambiarlos a 102
find / -group 20 -exec chown :102 {} \;
  • Buscar todos los ficheros ejecutables con suid y setgid (útil para buscar fallos de seguridad):
 find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -ldb {} \;
find / -type f -perm +6000 -ls
  • Buscar directorios en los que cualquiera puede escribir:
find / -perm -0002 -type d -print
  • Buscar ficheros en los que cualquiera puede escribir:
find / -perm -0002 -type f -print
find / -perm -2 ! -type l -ls
  • Buscar ficheros sin usuario:
 find / -nouser -o -nogroup -print
  • Buscar ficheros modificados en los últimos 2 días
find / -mtime 2 -o -ctime 2
  • Comparar 2 discos para ver si son iguales:
find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;

2 notas sobre awk

Para que no se me olvide:

Cambiar el elemento separador de campos

FS=»LOQUESEA»

Concatenar un comando del sistemas para que awk manipule su salida

BEGIN { «comando» | getline; blablabla }

Todo junto en un ejemplo

Como obtener el ultimo directorio de un path completo desde donde estamos trabajando:

dir=`awk ‘BEGIN { FS=»/» ; «pwd» | getline ; print $NF; }’`

Tengo que usar mas awk.

Colores en guiones bash

Seguramente sirvan para otras shells, pero como lo he probado en bash lo comento solopara esta. Como siempre se me olvidan las secuencias de escape de colores y demás, me he hecho un fichero que incluye todas así como unas funciones auxiliares.

Lo podéis descargar de aquí:

Para usarlo en vuestros scripts solo teneis que hacer:

. ./colorines.sh
echo -e "Esto es un texto $GREEN VERDE $NORMAL"
#o usando las funciones auxiliares...
echo "Esto es una `alert ALERTA`"