Bienvenidos

Hoy 14 de noviembre de 2007, aprovechando que tengo cosas mejores qué hacer -pero infinitamente más aburridas- he decidido lanzar finalmente Gheesh.org.

Aquí encontraréis principalmente una colección de "recetas" informáticas que confío os sean de utilidad. También incluiré algunas cosillas más que resulten interesantes, graciosas, o que simplemente me dé el punto y copie/pegue de algo que acabe de leer por Internet (eso sí, intentaré citar siempre la fuente, que no me gusta ponerme medallas ajenas ;-).

Gracias a todos aquellos que participasteis en el regalo del dominio. Gracias especialmente a Itnas por haberme animado a ello y por diseñar el logo de la página (usando software libre, claro).

Copias de seguridad

Las siguientes líneas de código permiten hacer una copia de seguridad de una base de datos MySQL:
 /usr/bin/mysqldump -u root -p basededatos -c | gzip -c > /var/backups/db.sql.gz
Restaurar:
 gzip -dc /var/backups/db.sql.gz | mysql -u root -p basededatos

Para hacer copia de un repositorio Subversion:
 svnadmin dump /var/lib/svn | gzip -c > /var/backups/svn_dump.gz
Restaurar:
 svnadmin create /var/lib/svn/
 gzip -dc /tmp/carmen_svn_dump.gz | svnadmin load /var/lib/svn/

Instalación de las VMware tools en una máquina virtual Debian

Paquetes necesarios:

  • linux-headers-versión (NOTA: este paquete instalará como dependencias la versión de GCC que se debe usar para compilar módulos, p. ej.: gcc-4.1)
  • make

Ejecutamos "Instalar VMware Tools" desde el menú de VMware en el host y seguimos los siguientes pasos en el guest:

Clonar una máquina Linux

Supongamos que tenemos una máquina Linux correctamente instalada y funcionando. Sería muy útil disponer de una copia completa y exacta para poder restaurarla en caso de fallo o para copiar una misma configuración en varias máquinas.

El proceso para conseguirlo sería el siguiente:

  1. Reiniciamos la máquina desde un LiveCD, por ejemplo Knoppix
  2. Montamos la partición que contiene el sistema (por ejemplo, /dev/hda1): mount /dev/hda1 /mnt

Rechazar ataques por SSH usando DenyHosts

Si tenéis una máquina Linux corriendo SSH conectada de forma permanente o casi permanente a la red y examináis el contenido del fichero /var/log/auth.log (las líneas contienen el identificador "sshd") veréis que hay numerosos intentos de conexión a este servicio desde IPs desconocidas.

Aparte de las medidas habituales como usar claves seguras o, mejor aún, permitir el acceso ssh únicamente mediante certificados, también podéis usar un programa llamado DenyHosts que examina los registros del sistema e impide el acceso a aquellas IPs que se comporten de forma "sospechosa". En Debian y Ubuntu el programa se encuentra disponible dentro del paquete denyhosts.

Instalando sólo lo justo con apt-get

Desde hace algún tiempo en Debian (concretamente desde el 23 de octubre de 2007 que salió la versión 0.7.7) el programa apt-get instala los paquetes recomendados junto con las dependencias. Para los que nos gusta mantener el sistema con lo mínimo posible, esta opción puede ser desactivada añadiendo la siguiente línea al fichero /etc/apt/apt.conf o creando un fichero independiente dentro de /etc/apt/apt.conf.d/:

APT::Install-Recommends "false";

Reparación de tablas en MySQL

Si alguna vez aparece un error (en una página PHP, en un script del sistema, en un correo de cron, etc.) indicando que una tabla de MySQL está corrupta, la siguiente instrucción la reparará:

REPAIR TABLE tabla USE_FRM

Este código se puede ejecutar desde línea de comandos o desde una interfaz tipo Phpmyadmin.

Conversión de ficheros de vídeo para Nintendo DS

El programa MoonShell permite reproducir vídeos en formato DPG (una variante de MPEG-1) en la consola portátil Nintendo DS. El propio programa viene con un conversor de ficheros de vídeo a dicho formato, pero desgraciadamente éstos no funcionan en Linux.

Hace poco encontré DPGConv, un pequeño script escrito en Python y que hace uso de MEncoder y mpeg_stat para producir ficheros con este formato.

Scripts en bash con espacios

Un pequeño script en Bash como el siguiente:

for i in ../*zip; do unzip $i; done

falla si dentro del directorio hay nombres de fichero con espacios. La forma de evitarlo es sustituir la variable IFS (separados de campos) y hacer que tome sólo los cambios de línea. Para ello, hay que añadir la siguiente línea al principio del script:

IFS=$'\n'

o

export IFS=$'\n'

si estamos en una shell interactiva.

Cambiar el resaltado de sintaxis en Vim dependiendo del directorio

Problema: Se tienen numerosos fragmentos de configuración dentro de un directorio (p. ej., /etc/apache2) y se editan desde línea de comandos usando Vim. Sin embargo, Vim no reconoce dichos ficheros de configuración como lo que realmente son y no resalta su sintaxis (lo cual convierte la tarea de editarlos en un auténtico coñazo).

Solución: Añadir la siguiente línea al fichero ~/.vimrc:

autocmd BufRead,BufNewFile /etc/apache2/* set syntax=apache

Distribuir contenido