Script de copia y restauración de un sistema windows

Imagino que todos los sysadm/informaticos de este mundo hemos sufrido alguna vez el caso del “Amigo informatico“.

En mi caso últimamente, después de usar muchas veces ghost, he decidido cambiar… Nada de dar un dvd con la imagen, que para eso tenemos toneladas de gigas de espacio en disco y si el usuario se queja, pues mira, habérselo pedido a otro.

Partiendo de esto, he decidido hacer un script tipo menú de instalación con las opciones mínimas y que sea fácilmente gestionable por el usuario final.

El preparación es simple:

  • Se particiona el disco.
  • Instalamos windows
  • Instalamos un linux “minimal”, y dependencias necesarias para que el script funcione
  • Añadimos nuestro script.
  • Modificamos los parámetros de configuración necesarios en el mismo
  • Creamos un usuario de sistema sin privilegios, modificamos ~/.bashrc para lanzar automáticamente el script cuando se logue el usuario.
  • Deshabilitamos la posibilidad de salir del script (trap) para evitar problemas.
  • Nos guardamos el pass de root ;-)
  • Modificamos grub para que el menú diga algo como Restore or similar y el usuario no se asuste viendo GNU/Linux
  • Informar al usuario de como funciona el entorno, aunque es muy muy sencillo)

Con eso y generar nosotros mismos la primera imagen que será imborrable (desde el script), ya estaría todo.

El funcionamiento es mucho más simple aún:

  1. Restaurar imagen
  2. Generar Imagen
  3. Borrar Imagen
  4. Listar Imágenes
  5. Ayuda
  6. Reboot

No deberían añadirse muchas más opciones, cuanto menos se pueda hacer, mejor.

Las ventajas son bastante óbvias:

  • El propio usuario se gestiona sus imágenes, por lo que cambio de sistema windows (de xp a 7 por ejemplo), no deberían necesitar más ayuda.
  • El script debería funciona en cualquier linux mientras se cumplan las deps.
  • El backup “va contigo”, no hay discos adicionales.

Y las desventajas:

  • Espacio en disco
  • Que se carguen grub
  • Que alguna vez falle el ntfsclone (FAIL!)

Por supuesto puede que el script no esté libre de fallos, por ejemplo, no consigo hacer trap de “CONTROL+Z” aunque haga trap de todas las señales. Aunque probado está ;-)

El script está documentado en la wiki.

Actualizado: Blacklist de ips mediante apache

Hola,
He estado modificando el filtro de ip’s y os pongo el código de un pequeño script para generar un fichero legible por apache que simplemente basta con hacer un include del mismo:

#!/bin/bash
REMOTE_BLACKLIST="http://www.ciberterminal.net/blog/blacklist.list"
BLACKLIST_BANNER="http://www.yourdomain.com/banned_ip.html"
build_apache_list()
{
   local APACHE_BLACKLIST="/etc/httpd/conf.d/blacklist.conf"
   local TMPFILE="/tmp/blacklist.tmp"
   wget "$REMOTE_BLACKLIST" --output-document=$TMPFILE
   echo 'Rewritecond %{REQUEST_URI}     !^/blog/banned_ip.html$' > $APACHE_BLACKLIST
   for i in $(cat $TMPFILE)
   do
      echo "RewriteCond %{REMOTE_ADDR}     $i [OR]" >> $APACHE_BLACKLIST
   done
   echo "RewriteCond %{REMOTE_ADDR}     1.1.1.1" >> $APACHE_BLACKLIST
   echo 'RewriteRule ^(.*)$     $BLACKLIST_BANNER [R,L]' >> $APACHE_BLACKLIST
}
build_apache_list


Esto genera un fichero que se ha de incluir en la configuración de vuestros vhosts mediante:

Include /etc/httpd/conf.d/blacklist.conf

Logicamente, hay que generar un bonito html que la gente vea y en el dudoso caso que sus intenciones no fuesen hostiles… podríais desbanear.

Scripts para MySQL [Actualizado]

He colgado en la wiki un par de scripts para el uso diario de mysql :D
El primero lo podrá usar toda aquella persona que use full dumps de mysql (--all-databases) y tenga la mala suerte de tener que recuperarlo, por que para el que lo haya intentado es un festival ;)

El script es bastante “agresivo” a nivel de proceso, no he puesto nice, es algo a tener en cuenta si el server está en producción, le va a meter una buena leche…

El segundo es para precisamente, evitar tener que dividir un dump de mysql de 4gb, es un pequeño script para realizar backups:

Lo he actualizado añadiendo unos puntos para recuperar el backup y controlar la generación de binlogs (salvaguardar el espacio en disco)

Como siempre se aceptan sugerencias :)