"Hablaré con el corazón abierto en palabra de voluntad
y
razón de sentimiento."
---Si quieres construir un barco, no empieces por buscar madera, cortar tablas o distribuir el trabajo. Evoca primero en los hombres y mujeres el anhelo del mar libre y ancho---

sábado, 3 de mayo de 2008

Conexión automática a la red del trabajo o a la red de casa con linux

Habitualmente utilizo en portátil tanto en casa como en el trabajo, y una de las cosas que siempre me han resultado pesadas ha sido cambiar la configuración de la red cada vez que voy a usar el ordenador en casa y volverla a cambiar para usarlo en el trabajo.

Así que un día que estaba bastante harto de hacer cambios diarios, me puse a configurar el portátil para que se conectara automáticamente a la red de casa o a la del trabajo dependiendo de donde lo conectara.

En casa me conecto por wifi a la red que tiene seguridad wep y en el trabajo por ethernet, así que necesité instalar:

  • ifplugd : monitorea si se establece link en la capa física (por ejemplo si un cable de red es conectado o si existe una asociación wireless activa).
  • guessnet : nos da herramientas para detectar a qué red estamos conectados.

¿Cómo instalarlas? Nada más fácil:

aptitude install ifplugd guessnet

Si tenéis vuestro punto de acceso con seguridad wpa tendréis que instalar también wpagui, que maneja la asociación wireless con un punto de acceso.

Una vez instalados los paquetes, modificamos el fichero /etc/network/interfaces. El mío quedó de la siguiente manera:

# /etc/network/interfaces

auto lo

iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

iface ppp0 inet ppp
provider ppp0

mapping eth?
script guessnet-ifupdown
#map default: trabajo
map timeout: 3
#map verbose: true

iface trabajo inet static
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

iface casa inet dhcp
test wireless essid C54APRA

# Si ninguna es encontrada, prueba DHCP
iface none inet dhcp


Veamos paso a paso en fichero de configuración:

auto lo

iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

Las lineas anteriores definen el localhost y lo levantan automáticamente en el inicio.

iface ppp0 inet ppp
provider ppp0

Las dos líneas anteriores definen el interfaz del modem, por si en algún momento decido usarlo.

mapping eth?
script guessnet-ifupdown
map timeout: 3

Las líneas anteriores definen que las interfaces eth? como por ejemplo eth0, eth1 ... van a ser manejadas automáticamente.

iface trabajo inet static
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

test peer address 192.168.1.1 mac 02:E0:52:EB:B6:DF

Las líneas anteriores definen que la conexión al trabajo se hace con ip estática. Y que, por decirlo de alguna manera, para determinar que nos estamos conectando a la red del trabajo comprobamos que hay un host (por ejemplo el router) con una IP y una MAC concreta.

iface casa inet dhcp
test wireless essid MICASA

Las dos líneas anteriores determinan que la conexión a la red de casa se hace mediante dhcp y para comprobar que se debe conectar a la red de casa, testeamos que existe una red con wifi con el nombre MICASA.

# Si ninguna es encontrada, prueba DHCP
iface none inet dhcp

Y, por último, las dos líneas anteriores nos sirven para que, si no encontramos la red de casa, ni la del trabajo, se pruebe a conectar por dhcp.

Recuperar datos borrados en linux: recoverjpg, magicrescue y foremost

Para la recuperación de archivos, existen para Linux muchas opciones, como por ejemplo:

  • testdisk - Escaner de particiones y herramienta de recuperación. Compatible con todas las particiones. GPL.
  • magicrescue - Recuperación de "bytes mágicos". GPL.
  • e2undel - sólo en ext2. GPL.
  • recover - Sólo particiones ext2. GPL.
  • recoverjpg - sólo para archivos jpg/jpeg. GPL.
  • foremost - Recuperación 'forense' de archivos en disco y unidades externas (cámaras...). GPL.
  • sleuthkit - DOS, BSD, Mac & Sun partitions. IBM+GPL.
  • gddrescue - Usa posibles backups del archivo para evitar errores. GPL.
Veamos dos de estas herramientas para recuperar datos borrados en linux: magicrescue y foremost. Ambas se encuentran habitualmente en los repositorios, así que, para instalarlas no tenemos más que hacer:

# apt-get install magicrescue foremost

* magicrescue.
Esta herramienta recupera una amplia gama de archivos: avi, mp3, gimp-xcf, jpg, png, doc, odt, etc...
Por cada tipo de archivo soportado tiene un archivo con receta ubicado en el catálogo /usr/local/share/magicrescue/recipes.

root@adminies:/home/miusuario# ls /usr/share/magicrescue/recipes/
avi gimp-xcf gzip jpeg-jfif mp3-id3v2 perl zip
elf gpl jpeg-exif mp3-id3v1 msoffice png

Para recuperar un archivo .zip, por ejemplo, ejecutariamos la siguiente instrucción:

# magicrescue -d /opt/tmp/ -r /usr/share/magicrescue/recipes/zip /dev/hda3

- Con la opción -d definimos el catálogo de destino de recuperación.
- Con la opción -r le decimos el recipiente que debe buscar. Por ejemplo: .zip .jpg
- El último argumento es el sitio a escanear.

* foremost.
Es un programa similar al anterior.
Podemos ver los tipos de archivos soportados haciendo un man, aunque también podemos verlo en el archivo de configuración /etc/foremost.conf.

Veamos un ejemplo para recuperar un archivo doc borrado:

# foremost -t doc -o /tmp/recuperado -i /home/usuario/apuntes

- Con la opción -t indicamos el tipo de archivo a buscar.
- Con la opcion -o indicamos el lugar donde almacenar los archivos recuperados.
- Con la opción -i indicamos el lugar a escanear

jueves, 24 de abril de 2008

Editar archivos pdf con pdftk

Pdftk es una útil herramienta que nos permite manipular fácilmente archivos en pdf en línea de comandos. Así con ella podremos hacer entre otras muchas cosas:

- Unir archivos PDF

Ejemplo: si queremos unir 2 (o más) archivos en un nuevo documento pdf

$ pdftk documento1.pdf documento2.pdf cat output documento12.pdf

Ejemplo: También podremos utilizar etiquetas para los archivos:

$ pdftk A=documento1.pdf B=documento2.pdf cat A B output documento12.pdf

Ejemplo: También podemos unir todos los archivos pdf de un directorio:

$ pdftk *.pdf cat output todos_los_pdfs.pdf



- Extraer paginas de un archivo pdf

Ejemplo: si queremos extraer las páginas 25 a 36 de un documento pdf

$ pdftk A=documento1.pdf cat A25-36 output documento_nuevo_pag_25_a_36.pdf

- Extraer paginas de múltiples PDFs en un nuevo documento:

Ejemplo: Queremos hacer un documento nuevo con las páginas 1 a 7 del documento1.pdf y la página 2 del documento2.pdf

$ pdftk A=documento1.pdf B=documento2.pdf cat A1-7 B2 output documento_nuevo.pdf

- Invertir el orden de las páginas:

Ejemplo: tenemos un pdf con 3 páginas y queremos invertir su orden

$ pdftk A=documento1.pdf cat A3-1 output documento1_inverso.pdf

- Extraer por separado todas las páginas de un pdf:

$ pdftk documento1.pdf burst

nos crea archivos con nombres pg_0001.pdf, pg_0002.pdf, etc

- Cifrar un pdf a 128-Bit y controlar todos los permisos (por defecto):

$ pdftk documento.pdf output documento.128.pdf owner_pw foopass

- Lo mismo que el anterior, pero requerir una password para abrir el documento:

$ pdftk documento.pdf output documento.128.pdf owner_pw foo user_pw password_que_quieras

- Lo mismo que el anterior, pero permitir la impresión del documento:

pdftk documento.pdf output documento.128.pdf owner_pw foo user_pw password_que_quieras allow printing

- Lo mismo que el anterior, pero permitir copiar la información:

pdftk documento.pdf output documento.128.pdf owner_pw foo allow copycontents

- Lo mismo que el anterior, pero permitir copiar e imprimir la información:

pdftk documento.pdf output documento.128.pdf owner_pw foo allow copycontents printing

- Descifrar un PDF:

$ pdftk secured.pdf input_pw foopass output unsecured.pdf

- Combinar dos archivos pdf cuando uno esta cifrado (la salida no lo estará)

$ pdftk A=cifrado.pdf documento.pdf input_pw A=foopass cat output combinado.pdf

- Obtener un informe sobre los metadatos, marcadores y etiquetas de página de un pdf

$ pdftk documento.pdf dump_data output informe.txt

Sin olvidar uno de los más útiles:

$pdftk documento.pdf background fondo.pdf output resultado.pdf

Te permite usar el documento fondo.pdf como fondo del documento (para insertar logos, marcas de agua, etc)

Referencias:

man pdftk

viernes, 11 de abril de 2008

Cero Tecnologia

Hoy no quiero hablar de tecnologia sino mas bien de esos maricones de los denominados emos
jajajaja pinches mariconsitos queriendose creer suicidas

por eso yo ser "ANTI-EMO"

viernes, 28 de marzo de 2008

Hacer un backup MySQL con CRON en Linux

ya tenia un buen rato que no posteaba por aca bueno ni pex

Es siempre bueno realizar un backup de nuestras bases de datos en caso de algún fallo, perdida o error humano (que es lo que más suele ocurrir). Como ya muchos saben Linux posee una herramienta llamada CRON el cual permite ejecutar tareas repetitivas periodicamente.

Script de backup MySQL

amos a crear una carpeta para guardar el backup que vamos a generar, esta carpeta la puedes crear donde quieras, yo personalmente la creé en mi directorio raíz pero lo puedes crear donde quieras:
saser@saser# mkdir /respaldosql

En nuestro editor de texto favorito escribimos el script que hará el
backup de la bases de datos que tengamos en nuestro servidor de MySQL:

#!/bin/sh
mysqldump -uroot -ppwd --opt db1.sql > /respaldosql/db1.sql
mysqldump -uroot -ppwd --opt db2.sql > /respaldosql/db2.sql
cd /home/usuario/respaldosql/
tar -zcvf respaldosql_$(date +%d%m%y).tgz *.sql
find -name '*.tgz' -type f -mtime +2 -exec rm -f {} \;
Guarda este script con el nombre mysqlrespaldo.sh (o el nombre que más te parezca) en donde quieras, yo tengo una carpeta llamada scripts en mi directorio home, es a gusto de cada quien.

Vamos a analizar el script línea por línea: la primera línea #!/bin/sh simplemente le indica al bash que es un script ejecutable y donde va a buscar el bash que va a utilizar para ejecutar este script en este caso /bin/sh.

La segunda línea es la que hace todo el trabajo, mysqldump es un comando que “vuelca” o copia todos los datos que estén dentro de la base de datos que le indiquemos en la línea de comandos, las opciones son las siguientes:

  • -u es para indicar el usuario en este caso es root pero puede ser cualquier otro usuario que tenga privilegios sobre la base de datos
  • -p es para indicarle el password aquí tienes que colocar el password del usuario que estás utilizando para conectarte en la base de datos.
  • –opt db1 aquí indicamos cual es base de datos que queremos que copie en este caso db1
  • el operador > redirecciona la salida del comando hacia un archivo llamado db1.sql en una carpeta llamada respaldosql.

La línea que sigue hace exactamente lo mismo que la primera pero con otra base de datos llamada db2, puedes agregar tantas base de datos como quieras a este script.

Después cambiamos al directorio de respaldo donde acabamos de crear los archivos db1.sql y db2.sql con cd /respaldosql/ y comprimimos todos los archivos en uno solo con su respectiva fecha con el comando date, esto es para tener un respaldo anterior y saber cuando lo hicimos, es útil en caso de que por alguna razón queramos un respaldo viejo.

La última línea es opcional, lo que hace es buscar todos los archivos comprimidos que tengan más de 2 días y los elimina, esto es para evitar que se nos acumulen archivos antiguos, puedes cambiar con que frecuencia quieres borrar estos archivos puedes utilizar man find para mayor información.

Muy bien ahora tenemos nuestro script listo lo primero es hacerlo ejecutable:

saser@saser#chmod 700 mysqlrespaldo.sh

Añadiendo el Script a CRON

Como ya mencioné anteriormente CRON es una herramienta que posee Linux para ejecutar programas o scripts en forma repetitiva. Para modificar la tabla de cron ejecutamos el siguiente comando en nuestro shell:

crontab -e

Se abrirá el crontab en nuestro editor de texto por defecto aquí agregamos la siguiente línea y guardamos nuestro archivo:

0 1 * * * /home/usuario/scripts/mysqlrespaldo.sh

Guardamos nuestro archivo y ya está listo para ejecutarse diariamente, vamos a explicar un poco como funciona (recuerda colocar en /home/usuario/scripts la ruta donde guardaste tu script).

El archivo de crontab tiene la siguiente estructura de izquierda a derecha:

  • Minutos (rango de 0-59)
  • Horas (0-23)
  • Día del mes (1-31)
  • Mes (1-12)
  • Día de la semana (0-6 siendo 0=Domingo)
  • Path completo al script o programa que queramos ejecutar

Cualquier campo con * quiere decir que se corre a cualquier posible valor de ese campo. Así que en nuestro caso el script correrá todos los días a la 1:00 de la madrugada.

martes, 1 de enero de 2008

Creación de la imagen (Imagemagick) GRUB/Splash

la puedes hacen el el sperpoderoso GIMP o
buscar la imagen que mas te agrdae y aplicarle el siguinte comando



convert pictureXXX.jpg -resize 640x480! -colors 14 -depth 8 ImageName.xpm.gz




y lo unico que te queda es copiarla a


#cp ImageName.xpm.gz /boot/grub/


y modificar en el


#vim /boot/grub/menu.lst


agrgarle lo siguiente onde queiras


"splashimage=(hd0,2)/boot/grub/ImageName.xpm.gz" sin comilllas XD



eso estodo amigos :S

COMO Recuperar GRUB

Me ha pasado frecuentemente que a la banda suele tener instalado guindow$ y linux en un mismo equipo y peor aun en un mismo disco, y no se porque suele dañarse Guindow$, alguin sabe???jajajaja, y pos les desmadra el grub.
y se me ocurrió postear este archirequeterecontrapequeño tutorial para hacer la reinstalación del gestor de arranque.
empesamos :-D

Para recuperar el grub vamos a usar un LiveCD, que debe ser de una distro que use GRUB: Así pues yo disponía de varias Live-distro que usen grub: Knoppix, Ubuntu y ELive. Me decanté por la primera por ser la más conseguida y (con mucha diferencia) la que tiene el inicio más rápido de las tres. Si ya tenéis LiveCD de Ubuntu podéis usar ése sin problemas, incluso aunque el CD sea de Hoary y ya tengáis Breezy instalada: Sólo queremos instalar un gestor de arranque ;)

Suponiendo que ya tenemos LiveCD lo ponemos en el lector e iniciamos el PC desde ese dispositivo.

Hacemos un directorio para montar nuestra partición con Linux:


# mkdir /mnt/laostia podéis hacer el directorio que os dé la gana, mientras recordéis cuál era.


Montamos la partición con una orden de montaje convencional. En mi caso el formato de la partición es ext3, debes sustituirlo por el que se ajuste a tu caso, así como debes localizar la partición en la que tienes instalada debian (normalmente será algo como /dev/sda3, pero puede variar de un caso a otro).


# mount -t ext3 /dev/sdaXXX /mnt/laostia/


Ahora vamos a cambiar el origen de root de nuestro sistema de archivos al directorio en el que hemos montado Debian para que al instalar grub interprete que el "/" del sistema está ahí. Para ello usamos chroot.


# chroot /mnt/laostia/


Instalamos GRUB en el MBR del primer disco duro, que normalmente estará configurado como Primary Master (sda).


# grub-install /dev/sda


por ultimo erificamos que todo está bien revisando las entradas que se han incluído en /boot/grub/menu.lst y si están todos nuestros sistemas (que será lo más normal) ya podemos reiniciar nuestro sistema, retirar el LiveCD y disfrutar de nuestro gestor de arranque

Pero si esto no junciona aca tengo otra manera de resolver el detallito

Not found or not a block device!!!!!!!! :-O

Entonces lo que hice fue lo siguiente:



# grub


grub> root (hd0,7) /*Ahi es donde tengo mi particion de linux*/
grub> setup (hda0) /*Instala el grub*/
grub> quit

o puedes hacer lo siguiente.... en caso de que no sepas en donde se encuentra tu partición de linux


# grub --> ejecutamos el interprete de comando de grub
grub> find /boot/grub/stage1 --> busca donde esta la partición de debian
(esto te va dar hd0,7 "en mi caso", etc)

> root (hdX,Y) --> poner el valor devuelto anterior
> setup (hd0) --> instala grub en nuestro primer disco duro (hd0),
que es con el que inicia la computadora
> quit --> salimos del interprete de comando de grub


y a cobrar lo unico que queda es reinisiar el sistema sin olvidar claro quietar el cd live y papas

Y YA ESTARA TU NUEVO GRUB.