Indentar archivos con VIM desde consola

Primero creamos una macro donde quedará grabada la secuencia de teclas:

vim -w indent.macro archivoquesea.cc

Escribimos directamente gg=G:wq y le damos a Enter. Esto creará el archivo indent.macro

Para usar esta macro sobre un archivo: vim -s indent.macro archivoaindentar.cc

Podemos crear un script (por ejemplo indent.sh) para que indente los archivo que querramos:

#!/bin/bash

array=(*.cc *.hh)

for filename in "${array[@]}"; do
    vim -s indent.macro "$filename"
done

Fuentes: http://stackoverflow.com/questions/3218528/indenting-in-vim-with-all-the-files-in-folder
http://www.cyberciti.biz/faq/bash-for-loop-array/

Usar Bitlbee para conectar a GTalk desde irssi

Doy por supuesto que ya existe una instalación de irssi, por tanto, instalamos Bitlbee con aptitude install bitlbee

Por defecto el daemon escucha en el puerto 6669. Si queremos cambiarlo, se modifica en /etc/default/bitlbee. Si lo cambiamos, reiniciamos bitlbee con /etc/init.d/bitlbee restart

Ejecutamos irssi y conectamos a bitlbee: /connect localhost 6669
Nos abrirá el canal &bitlbee donde se podrán ejecutar los comandos (help commands para verlos)
Elegimos el nick que queremos (si no lo tenemos ya) con /nick nick_deseado. Hecho esto, nos registramos con register clave_deseada y nos identificamos con identify clave_de_antes

Para automatizar la conexión y la identificación, haremos lo siguiente dentro de irssi:

/network add bitlbee
/server add -auto -network bitlbee localhost
/channel add -auto -botcmd '/say identify clave_de_antes' &bitlbee bitlbee
/save

Para añadir una cuenta GTalk usaré la autenticación OAuth2, así no aparecerá nuestra clave GTalk en ningún archivo:

account add jabber nuestro@gmail.com
account gtalk set oauth true
account gtalk on

Se nos abrirá un privado en irssi con una URL para la autenticación Oauth2. Sólo hay que seguir los pasos para darle permisos a bitlbee.

Con esto ya tenemos nuestra cuenta GTalk activada. Para algunas configuraciones adicionales (away, resource, etc) se pueden ver con account gtalk set

Fuentes: http://linuxclues.blogspot.com.es/2012/09/bitlbee-gtalk-twitter-introduction.html
http://510x.se/notes/posts/Install_and_setup_BitlBee

Convertir archivos .rrd a diferente arquitectura

Hace poco cambié mi servidor de Debian 32bits a Debian 64bits. Cuando pasé los archivos .rrd de un servidor a otro, vi que daba un error: This RRD was created on another architecture

Para solucionarlo hay que exportar los datos de la vieja arquitectura e importarlos en la nueva.

Exportamos, estando en el directorio donde están los .rrd:

for i in *.rrd;do rrdtool dump $i $i.xml;done

Eviamos los archivos .xml al nuevo servidor y los importamos (ojo con las comillas esta vez):

for i in *.xml; do rrdtool restore "$i" "${i%.xml}"; done

Fuente: http://askaralikhan.blogspot.com.es/2011/08/error-this-rrd-was-created-on-another.html

Añadir un nuevo disco a una máquina virtualizada con KVM

NOTA: sólo válido para discos con bus virtio

Como indicaba en otro post, hago backups de las máquinas virtuales con pigz. Para que los backups sean de poco tamaño, lo mejor es tener un volumen lógico de poco tamaño para los archivos del sistema de la máquina virtual y luego añadir otro LV de gran tamaño y montarlo dentro de la VM.

Si ya tenemos la VM y queremos añadir un nuevo disco para tener más capacidad y que no afecte al backup, crearemos un nuevo volumen lógico de 100GB para usarlo dentro de la VM:

lvcreate -L100G -ndebian-mnt vg0

Crearemos un archivo XML indicando los parámetros que serán pasados con virsh a la VM:

vi /tmp/disconuevo.xml
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vg0/debian-mnt'/>
<target dev='vdb' bus='virtio'/>
</disk>

Ahora, incluso con la VM corriendo, se puede añadir este disco en caliente:

virsh attach-device --persistent Dominio /tmp/disconuevo.xml

--persistent hace que se modifique el Dominio permanentemente con este nuevo disco.

Fuente: http://serverfault.com/questions/457250/kvm-and-libvirt-how-do-i-hotplug-a-new-virtio-disk

Soporte GeoIP para iptables

Si quieremos controlar nuestro firewall en función del país de las conexiones, debemos hacer lo siguiente (esto está hecho en Debian Wheezy):

apt-get install xtables-addons-common libtext-csv-xs-perl unzip
mkdir -p /usr/share/xt_geoip
cd /usr/lib/xtables-addons
./xt_geoip_dl
./xt_geoip_build -D /usr/share/xt_geoip *.csv

Ahora podremos crear las reglas que querramos, como por ejemplo la siguiente:

iptables -I INPUT -p tcp --dport 22 -m geoip --src-cc GB -j DROP

Fuente: http://www.spinics.net/lists/netfilter-devel/msg23799.html