jueves, 3 de enero de 2008

IE Tab en Linux: Extensión Firefox para desarrolladores web

Cuando hace un año utilizaba Windows de forma cotidiana, antes de engancharme al vagón de GNU/Linux, usaba una extensión en Firefox llamada IE Tab, la cual nos permite utilizar el motor de Internet Explorer dentro de nuestra interfaz Firefox de siempre. Gracias a ella me resultaba muy fácil personalizar el diseño de uno de mis blogs.
Uno de los cambios a los cuales me enfrentaba con mi migración a Linux eran los posibles problemas que acarreaba desarrollar solo utilizando Firefox, problema que resolví instalando Internet Explorer en Ubuntu.
Hacer correr la extensión IE Tab es como cualquier otra, con la salvedad de que cuando nos metemos en la página de la extensión en Linux nos indica que no está disponible para nuestro sistema. Para descargarla tenemos varias opciones: usando IE (ya sea emulado en wine, en una virtualización o en Windows) no nos plantea ningún problema, solo guardamos el archivo .xpi de la web de la extensión y listo; con Firefox podemos hacerlo desde Softonic o usando User Agent Switcher desde la web.
La abrimos el archico .xpi con Firefox y los instalamos. Al reiniciar tenemos que configurar la aplicación. Nos vamos a Herramientas --> Opciones IE Tab, y en la pestaña aplicación externa añadimos la dirección donde tenemos el lanzador (en el caso de haber instalado IE de la manera indicada arriba, es /home/(user)/bin/ie6).


El único problema de usar esta utilidad en Linux es que no podemos tener IE en una pestaña dentro de la ventana de Firefox, pero podemos ver la ventana que tenemos actualmente cliqueando en el icono que aparece abajo a la derecha con el símbolo de Firefox mientras pulsamos Ctrl.

Espero que os haya servido como a mí.

Un saludo

Cron: Programar/Automatizar tareas en Linux

Fuente: UbuntuLife

Por ejemplo, hacer una copia de seguridad de tus archivos el dia 1 de cada mes, o cambiar el fondo de escritorio cada
30 minutos. Para programar tareas en Linux, existe un servicio llamado “cron“.

Imagina que quieres programar una tarea para que se ejecute periodicamente, o en un determinado momento.

¿Que hace este servicio?
Es un proceso que lee un fichero donde le indicamos las tareas y cuando queremos realizarlas y el se encarga de ejecutarlas por nosotros en el preciso momento que le hayamos indicado.

Pero antes un poco de culturilla. Cron viene de “cronos” y Cronos segun la mitologia griega era el Dios del tiempo.
Y eso es lo que vamos a hacer con “cron”, controlar el tiempo..

Existen utilidades graficas para programar tareas, pero antes lo veremos desde la linea de comandos, pues definir la tarea y el intervalo de ejecucion tampoco es muy complicado.

Si queremos definir una tarea para cron emplearemos el comando “crontab“. Admite los siguientes parametros:

$ crontab -l
Para mostrar un listado de las tareas actuales del usuario

Ejemplo:

root@soledad:~# crontab -l
# m h dom mon dow command
* * * * * echo `date` > /home/jose/Desktop/cron.txt

$ crontab -e
para editar este fichero de tareas que lee el servicio “cron”

$ crontab -r
elimina el fichero crontab del usuario

$ crontab
instala el fichero indicado como fichero crontab del usuario

Vale, la opcion que nos interesa principalmente es “-e”, con esta opcion creamos (si no existia ya) o editamos el fichero crontab del usuario actual.

Estos ficheros se van dejando en /var/spool/cron/crontabs

Todos estos ficheros de crontab siguen la misma sintaxis. En ellos tenemos una linea por cada tarea o accion
a ejecutar y esta linea es de la forma:

minutos horas dia-del-mes mes dia-de-la-semana comando

El valor que puede tomar cada campo es como sigue:

- minutos va de 0 a 59 y representa el minuto en que se ejecuta
- horas va de 0 a 23 y representa la hora en que se ejecuta
- dia-mes va de 1 a 31 y es el dia del mes en que se ejecuta
- mes va de 1 a 12 y representa el mes que se ejecuta
- dia-semana va de 0 a 7 y el el dia de la semana en que se ejecuta (
el domingo se puede indicar con el 0 o con el 7)
- comando es el comando a ejecutar

Existe un caracter comodin que es el asterisco “*”, con el se indica “Todo” es decir todos los minutos, o todos los meses,
o todos los dias.

Tambien se admiten rangos, p.ej: 0-30 indicaria todos los valores de 0 hasta 30, o 15,30,45 indicaria tres valores: 15, 30 y 45

Como comando podemos poner un comando o la ruta a un shell script que queramos ejecutar.

¿Parece complicado?. No, no lo es. Quedara mas claro cuando veamos un ejemplo:

Imagina el siguiente caso:

30 10 * * * tar -cvf /tmp/documentos.tar /home/jose/documentos

Esta linea ejecutaria el comando

tar -cvf /tmp/documentos.tar /home/jose/documentos

Todos los dias (*), todos los meses (*), todos los dias de la semana (*) a las 10:30
y me serviria para sacar una copia de seguridad de mi carpeta “documentos”.

¿Empiezas a ver las posibilidades?

Podemos programar tareas que se ejecuten cada hora, o cierto dia del mes, o todos los meses, o todos los dias, o solo los
sabados, o miercoles, etc.
Todo depende de la combinacion de valores que pongas en esos campos.

Asi que, todas esas tareas periodicas que realizas ocasionalmente (un script para que me limpie de ficheros no necesarios, copias de seguridad, recordatorios, etc) podrian ser programados para ejecutarse de manera automatica.

Vamos a hacer un ejemplo sencillo para que veas como funciona el “mecanismo” de este reloj.

Con tu usuario ejecuta el siguiente comando:

$ crontab -e

aparece un pequeño editor que te permite modificar el fichero crontab actual.
Desplazate hasta la linea por debajo de:

# m h dom mon dow command

y escribe lo siguiente:

* * * * * echo `date` > /home/jose/Desktop/cron.txt

Sustituyendo “jose” por el nombre de tu usuario. Lo que acabamos de hacer es “programar” una tarea para el cron. Podriamos ir añadiendo tareas nuevas (siempre 1 en una linea nueva) y se ejecutarian cuando correspondiese.

Con Control+O guardas los cambios y con Control+X terminas.

Asegurate de que la linea escrita siga el formato que vimos arriba (minuto, hora, mes, etc…) pues en otro caso “cron”
no la entendera, te dara un error y no la ejecutara.

¿Y que estamos haciendo con esta tarea?

Pues algo muy tonto, pero para que compruebes in “situ” sus posibilidades.

con echo `date` estamos obteniendo la fecha actual y la estamos enviando “>” a un fichero llamado cron.txt que
se guardara en nuestro escritorio.

Como estamos ejecutando ese comando, todos los minutos(*), todas las horas(*), todos los dias(*), etc..
El efecto sera que cada minuto, cambiara el valor almacenado en ese fichero y lo puedes ver facilmente
editando el fichero “cron.txt” que se estara guardando en tu escriotorio cada minuto.

Si todo ha ido bien, podras ver como cada minuto se modifica el contenido de ese fichero con el instante de tiempo actual.

Si te complicas con la linea de comandos, puedes hacer esto mismo con utilidades graficas como son
Kcron (en KDE) , o grontab y gnome-schedule en Gnome.

En la siguiente imagen puedes ver el aspecto de Kcron:

kcron.jpg

Te voy a poner ahora otro ejemplo mas interesante. Sacar un backup de tu carpeta home. Tal y como puedes ver aqui.

Para ello emplearemos este comando:

tar -jcvf /tmp/CopiaTotal_etc-home_`date +%d%b%y`.tar.bz2 /home /etc

Que nos comprime y empaqueta a .tar.bz2 nuestras carpetas /home y /etc dejandonos en el directorio /tmp con el nombre
“CopiaTotal_etc-home y la fecha”. Este comando seria para una copia “total”, si ya tuvieramos un backup realizado y solo
quisieramos añadir los ficheros nuevos o modificados, ejecutariamos un backup diferencial:

tar -jcvf /tmp/CopiaDiferencial_etc-home_01`date +%b%y`-`date +%d%b%y`.tar.bz2 /home /etc -N 01`date +%b%y`

Vale, esto esta muy bien para comandos simples, pero ¿y si quiero hacer algo mas complejo?

Pues como te he dicho antes. En la linea de “comando” del cron no solo puedes poner un comando.
Tambien puedes, programarte un shell script que hiciera lo que tu quisieras y despues lo llamas.

Podria ser algo como esto:

15,30,45 11-12 1,2,3 * * /home/jose/scripts/cambia_wallpaper.sh > /tmp/out.txt 2>/tmp/error.txt

que es:

cada dia 1,2 y 3 de todos los meses.
Para las horas 11 a 12
y minutos 15, 30 y 45
ejecutame el script:

/home/jose/scripts/cambia_wallpaper.sh

A este ejemplo le añado 2 redirecciones, que suelen ser utiles cuando estas depurando y quieres guardar trazas
de lo que esta pasando.

> /tmp/out.txt
me guarda la salida del shell script (p.ej las lineas que imprima con un “echo”) en el fichero /tmp/out.txt

y

2> /tmp/error.txt
me envia los errores que se produzcan al fichero error.txt (si estas programando un cron que no te funciona, no estaria
de mas generar una salida de error y consultarla para ver que esta pasando).

Es un ejemplo ficticio, pero solo para que puedas ver el juego que da crontab a la hora de definir rangos
horarios. Si necesitas el script “cambia_wallpaper.sh”, puedes mirar el post que escribi ayer.

Esto solo ha sido una pequeña introduccion a “cron”, en internet podras encontrar muchos mas tutoriales sobre esta “pequeña”, “precisa” y “potente” herramienta.

!!!Cuidado!!!, Cuidado con el demonio del tiempo!!!

Mas informacion | AlejandroX

Proshield: Ubuntu más seguro

Fuente: UbuntuTips

Proshield es una herramienta que nos ayuda a mantener nuestro Ubuntu seguro y actualizado ejecutando una serie de análisis del sistema.

Algunas características de Proshield:

  • Ayuda a hacer backups periódicos del sistema
  • Chequea que el software instalado esté actualizado.
  • Chequea el espacio libre en el disco duro.
  • Comprueba si hay más de una cuenta root.
  • Comprueba cuentas y passwords del sistema.
  • Comprueba la no existencia de sniffers.
  • Comprueba la configuración de apt.
  • Comprueba que la hora del sistema sea la correcta.
  • Comprueba que no haya usuarios logueados como root.
  • Si está instalado, chequea la configuración del servidor ssh.

El programa hace un análisis del sistema y crea un reporte, luego si es necesario y por medio de preguntas nos ayuda a resolver los problemas encontrados.

Podemos descargar un paquete deb de Proshield desde el siguiente enlace:

ProShield v3.8.12

Una vez instalado es necesario ejecutar Proshield desde un Terminal en modo root, por lo tanto para hacerlo debes escribir:

sudo proshield

Sitio web de Proshield

Consejos al migrar GNU/Linux a otro disco duro

Fuente: SigT

Después de años con un disco duro de 40GB para el sistema operativo y luego otro de 120GB conectado por USB (en realidad primero el de 40GB, luego uno de 80GB y vuelta al de 40GB para usar el de 80GB en otro sitio) me he pillado un disco duro de 320GB y, una vez más, toca migrar…

Si bien se dice que “GNU/Linux no se formatea jamás” y se asocia a su seguridad, estabilidad y/o que siempre hay una solución que evita el borrado yo creo que los tiros van por otros lados: puedes llegar a personalizarlo tanto que si bien formatear y reinstalar son 20 minutos, luego el dejarlo “como estaba” es mucho más largo.

Por ello lo que se suele hacer es seguir una misma lógica de particiones y/o sistema de ficheros para copiar los ficheros (no hay “ficheros bloqueados”) de un disco duro a otro, reinstalar el cargador de sistemas operativos (normalmente GRUB) y adelante.

Preparándolo todo

Lo primero de todo es tener los dos discos duros funcionando, el “nuevo” puede ser conectado con una caja USB pero esto luego puede crearnos alguna pequeña complicación.

Una buena idea es perder diez minutos en hacer limpieza del sistema para ahorrar tiempo luego al copiar ficheros.

Podemos eliminar con apt-get remove –purge todos los kernels (linux-image-*) y sus kbuild (linux-kbuild-*) salvo los que utilices tú o sean dependencias de otros programas. Lo mismo con sus cabeceras (linux-headers-*).

Lo mismo con los programas que no sean utilizados, además con dpkg -l | grep ^rc podemos ver los programas desinstalados pero que todavía dejan restos (y con dpkg --purge eliminar los restos).

Con deborphan podemos ver bibliotecas “huerfanas”: bibliotecas que no son utilizadas por ningún programa. Es recomendable ejecutar antes ldconfig para evitar “falsos positivos” y revisar que con el borrado no se vaya a borrar realmente algo que utilicemos.

Algunos sitios más donde mirar si “sobran” ficheros:

  • /usr/share/doc (si no necesitas “documentación”).
  • /usr/src (¿código compilado por ti?).
  • Y obviamente… tu $HOME.

Por último podemos usar apt-get clean para eliminar todo el repositorio local (los paquetes que nos hemos bajado para posteriormente ser instalados).

Particionando

Veamos el esquema del disco duro viejo (40GB) y el nuevo:

HD viejo                  HD nuevo
hda1 100MB ext2 /boot hda1 200MB ext2 /boot
hda2 5GB ext3 / hda2 2GB swap
hda3 resto ext3 /home hda3 10GB ext3 /
hda4 resto ext3 /home

Primera sorpresa: ¿dónde c*ño esta la swap? Resulta que en la última repartición me olvide ^_^U. Lo gracioso es pensar que he estado codificando vídeo, viendo varias docenas de pestañas y reproduciendo vídeo o música… todo a la vez y sin swap, sólo con los 512MB de RAM de mi equipo (sí, se me va quedando anticuado xD).

Para crear las particiones utilizo cfdisk, todas las particiones son primarias (no me han gustado nunca las extendidas), de “Tipo de partición” elijo 83 (Linux) para todas menos la segunda que es 82 (Linux swap / Solaris).

Una vez hecho, toca darles formato (presupongo que el disco es hda por concordancia con lo anterior):

mkfs.ext2 /dev/hda1 -L "/boot"
mkswap /dev/hda2
mks.ext3 /dev/hda3 -L "/"
mks.ext3 /dev/hda4 -L "/home" -m 2

El parametro “-m” sirve para poner un % de la partición reservada al administrador distinto del por defecto (5%), en el ejemplo lo bajo a 2% ya que al ser datos de usuario sobra…

Copiándolo todo

Primero montamos las nuevas particiones en /media:

cd /media
mkdir {hda1,hda3,hda4}
mount -t ext2 /dev/hda1 hda1
mount -t ext3 /dev/hda3 hda3
mount -t ext3 /dev/hda4 hda4

Luego copiamos todo el /boot y el /home:

cp -v /boot/* media/hda1 -rfp
cp -v /home/* media/hda4 -rfp

El -v para hacernos una idea de cómo anda el asunto y la “p” final para preservar los permisos por lo que es sumamente importante.

¿Por qué no hago lo mismo con el sistema de ficheros raíz? En el sistema de ficheros raíz se crean ficheros “dinámicos” de proceso (en /proc) y de sistema (en /sys) así que no es buena idea copiar sin más.

cd hda3/
mkdir {boot,home,proc,sys,tmp}
cp -v /bin /dev /etc /initrd.img /lib /media /mnt /root \
/sbin /usr /var /vmlinuz . -rfp

Algunos detalles…

Como hemos cambiado de particiones tocar hacer un pequeño cambio en los ficheros del nuevo disco duro. En /etc/fstab toca cambiar raíz y home (hda2 y hda3) por hda3 y hda4. De la misma forma en /boot/grub/menu.lst hay que cambiar root=/dev/hda2 por root=/dev/hda3.

Grub

Por último falta instalar GRUB en el nuevo disco duro, en principio con un “grub-install /dev/hda” sobra pero esto no será posible si el dispositivo es vía USB.

En tal caso o lo metemos de una vez en el ordenador (vía IDE o SATA) y arrancamos desde el viejo primero o, si no tenemos espacio como es el caso, “jugamos” un poco:

  1. Sustituimos el disco duro viejo por el nuevo
  2. Arrancamos un LiveCD cualquiera (Ubuntu mismo).
  3. Montamos el /boot del disco duro en /media/hda1.
  4. grub-install /dev/hda --root-directory=/media/hda1.

Por último se puede dar el caso al arrancar desde disco duro (me ha pasado sólo 2 veces, supongo que depende del grub a instalar) que no coja el menu.lst y suelte un grub> a pelo esperando comandos.

root (hd0,0)
cat /boot/grub/menu.lst

# Copia las líneas del menu.lst, por ejemplo:
kernel /vmlinuz-2.6.23 root=/dev/hda3 ro vga=791
initrd /initrd.img
boot

Lo único que cambia es que en el menu.lst pone “savedefault” en lugar del boot (no lo necesita). Una vez arrancado desde nuestro sistema operativo se instalará correctamente el grub:

grub-install /dev/hda
update-grub

Conclusión

Requiere poco tiempo aunque parezca complejo. En realidad he tardado más en escribirlo que en hacerlo. Pero el tiempo que me ahorro en lugar de instalar un S.O nuevo y configurarlo (+ personalizarlo) es mucho, pero que mucho mayor.

Haz una copia exacta de tu disco duro

Fuente: LinuTeca

Dando un repaso a mis rss me encuentro en ‘tuxapuntes.es’ un dato curioso, ¿nunca te has planteado clonar tu disco? Se me ocurren miles de aplicaciones pero sin duda las mejores son hacer backups, o quizá si quieres cambiar de disco duro y aumentar la capidad también es útil.

Todos conocemos formas de hacerlo en Linux, Windows o lo que sea, pero me llamó la atención por su sencillez:

sudo dd if=/dev/hda1 of=/dev/sda1 bs=1M

De ésta forma copiaremos el contenido del disco /dev/hda1 a /dev/sda1 en bloques de 1MB y será una copia exacta incluyendo el particionado y el MBR (Master Boot Record).

Getlibs: Encuentra las librerias que te faltan para ejecutar aplicaciones 32 bits en maquinas de 64 bits

Fuente: UbuntuLife

Un tip que encuentro en Destino Ubuntu y creo que puede interesar a muchas personas.

Getlibs es una aplicacion de consola cuya finalidad es indicarte las librerias que un programa de 32 bits necesita. Se usa naturalmente en esos sitemas de 64 bits en las que el usuario quiere ejecutar una aplicacion de 32 y no le funciona. Es decir, estas en tu sistema de 64 y cuando intentas ejecutar una aplicacion de 32 bits te falla.
Generalmente esto sera pq necesitas alguna libreria que no tienes instalada. Con esta utilidad de consola puedes ver e instalar
las librerias que necesite esa aplicacion de 32 para funcionar en modo 64.

Para usar getlibs, descargalo desde aqui.
Una vez descargado e instalado lo usas del siguiente modo:

$ sudo getlibs /usr/bin/nombre_del_programa_que_quieres_ejecutar

XBB: Grabar imagenes de XBox 360 desde Linux

Fuente: UbuntuLife

Por un familiar que me ha pedido que le echara un vistazo y lo comentara me paseo por los foros de El otro lado y me encuentro con XBB que es una pequeña aplicacion desarrollada por Pollux34 y que permite grabar las imagenes .iso de los juegos de la XBOX 360 desde Linux.

Puede que alguno me tache de fomentar algo que no fomento. Pero al menos creo que si tienes el juego original si te puede interesar tener una copia de seguridad del mismo,Y que yo sepa eso no es ilegal. Nos prohiben muchas cosas pero aun no (aunque todo llegara) tener una copia de seguridad de nuestros DVDs.

De todas formas se que esto se hace, pero no sirven programas como el Nero o K3b, y deben utilizarse programas como CloneCD que en Linux no existen, asi que aqui presento esta alternativa.

!!!Que no me entere yo que para sacar tus copias de seguridad
de juegos de Xbox 360 te vas a Windows, cuando puedes hacerlo
desde Linux ^^ !!!

Podeis preguntar en los comentarios si teneis problemas para hacerlo funcionar solo que yo no creo que os responda, pues
no lo he probado, ni tengo consola Xbox360, asi que no podre ser de mucha ayuda.

En la web podeis ver que para que funcione require de tener instalado “Gambas” en tu maquina.
Gambas es un framework de desarrollo similar a Visual Basic (pero mejor) y nos permite desarrollar facilmente aplicaciones en Linux.
Me ha gustado el ejemplo de codigo (es muy sencillito) y puede que que anime a escribir un pequeño tutorial de introduccion a Gambas para que creais vuestras propias aplicaciones o utilidades.

Como comento: He estudiado el codigo y no es muy complicado de seguir, Basicamente tiene un Formulario .form que crea el formulario de la ventana donde indicas la imagen que quieres grabar y el destino (grabadora) y un fichero .class
que contiene el codigo y la llamada al sistema para grabar la imagen ISO.
Realmente para grabar la iso se esta empleando el comando growisofs.
esta seria la linea, en cuestion:

EXEC ["growisofs","-use-the-force-luke=dao","-use-the-force-luke=break:" & devx,"-dvd-compat","-speed=1","-Z" , "/dev/" & grabadora & "=" & imagenTxt.Text] FOR READ AS hproc

Es decir:

$ growisofs -use-the-force-luke=dao -use-the-force-luke=break: -dvd-compat -speed=1 -Z /dev/=

Un ejemplo, para grabar un fichero llamado fichero.dvd en la unidad /dev/hdb:

growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/hdb=fichero.dvd

Si te bajas el binario y tienes instaladas las librerias necesarias solo has de ejecutar:

$ ./XBB

Si en cambio prefieres usar gambas y tirar del codigo fuente, Para instalar gambas ejecutas:

$ sudo apt-get install gambas

Y luego abres el proyecto desde el entorno.

Comentario del autor del programa:

La selección de la grabadora de DVD es una rutina de la que no estoy muy orgulloso. A mi me va a la perfección, pero reconozco que no funciona en todos los ordenadores.

Para el caso tuyo, lo mejor es que, si sabes el nombre que le da LINUX a tu grabadora, lo pongas a mano (por ejemplo sr0)

Compilar con Gambas es una tontería. Te instalas el Gambas entero (es como el VB), abres las fuentes como un proyecto y tienes dos opciones:

1) Le das al botón con forma de “play” y ejecutas desde el Gambas, compilando en tiempo de ejecución…

2) Le das a la opción “Crear Binario” y así compilas para no tener que abrir el Gambas más veces.

No es como compilar en C. Es trivial.

Y aclaro: no he hecho este programa para distribuirlo, sino para mi.

Con lo que si no me equivoco, supongo:

Que este programa no creo que este sujeto a ninguna licencia, ni nada similar, si os da problemas el autor no se hace responsable, no pidais soporte, y bla bla bla. Vamos, que si lo usas y es de utilidad…estupendo!!!, pero que no esperes nada mas.

Mas informacion | El otro lado

Cron: Programar/Automatizar tareas en Linux

Fuente: UbuntuLife

Por ejemplo, hacer una copia de seguridad de tus archivos el dia 1 de cada mes, o cambiar el fondo de escritorio cada
30 minutos. Para programar tareas en Linux, existe un servicio llamado “cron“.

Imagina que quieres programar una tarea para que se ejecute periodicamente, o en un determinado momento.

¿Que hace este servicio?
Es un proceso que lee un fichero donde le indicamos las tareas y cuando queremos realizarlas y el se encarga de ejecutarlas por nosotros en el preciso momento que le hayamos indicado.

Pero antes un poco de culturilla. Cron viene de “cronos” y Cronos segun la mitologia griega era el Dios del tiempo.
Y eso es lo que vamos a hacer con “cron”, controlar el tiempo..

Existen utilidades graficas para programar tareas, pero antes lo veremos desde la linea de comandos, pues definir la tarea y el intervalo de ejecucion tampoco es muy complicado.

Si queremos definir una tarea para cron emplearemos el comando “crontab“. Admite los siguientes parametros:

$ crontab -l
Para mostrar un listado de las tareas actuales del usuario

Ejemplo:

root@soledad:~# crontab -l
# m h dom mon dow command
* * * * * echo `date` > /home/jose/Desktop/cron.txt

$ crontab -e
para editar este fichero de tareas que lee el servicio “cron”

$ crontab -r
elimina el fichero crontab del usuario

$ crontab
instala el fichero indicado como fichero crontab del usuario

Vale, la opcion que nos interesa principalmente es “-e”, con esta opcion creamos (si no existia ya) o editamos el fichero crontab del usuario actual.

Estos ficheros se van dejando en /var/spool/cron/crontabs

Todos estos ficheros de crontab siguen la misma sintaxis. En ellos tenemos una linea por cada tarea o accion
a ejecutar y esta linea es de la forma:

minutos horas dia-del-mes mes dia-de-la-semana comando

El valor que puede tomar cada campo es como sigue:

- minutos va de 0 a 59 y representa el minuto en que se ejecuta
- horas va de 0 a 23 y representa la hora en que se ejecuta
- dia-mes va de 1 a 31 y es el dia del mes en que se ejecuta
- mes va de 1 a 12 y representa el mes que se ejecuta
- dia-semana va de 0 a 7 y el el dia de la semana en que se ejecuta (
el domingo se puede indicar con el 0 o con el 7)
- comando es el comando a ejecutar

Existe un caracter comodin que es el asterisco “*”, con el se indica “Todo” es decir todos los minutos, o todos los meses,
o todos los dias.

Tambien se admiten rangos, p.ej: 0-30 indicaria todos los valores de 0 hasta 30, o 15,30,45 indicaria tres valores: 15, 30 y 45

Como comando podemos poner un comando o la ruta a un shell script que queramos ejecutar.

¿Parece complicado?. No, no lo es. Quedara mas claro cuando veamos un ejemplo:

Imagina el siguiente caso:

30 10 * * * tar -cvf /tmp/documentos.tar /home/jose/documentos

Esta linea ejecutaria el comando

tar -cvf /tmp/documentos.tar /home/jose/documentos

Todos los dias (*), todos los meses (*), todos los dias de la semana (*) a las 10:30
y me serviria para sacar una copia de seguridad de mi carpeta “documentos”.

¿Empiezas a ver las posibilidades?

Podemos programar tareas que se ejecuten cada hora, o cierto dia del mes, o todos los meses, o todos los dias, o solo los
sabados, o miercoles, etc.
Todo depende de la combinacion de valores que pongas en esos campos.

Asi que, todas esas tareas periodicas que realizas ocasionalmente (un script para que me limpie de ficheros no necesarios, copias de seguridad, recordatorios, etc) podrian ser programados para ejecutarse de manera automatica.

Vamos a hacer un ejemplo sencillo para que veas como funciona el “mecanismo” de este reloj.

Con tu usuario ejecuta el siguiente comando:

$ crontab -e

aparece un pequeño editor que te permite modificar el fichero crontab actual.
Desplazate hasta la linea por debajo de:

# m h dom mon dow command

y escribe lo siguiente:

* * * * * echo `date` > /home/jose/Desktop/cron.txt

Sustituyendo “jose” por el nombre de tu usuario. Lo que acabamos de hacer es “programar” una tarea para el cron. Podriamos ir añadiendo tareas nuevas (siempre 1 en una linea nueva) y se ejecutarian cuando correspondiese.

Con Control+O guardas los cambios y con Control+X terminas.

Asegurate de que la linea escrita siga el formato que vimos arriba (minuto, hora, mes, etc…) pues en otro caso “cron”
no la entendera, te dara un error y no la ejecutara.

¿Y que estamos haciendo con esta tarea?

Pues algo muy tonto, pero para que compruebes in “situ” sus posibilidades.

con echo `date` estamos obteniendo la fecha actual y la estamos enviando “>” a un fichero llamado cron.txt que
se guardara en nuestro escritorio.

Como estamos ejecutando ese comando, todos los minutos(*), todas las horas(*), todos los dias(*), etc..
El efecto sera que cada minuto, cambiara el valor almacenado en ese fichero y lo puedes ver facilmente
editando el fichero “cron.txt” que se estara guardando en tu escriotorio cada minuto.

Si todo ha ido bien, podras ver como cada minuto se modifica el contenido de ese fichero con el instante de tiempo actual.

Si te complicas con la linea de comandos, puedes hacer esto mismo con utilidades graficas como son
Kcron (en KDE) , o grontab y gnome-schedule en Gnome.

En la siguiente imagen puedes ver el aspecto de Kcron:

kcron.jpg

Te voy a poner ahora otro ejemplo mas interesante. Sacar un backup de tu carpeta home. Tal y como puedes ver aqui.

Para ello emplearemos este comando:

tar -jcvf /tmp/CopiaTotal_etc-home_`date +%d%b%y`.tar.bz2 /home /etc

Que nos comprime y empaqueta a .tar.bz2 nuestras carpetas /home y /etc dejandonos en el directorio /tmp con el nombre
“CopiaTotal_etc-home y la fecha”. Este comando seria para una copia “total”, si ya tuvieramos un backup realizado y solo
quisieramos añadir los ficheros nuevos o modificados, ejecutariamos un backup diferencial:

tar -jcvf /tmp/CopiaDiferencial_etc-home_01`date +%b%y`-`date +%d%b%y`.tar.bz2 /home /etc -N 01`date +%b%y`

Vale, esto esta muy bien para comandos simples, pero ¿y si quiero hacer algo mas complejo?

Pues como te he dicho antes. En la linea de “comando” del cron no solo puedes poner un comando.
Tambien puedes, programarte un shell script que hiciera lo que tu quisieras y despues lo llamas.

Podria ser algo como esto:

15,30,45 11-12 1,2,3 * * /home/jose/scripts/cambia_wallpaper.sh > /tmp/out.txt 2>/tmp/error.txt

que es:

cada dia 1,2 y 3 de todos los meses.
Para las horas 11 a 12
y minutos 15, 30 y 45
ejecutame el script:

/home/jose/scripts/cambia_wallpaper.sh

A este ejemplo le añado 2 redirecciones, que suelen ser utiles cuando estas depurando y quieres guardar trazas
de lo que esta pasando.

> /tmp/out.txt
me guarda la salida del shell script (p.ej las lineas que imprima con un “echo”) en el fichero /tmp/out.txt

y

2> /tmp/error.txt
me envia los errores que se produzcan al fichero error.txt (si estas programando un cron que no te funciona, no estaria
de mas generar una salida de error y consultarla para ver que esta pasando).

Es un ejemplo ficticio, pero solo para que puedas ver el juego que da crontab a la hora de definir rangos
horarios. Si necesitas el script “cambia_wallpaper.sh”, puedes mirar el post que escribi ayer.

Esto solo ha sido una pequeña introduccion a “cron”, en internet podras encontrar muchos mas tutoriales sobre esta “pequeña”, “precisa” y “potente” herramienta.

!!!Cuidado!!!, Cuidado con el demonio del tiempo!!!

Mas informacion | AlejandroX

Proshield: Ubuntu más seguro

Fuente: UbuntuTips

Proshield es una herramienta que nos ayuda a mantener nuestro Ubuntu seguro y actualizado ejecutando una serie de análisis del sistema.

Algunas características de Proshield:

  • Ayuda a hacer backups periódicos del sistema
  • Chequea que el software instalado esté actualizado.
  • Chequea el espacio libre en el disco duro.
  • Comprueba si hay más de una cuenta root.
  • Comprueba cuentas y passwords del sistema.
  • Comprueba la no existencia de sniffers.
  • Comprueba la configuración de apt.
  • Comprueba que la hora del sistema sea la correcta.
  • Comprueba que no haya usuarios logueados como root.
  • Si está instalado, chequea la configuración del servidor ssh.

El programa hace un análisis del sistema y crea un reporte, luego si es necesario y por medio de preguntas nos ayuda a resolver los problemas encontrados.

Podemos descargar un paquete deb de Proshield desde el siguiente enlace:

ProShield v3.8.12

Una vez instalado es necesario ejecutar Proshield desde un Terminal en modo root, por lo tanto para hacerlo debes escribir:

sudo proshield

Sitio web de Proshield

Consejos al migrar GNU/Linux a otro disco duro

Fuente: SigT

Después de años con un disco duro de 40GB para el sistema operativo y luego otro de 120GB conectado por USB (en realidad primero el de 40GB, luego uno de 80GB y vuelta al de 40GB para usar el de 80GB en otro sitio) me he pillado un disco duro de 320GB y, una vez más, toca migrar…

Si bien se dice que “GNU/Linux no se formatea jamás” y se asocia a su seguridad, estabilidad y/o que siempre hay una solución que evita el borrado yo creo que los tiros van por otros lados: puedes llegar a personalizarlo tanto que si bien formatear y reinstalar son 20 minutos, luego el dejarlo “como estaba” es mucho más largo.

Por ello lo que se suele hacer es seguir una misma lógica de particiones y/o sistema de ficheros para copiar los ficheros (no hay “ficheros bloqueados”) de un disco duro a otro, reinstalar el cargador de sistemas operativos (normalmente GRUB) y adelante.

Preparándolo todo

Lo primero de todo es tener los dos discos duros funcionando, el “nuevo” puede ser conectado con una caja USB pero esto luego puede crearnos alguna pequeña complicación.

Una buena idea es perder diez minutos en hacer limpieza del sistema para ahorrar tiempo luego al copiar ficheros.

Podemos eliminar con apt-get remove –purge todos los kernels (linux-image-*) y sus kbuild (linux-kbuild-*) salvo los que utilices tú o sean dependencias de otros programas. Lo mismo con sus cabeceras (linux-headers-*).

Lo mismo con los programas que no sean utilizados, además con dpkg -l | grep ^rc podemos ver los programas desinstalados pero que todavía dejan restos (y con dpkg --purge eliminar los restos).

Con deborphan podemos ver bibliotecas “huerfanas”: bibliotecas que no son utilizadas por ningún programa. Es recomendable ejecutar antes ldconfig para evitar “falsos positivos” y revisar que con el borrado no se vaya a borrar realmente algo que utilicemos.

Algunos sitios más donde mirar si “sobran” ficheros:

  • /usr/share/doc (si no necesitas “documentación”).
  • /usr/src (¿código compilado por ti?).
  • Y obviamente… tu $HOME.

Por último podemos usar apt-get clean para eliminar todo el repositorio local (los paquetes que nos hemos bajado para posteriormente ser instalados).

Particionando

Veamos el esquema del disco duro viejo (40GB) y el nuevo:

HD viejo                  HD nuevo
hda1 100MB ext2 /boot hda1 200MB ext2 /boot
hda2 5GB ext3 / hda2 2GB swap
hda3 resto ext3 /home hda3 10GB ext3 /
hda4 resto ext3 /home

Primera sorpresa: ¿dónde c*ño esta la swap? Resulta que en la última repartición me olvide ^_^U. Lo gracioso es pensar que he estado codificando vídeo, viendo varias docenas de pestañas y reproduciendo vídeo o música… todo a la vez y sin swap, sólo con los 512MB de RAM de mi equipo (sí, se me va quedando anticuado xD).

Para crear las particiones utilizo cfdisk, todas las particiones son primarias (no me han gustado nunca las extendidas), de “Tipo de partición” elijo 83 (Linux) para todas menos la segunda que es 82 (Linux swap / Solaris).

Una vez hecho, toca darles formato (presupongo que el disco es hda por concordancia con lo anterior):

mkfs.ext2 /dev/hda1 -L "/boot"
mkswap /dev/hda2
mks.ext3 /dev/hda3 -L "/"
mks.ext3 /dev/hda4 -L "/home" -m 2

El parametro “-m” sirve para poner un % de la partición reservada al administrador distinto del por defecto (5%), en el ejemplo lo bajo a 2% ya que al ser datos de usuario sobra…

Copiándolo todo

Primero montamos las nuevas particiones en /media:

cd /media
mkdir {hda1,hda3,hda4}
mount -t ext2 /dev/hda1 hda1
mount -t ext3 /dev/hda3 hda3
mount -t ext3 /dev/hda4 hda4

Luego copiamos todo el /boot y el /home:

cp -v /boot/* media/hda1 -rfp
cp -v /home/* media/hda4 -rfp

El -v para hacernos una idea de cómo anda el asunto y la “p” final para preservar los permisos por lo que es sumamente importante.

¿Por qué no hago lo mismo con el sistema de ficheros raíz? En el sistema de ficheros raíz se crean ficheros “dinámicos” de proceso (en /proc) y de sistema (en /sys) así que no es buena idea copiar sin más.

cd hda3/
mkdir {boot,home,proc,sys,tmp}
cp -v /bin /dev /etc /initrd.img /lib /media /mnt /root \
/sbin /usr /var /vmlinuz . -rfp

Algunos detalles…

Como hemos cambiado de particiones tocar hacer un pequeño cambio en los ficheros del nuevo disco duro. En /etc/fstab toca cambiar raíz y home (hda2 y hda3) por hda3 y hda4. De la misma forma en /boot/grub/menu.lst hay que cambiar root=/dev/hda2 por root=/dev/hda3.

Grub

Por último falta instalar GRUB en el nuevo disco duro, en principio con un “grub-install /dev/hda” sobra pero esto no será posible si el dispositivo es vía USB.

En tal caso o lo metemos de una vez en el ordenador (vía IDE o SATA) y arrancamos desde el viejo primero o, si no tenemos espacio como es el caso, “jugamos” un poco:

  1. Sustituimos el disco duro viejo por el nuevo
  2. Arrancamos un LiveCD cualquiera (Ubuntu mismo).
  3. Montamos el /boot del disco duro en /media/hda1.
  4. grub-install /dev/hda --root-directory=/media/hda1.

Por último se puede dar el caso al arrancar desde disco duro (me ha pasado sólo 2 veces, supongo que depende del grub a instalar) que no coja el menu.lst y suelte un grub> a pelo esperando comandos.

root (hd0,0)
cat /boot/grub/menu.lst

# Copia las líneas del menu.lst, por ejemplo:
kernel /vmlinuz-2.6.23 root=/dev/hda3 ro vga=791
initrd /initrd.img
boot

Lo único que cambia es que en el menu.lst pone “savedefault” en lugar del boot (no lo necesita). Una vez arrancado desde nuestro sistema operativo se instalará correctamente el grub:

grub-install /dev/hda
update-grub

Conclusión

Requiere poco tiempo aunque parezca complejo. En realidad he tardado más en escribirlo que en hacerlo. Pero el tiempo que me ahorro en lugar de instalar un S.O nuevo y configurarlo (+ personalizarlo) es mucho, pero que mucho mayor.

Haz una copia exacta de tu disco duro

Fuente: LinuTeca

Dando un repaso a mis rss me encuentro en ‘tuxapuntes.es’ un dato curioso, ¿nunca te has planteado clonar tu disco? Se me ocurren miles de aplicaciones pero sin duda las mejores son hacer backups, o quizá si quieres cambiar de disco duro y aumentar la capidad también es útil.

Todos conocemos formas de hacerlo en Linux, Windows o lo que sea, pero me llamó la atención por su sencillez:

sudo dd if=/dev/hda1 of=/dev/sda1 bs=1M

De ésta forma copiaremos el contenido del disco /dev/hda1 a /dev/sda1 en bloques de 1MB y será una copia exacta incluyendo el particionado y el MBR (Master Boot Record).