Archivo de la categoría: Command Line

kpartx: Montar las particiones de un archivo imagen de disco

[spanish]A veces resulta útil poder montar las particiones de un archivo con la imagen completa de un disco, por ejemplo de un programa de backup (o un dd) o de una máquina virtual, sin tener que recurrir a ese software de backup o VM. Estos ficheros normalmente son una copia bit a bit de lo que debería haber en el disco real, por lo que el formato interno tanto de la tabla de particiones como de las particiones en sí son los normales que el sistema entiende y debería poder utilizarlos. El único problema es que ni la imagen ni las particiones están accesibles a través de un fichero de dispositivo de bloques en /dev para poderlas montar.

kpartx es un pequeño programa que hace precisamente eso, detecta las particiones que pueda haber en una imagen de disco y genera en /dev los mapeos necesarios para poder montarlas como si fueran particiones en un disco real. Es muy sencillo de usar: se le pasa el nombre del fichero y muestra la lista de particiones. Si se le añade el parámetro -a crea los dispositivos; si -d, los borra. mount.

Vaya mi agradecimiento a esta página, que es donde he sabido de la existencia de kpartx. Además ahí explican cómo hacer lo mismo pero a mano, detectar los inicios de cada partición y utilizar el “loop device” para acceder a ellas y montarlas.[/spanish][english]Sometimes it is useful to mount the partitions in a disk image file, e.g. from a backup (or dd) or a virtual machine, without having to use that backup or VM software. These files are usually a 1:1 copy of what should be on an actual disk, so the internal partition table format is the same the operating system would use on a disk and also the format of the partitions themselves are ext2/3/FAT/whatever. So the system should be able to use them, the only problem is that neither this image file nor its partitions are mapped to proper block device files in /dev.

Enter kpartx, a small utility that analyzes a disk image file, detects the partitions in it and creates device files for each partition, so that they can be mounted as if they were real partitions on a physical disk. Usage is very simple: just pass the file to it and kpartx shows the partition table. Add the -a parameter to that and kpartx creates the device files; -d and it deletes them. mount.

Kudos to this page where I learnt about kpartx, and which by the way explains a way to manually map the partitions using the loopback interface. [/english]

find -empty,borrar directorios vacíos

[spanish]El comando find tiene una opción –empty que detecta directorios o ficheros vacíos (0 bytes). Esto se puede utilizar para borrar o localizar todos los ficheros o directorios vacíos en una ruta determinada:[/spanish]

[english]The find command has an –empty option which detects empty directories of files (0bytes). This is useful if you need to locate or remove empty directories or files from a directory structure:[/english]

find /path/ -type d -empty -exec rmdir {} ;
find /path/ -type f -empty

Mantener las sesiones SSH abiertas

[spanish]A veces las sesiones SSH se cierran. En el trabajo normalmente tengo abiertas varias con distintos servidores, y según la configuración de algún router/firewall por el camino, hay sesiones TCP que se pierden con lo que la sesión SSH se cierra a los pocos minutos de inactividad y toca volver a abrirla.

Para evitarlo se puede indicar a sshd que implemente una especie de keepalive que evita que se cierre la sesión TCP, incluyendo estas opciones en el fichero sshd_config del servidor:[/spanish]

[english]Sometimes SSH sessions die. At work I usually have several ssh sessions with a number of servers, and depending on the configuration of some intermediate router/firewall some TCP sessions get closed after a little while, the SSH sessions die and you have to log back in again.

To prevent this you can instruct sshd to implement some kind of keepalive mechanism preventing the TCP sessions from dying, by including these options on the sshd_config file:[/english]

KeepAlive yes
ClientAliveInterval 60

Captura de cabeceras HTTP en tiempo real

[spanish]Algunas personas me llaman friki por hacer cosas como esta, analizar una captura de tcpdump con strings y grep:[/spanish]

[english]Some people call me a freak because of doing things like this, analyzing a tcpdump capture with strings and grep:[/english]


tcpdump -i any -p -s 0 -w - "port 80" | strings | grep -E "^(GET|POST|HEAD|[a-zA-Z-]+:) "

:-D