Category: linux


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)

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.

Recetas para tcpdump

Siempre se me olvida la sintaxis de tcpdump, así que apunto por aquí unas recetas útiles:

http://danielmiessler.com/study/tcpdump_recipes/

Imagenes listas para usar en VirtualBox

virtualization-servers-datacenter. La gente que trabajamos en sistemas muchas veces necesitamos instalaciones concretas de sistemas operativos (una debian antigua, la versión anterior de ubuntu, un haserfroch,…). La virtualización nos ha facilitado mucho está tarea (yo tengo un par de virtuales que suelo llevar de un PC de trabajo a otro). Y para hacerlo más sencillo tenemos VirtualBox Images con un montón de instalaciones de distintos sistemas listos para usar.

Vía chivatazo de ecotecno

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


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


#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.

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

VirtualBox sin cabeza

Iep,

Otro post/notamental tecnofriki :) Justo estoy en el curro probando estas cosas, así que me apunto el howto este:

http://howtoforge.com/vboxheadless-running-virtual-machines-with-virtualbox-3.0-on-a-headless-ubuntu-9.04-server

Agur.

Ieup,

Toca mini-receta basado en el artículo de David en la web de crysol.

  1. Necesitamos un fichero setup.py. Si el software no lo trae deberemos crearlo nosotros.
  2. creamos el dir debian: mkdir debian
  3. Creamos el fichero debian/control:

  4. Source: hola-pythoneros
    Section: utils
    Priority: optional
    Maintainer: Juan Nadie <juan.nadie@loquesea.es>
    Build-Depends: debhelper (>= 5.0.38)
    Build-Depends-Indep: cdbs (>= 0.4.43), python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6)
    Standards-Version: 3.7.2
    XS-Python-Version: all


    Package: hola-pythoneros
    Architecture: all
    Depends: ${python:Depends}
    XB-Python-Version: ${python:Versions}
    Description: Ejemplo básico de script Python empaquetado en Debian GNU/Linux
    Un script "hola mundo" que sirve únicamente para explicar cómo se
    empaquetan scripts Python en GNU/Linux de forma adecuada.

  5. Creamos el rules (ojo, tiene que ser ejecutable chmod +x debian/rules):

  6. #!/usr/bin/make -f


    DEB_PYTHON_SYSTEM=pycentral
    DBK2MAN_XSL=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl


    include /usr/share/cdbs/1/rules/debhelper.mk
    include /usr/share/cdbs/1/class/python-distutils.mk

  7. Creamos el debian/changelog : dch --create

Con esto tenemos lo ultrabásico para poder compilar el paquete deb: dpkg-buildpackage

Es una manera sucia de empaquetar algo (es más una nota mental para mi que un howto) y para que el paquete sea medio decente hay que hacer muchas más cosas :) Leeros el articulo de David que es más completo.

Autenticación LDAP en WordPress

En el trabajo tenemos un LDAP como backend de usuarios. Nos pedían instalar un wordpress así que hemos tenido que mirar como integrarlo con el LDAP. La respuesta a sido sencilla:

http://wordpress.org/extend/plugins/simple-ldap-login/

Buenas,

Si queremos procesar un fichero .changes de un paquete debian es tan sencillo como:

  1. Quitarle la firma
  2. Procesar el contenido con una librería de yaml, por ejemplo syck

En código sería lo siguiente:

import os
import GnuPGInterface
import syck
 
changes_file = '/tmp/factoriapegaso-panel_0.2.6-4_amd64.changes'
 
gnupg = GnuPGInterface.GnuPG()
ciphertext = open(changes_file).read()
p2 = gnupg.run(['--decrypt'], create_fhs=['stdin', 'stdout'])
p2.handles['stdin'].write(ciphertext)
p2.handles['stdin'].close()
decrypted_plaintext = p2.handles['stdout'].read()
p2.handles['stdout'].close()
#Puede fallar por no tener la llave GPG
try:
        p2.wait()
except:
        pass
 
changes_info = syck.load(decrypted_plaintext)
 
 
print "tenemos:"
print changes_info

No es lo mas elegante del mundo, solo una prueba de concepto :)

Powered by WordPress | Theme: Motion by 85ideas.

Bad Behavior has blocked 395 access attempts in the last 7 days.