jueves, 30 de diciembre de 2010

Integrar el Antivirus Avast en Nautilus

Tener instalado un antivirus en Linux en realidad solo sirve para verificar que no tienes virus que vayan a afectar a Windows, para no enviarlos a tus amigos que usan ese sistema, o a tu Windows si tienes tu pc con Windows y Linux , o una red casera con Linux en un pc  y Windows en otro. Si solo usas Linux y nada mas que Linux, no te sirve de mucho tener un antivirus.

Aconsejo que os descarguéis el documento: http://www.iberprensa.com/todolinux/articulos/TL89_reporvirus.pdf
y que os lo leáis. aclara mucho sobre virus en general y en Linux en particular.
Lo mas claro que dice ese documento:
“Mi experiencia como administrador: En más de diez años que llevo administrando Linux, con instalaciones en cientos de máquinas de centros de cálculo, laboratorios de alumnos, empresas, etc, nunca me ha “entrado” un virus, nunca he conocido a alguien que le haya ocurrido, nunca he conocido a alguien que haya conocido a alguien que le haya ocurrido. Conozco a más gente que ha visto al monstruo del Lago Ness a que haya visto virus para Linux.”
Se puede decir mas alto, pero no mas claro.

--------------------------------------

El antivirus Avast se pueden descargar desde:
http://files.avast.com/files/linux/avast4workstation_1.3.0-2_i386.deb ( al ejecutarlo por primera vez te pide una contraseña, y para conseguirla te reenvia a una página desde la que te tienes que inscribir con tu dirección de correo, a la que luego te mandan la contraseña). Es de muy sencillo manejo como se puede ver en esta imagen. A partir de esta interfaz ya podemos empezar a usar el antivirus, pero tras lo que haremos a continuación solo nos interesará de ella el botón Update database.



 Podemos hacer que la actualización de la base de datos de virus se haga de forma automatica cada vez que se abra el programa, para ello: Tools->Preferences->pestaña Update->seleccionar: Automatically

———————————-

Añadir acciones de Nautilus al menú contextual, y/o a su barra de herramientas: la explicación general de como hacer esto esta enAñadir acciones al menú contextual a Nautilus ( desde que escribí el tema hasta ahora ha variado algo la interfaz gráfica del programa, pero se sigue entendido bastante bien ).

Añadir la acción Scannear Antivirus: A traves del programa Sistema -> Preferencias -> Configuración de acciones de Nautilus , vamos a crear una acción con la que podamos elegir uno o varios archivos y/o directorios de Natilus y que o a través del menú contextual o a través de un click en un icono de la barra de herramientas de Nautilus podamos scannear si éstos estan infectados por algún virus.

Una vez en la pantalla principal del programa Configuración de acciones de Nautilus, y después de dar al botón de "Definir nueva Acción", llegamos a la edición de ésta a traves de cinco pestañas.

--- Pestaña Acción: la editamos como se ve en la imagen. Ponemos un texto adecuado en "Context label" , "Toolbar label" y "Tooltip" ( por ejemplo Scannear Antivirus ) para darle un nombre a la acción, y que aparezca en el menú contextual, y el la barra de herramientas de Nautilus;  elegimos un icono, y seleccionamos el resto de las las casillas, como se ve en la imagen.



 --- Pestaña Comando: en Path: xterm y en Parameters: -hold -e avast -p3 %M



 --- Pestaña Folders ( carpetas ): lo dejamos como está de serie : es decir con: /

--- Pestaña Conditions: ponemos * tanto en como en Filenames y en Mimetypes, y seleccionamos Match Case. En "Apear if selecction contains": ponemos Both ( es decir tanto archivos como directorios ) y seleccionamos "multiples files or folders" ( es decir varios archivos y/o directorios). Todo ello para que se produczca el escaneo de varios archivos y/o directorios de todo tipo de archivos tanto por su nombre como por su tipo de archivo.





 --- Pestaña Advanced Conditions: elegimos el tipo de archivos sobre los que queremos que se realice el scaneo: sobre archivos locales ( los del disco duro ), archivos encontrados en una red: bien a través de sftp (ssh ), ftp, samba ( smb -> Archivos de Windows ) , o en la web.

Una vez hecho todo esto guardamos los cambios realizados y cerramos el programa. Al abrir de nuevo Nautilus veremos que ha aparecido en su barra de herramientas un nuevo icono. Si elegimos uno o varios archivos y/directorios y luego o bien con el botón derecho del ratón y el menú contextual ( en el que aparece una nueva acción ) o a través de un click en el nuevo icono de la barra de herramientas de Nautilus, seleccionamos la acción Scannear Antivirus, se abre una ventana de la terminal en la que se ve que se escanean los archivos y/o directorios que hayamos elegido y al final aparece un resumen del scanneo realizando informándonos del número de archivos y/o directorios scanneados y de si hay o no infección, y si la hubiera que archivos estarían afectados, para que los borrásemos.



 -------------------------------

Añadir la acción Antivirus Avast (para acceder a la actualización de la base de datos del antivirus Avast ) :

Tras lo hecho hasta aquí ya tenemos el antivirus Avast integrado en Nautilus, pero para realizar la actualización de la base de datos tendríamos que abrir el programa Avast a partir del Menú de Aplicaciones. Si queremos tener otro icono en la barra de herramientas de Nautilus, desde el que iniciar la interfaz gráfica de Avast para actualizar la base de datos del antivirus, debemos volver a abrir el programa Configuración de acciones de Nautilus, y una vez creada otra acción con el nombre Antivirus-Avast, editar la pestaña Comando, y en ella, poner  en Path: avastgui. El resto de las pestañas las podemos editar de forma similar a como lo hicimos al crear la acción Scannear Antivirus

El resultado final de todo ello es que tenemos dos iconos nuevos en la barra de herramientas de Nautilus: uno para iniciar la interfaz gráfica del antivirus Avast y actualizar la base de datos del antivirus, y el otro para scannear los archivos y/o directorios que seleccionemos.  [En la imagen se ve también otro icono nuevo que de forma similar he añadido para ejecutar otro programa que no tiene nada que ver con el antivirus ( - es un renombrador masivo de archivos - ) ].



------------------------

Añadido ( 20-08-2011):

Si tras una actualización de la base de datos no volviera a abrirse el programa, como me paso a mi una vez, ( pero solo una tras hacer lo que pongo a continuación ) debemos realizar lo siguiente para solucionar el problema:

1. Abriremos la terminal en modo root
2. Tecleamos lo siguiente:
echo 128000000 > /proc/sys/kernel/shmmax
3. Luego abrimos el archivo: rcS , con gedit tecleando lo siguiente:
gedit /etc/init.d/rcS
4. Dentro de este archivo incluiremos la siguiente linea:
sysctl -w kernel.shmmax=128000000

Debe quedar así:
#! /bin/sh
#
# rcS
#
# Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order
#
sysctl -w kernel.shmmax=128000000
#
exec /etc/init.d/rc S

5. Guardamos el archivo rcS y salimos de gedit.
7. Cerramos la terminal de root
8. Reiniciamos el PC. Luego abrimos Avast, actualizamos la base de datos de virus, y ya está.

Aprendido en http://foro-ubuntu-guia.963965.n3.nabble.com/Solucion-al-problema-de-Avast-can-not-initialize-avast-engine-Argumento-invalido-tp3269936p3269936.html

------------------------------------------------------------------------------------

lunes, 27 de diciembre de 2010

Programar/Automatizar tareas no repetitivas, con Gnome-Schedule

Este tema es continuación del tema Programar / Automatizar tareas repetitivas con Gnome Schedule/

Imagina que quieres programar una tarea para que se ejecute una sola vez en un determinado momento, este tipo de tareas son Tareas No Repetitivas. Para programar/automatizar tareas ( tanto las repetitivas como las no repetitivas ) existe un programa gráfico: Gnome-Schedule. Para programar / automatizar tareas no repetitivas se puede hacer también de otra forma, con la terminal: Programar / Automatizar tareas no repetitivas con el comando at, es conveniente leer éste tema para comprender mejor el tema actual).

Si queremos que una tarea (o varias ) se ejecute una sola vez en un tiempo determinado ( Tarea No Repetitiva) , podemos usar Gnome-Schedule con la opción "Una tarea que se lanza una sola vez" : esta opción Gnome-Schedule hace de interfaz gráfica del comando at , por lo que antes de ejecutar el comando at, y por tanto las tareas no repetitivas en Gnome-Schedule hay que asegurarse de que el daemon de at (atd ) se ha ejecutado al inicio del sistema ( en mi caso no se iniciaba por defecto, y tuve que hacer que se iniciara: Desde el programa boot-up-manager ( el ejecutable es bum ) he visto que el demonio del comando at ( atd) no estaba activado para que se ejecutara desde el inicio del sistema; he activado el atd, y reiniciado el pc, para que el daemon atd se ejecute desde el inicio .

Inicio de Gnome-Schedule:

Una vez ejecutamos el programa, nos aparece la ventana principal del programa



desde la que podemos seleccionar el tipo de tarea programada: "tarea que se lanzará una sola vez"



En la pantalla de Edición de la Tarea, para ejecutar una tarea única con Gnome-Schedule hay que:

- Poner un nombre descriptivo a la tarea

- Seleccionar la casilla  "Aplicación X"



- Elegir el Tiempo de ejecución: Año, Mes, Dia, Hora y Minuto

- En la sección  Tareas hay que poner:
SHELL=/bin/bash ; DISPLAY=:0 ; un espacio y luego o bien el ejecutable o bien la ruta completa donde esta el script con el que se ejecute un programa gráfico, o bien el comando

Por ejemplo

SHELL=/bin/bash ; DISPLAY=:0 ; sylpheed ---> ejecutable del prográma
SHELL=/bin/bash ; DISPLAY=:0 ; /home/usuario/changebutton ---> ruta completa del script
SHELL=/bin/bash ; DISPLAY=:0 ; cp /home/usuario/fsck /home/usuario/Escritorio ---> comando

Fijarse bien en que los punto y coma ( en rojo ;) están separados por un espacio tanto de lo que los precede como de lo que les sigue:  hay un espacio de separación en varias zonas de las lineas, es necesario ponerlo exactamente así para que se ejecute la tarea.

Se puede crear tres tareas distintas con cada una de las líneas anteriores ; o crear una sola tarea con las tres lineas: en este caso se ejecuta primero el programa gráfico, y cuando lo cierras, se ejecuta luego el script con el que se ejecuta un programa gráfico, y cuando se cierra éste, por fin se ejecuta el comando.

Con cada una de esas tareas se puede crear una Plantilla que nos sirva para futuras ejecuciones, cambiando solo la segunda parte de la linea ( la que esta en azul )



-----------------------------

Gnome-Schedule con permisos de root: El programa Gnome-Schedule se puede usar también con permisos de root, si queremos que las tareas las realice el root, ejecutando: sudo gnome-schedule; Si queremos que se ejecute un script o comando que en su sintaxis lleva el comando sudo, es decir que necesita permisos de root para ejecutarse, tendremos que usar Gnome-Schedule con permisos de root para ejecutar dicha tarea.

Desde el programa Gnome-Schedule del usuario ( y de cada usuario si hay varios  ) y desde el del root, se accede cada uno a sus propias tareas. Desde el Gnome-Schedule ejecutado con permisos de root se puede acceder  ( y modificar )   a las tareas de cada uno de los usuarios que tengamos en el sistema, a través de una nueva opción (cambiar de usuario ) que aparece en la barra de herramientas del programa.



----------------------------------



martes, 21 de diciembre de 2010

Programar/Automatizar tareas no repetitivas, con el comando at

En el tema Crontab, programar / automatizar tareas repetitivas explique como programar/automatizar tareas repetitivas con el comando crontab; y en Programar / automatizar tareas repetitivas con Gnome-Schedule como hacerlo con su interfaz gráfica Gnome-Schedule. El comando crontab sirve para tareas que queremos que se ejecuten de forma repetida en horarios determinados, pero si queremos que una tarea (o varias ) se ejecute una sola vez en un tiempo determinado, debemos usar el comando at.

Daemon atd: El comando at se encarga de ejecutar uno o varios comandos en una fecha indicada en el futuro;  tiene un daemon atd que permite ejecutarlo en el momento que el daemon lo active. Una sola llamada a este comando basta para postergar la ejecución de varias instrucciones, al conjunto de estas se le llama trabajo o job (por su significado en inglés).  ( Desde el programa boot-up-manager - el ejecutable es bum - he visto que el demonio del comando at ( atd) no estaba activado para que se ejecutara desde el inicio del sistema; he activado el atd, y reiniciado el pc, para que el daemon atd se ejecute desde el inicio ).

El daemon atd guarda los trabajos o jobs creados , asignándole un número, en la carpeta /var/spool/cron/atjobs ; una vez ejecutada la tarea, su job correspondiente desaparece de dicha carpeta.

Controlar los usuarios que pueden ejecutar el comando at: En el archivo /etc/at.deny se pueden poner el nombre de usuarios que queramos que no puedan usar este comando, y al revés en el archivo de texto (no viene creado por defecto ) /etc/at.allow se pueden poner el nombre de los usuarios que queramos que puedan usar este comando: para que el comando ejecute una tarea de un usuario, este debe estar incluido en éste archivo. Si creas el archivo de texto /etc/at.allow sólo el usuario que hayas incluido y root pueden ejecutar el comando "at". Ambos archivos solo se pueden editar con permisos de root : sudo gedit /etc/at.allow y sudo gedit /etc/at.deny

El root siempre puede  utilizar  estos  comandos. Para  otros usuarios,  los  permisos  para  utilizarlos  están  determinados en los ficheros /etc/at.allow y /etc/at.deny.
Si el archivo /etc/at.allow existe, sólo  los  usuarios  cuyos  nombres están mencionados aquí tienen permiso para utilizar at.
Si  el archivo /etc/at.allow  no  existe, se chequea /etc/at.deny y entonces todos los usuarios cuyos nombres no estén  mencionados  allí  tienen  permiso para utilizar at.
Si ninguno de los ficheros existe, sólo el root  puede utilizar at.
Un archivo /etc/at.deny vacío significa que todo usuario puede  utilizar  estos comandos, esta es la configuración por defecto.

Controlar las tareas creadas: 1-El comando atq muestra los trabajos, con su número, que se han guardado y no se han ejecutado aún , y 2-el comando atrm elimina un trabajo,indicando el número del trabajo que se desea eliminar: sirve para eliminar antes de que se ejecuta una tarea que hemos creado, y que luego nos hemos arrepentido y no queremos que se ejecute.

Sintaxis del tiempo con el comando at:

El comando at es un comando que se encarga de ejecutar tareas a una hora determinada. Tiene la forma at [hora] [fecha]. Tiempo puede ser:

* Hora: admite los siguientes formatos para las Horas y Minutos: HH:MM, HHMM, HH.MM, HH,MM, Hpm, Ham, también entiende las palabras midnight (00:00), noon (12:00), now (en el momento), teatime (16:00)
* FechaMeses y Dias y Años: Admite los siguientes formatos:  Meses: en inglés: JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC, el Dia y Año  en número , DD.MM.AA (formato europeo ) , MMDDAA, MM/DD/AA, AA-MM-DD ; también palabras en ingles:  today (hoy), tomorrow (mañana), now + tiempo: por ejemplo: now + 5 years, now + 1 min, soporta el singular y el plural (year/s ) , min, minute, hour, day, week, month y year.

Si no se especifica la hora se toma la hora actual.
Si no se especifica año se toma el más próximo.
Si no se especifica fecha se toma la más próxima.

Tras poner at [tiempo] sale at> para ir escribiendo las órdenes de una en una pulsando intro. Para comunicarle que hemos acabado se pulsa Ctrl+D. Para cancelar siempre podrás hacer Ctrl+C ( para cancelar cualquier programa de consola ).

usuario@mint ~ $ at now + 10 min
warning: commands will be executed using /bin/sh
at> sylpheed
at> nautilus
at> <EOT>
job 402 at Sat Dec 11 21:43:00 2010
usuario@mint ~ $

Las órdenes, el trabajo a realizar,  se guardan aunque cierres la consola. Para ver la lista de tareas se usa el comando atq y para borrar se usa atrm y el número o números de las tareas a eliminar. Dichos números aparecen en atq.

Ejemplos de tiempo:
at 1pm may 05            ejecutar el 5 de Mayo a las 13h
at tomorrow                ejecutar mañana a esta hora
at 8:00 tomorrow      ejecutar mañana a las 8h
at now + 1 day            ejecutar mañana a esta misma hora
at 45:12 Ene 10          ejecutar el 10 de Enero a las 12h y 45 min
at 37:04 12 11             ejecutar el 11 de Diciembre  a las 4h y 37 min
at now + 1 week         ejecutar dentro de una semana a esta misma hora

--------------------------------------

Sintaxis del comando que queremos ejecutar con el comando at:

== Para ejecutar un programa gráfico hay que poner DISPLAY=:0 un espacio y el ejecutable, por ejemplo:
usuario@mint ~ $ at now + 2 min
warning: commands will be executed using /bin/sh
at> DISPLAY=:0 sylpheed
at> <EOT>
job 54 at Fri Dec 10 09:42:00 2010
usuario@mint ~ $

== Para ejecutar un comando hay que poner la dirección completa , por ejemplo:
usuario@mint ~ $ at now + 2 min
warning: commands will be executed using /bin/sh
at> cp /home/usuario/fsck /home/usuario/Escritorio
at> <EOT>
job 54 at Fri Dec 10 09:42:00 2010
usuario@mint ~ $

== Para ejecutar un script con el que se ejecute un programa gráfico, hay que poner DISPLAY=:0 , un espacio, y la ruta completa donde este el script:
usuario@mint ~ $ at now + 2 min
warning: commands will be executed using /bin/sh
at> DISPLAY=:0 /home/usuario/changebutton
at> <EOT>
job 54 at Fri Dec 10 09:42:00 2010
usuario@mint ~ $

----------------------------------------------------------------------------

miércoles, 15 de diciembre de 2010

Programar/Automatizar tareas repetitivas, con Gnome-Schedule

Imagina que quieres programar una tarea para que se ejecute periódicamente, en un determinado momento. Por ejemplo, para hacer que se ejecute el gestor de correos 3 veces al día, o para hacer una copia de seguridad de tus archivos el día 1 de cada mes, o cambiar el fondo de escritorio cada30 minutos, este tipo de tareas son Tareas Repetitivas. Para programar/automatizar tareas existe un programa gráfico: Gnome-Schedule ( también se puede hacer de otra forma, con la terminal: crontab-programar/automatizar-tareas , es conveniente leer éste tema para comprender mejor el tema actual). Una vez hallamos programado la tarea no hace falta que tengamos abierto el programa Gnome-Schedule, lo podemos cerrar, que aún así se ejecutará la tarea en el tiempo que hayamos programado, ya que este programa es la interfaz gráfica del comando crontab que se ejecutará en segundo plano.

Crear Tareas que se ejecuten repetidamente:

Con este programa podemos programar/automatizar la ejecución tanto de:  a) programas gráficos, b) scripts,  c) comandos.

Este programa gráfico es la interfaz gráfica del servicio cron, el cual lee un fichero -crontab - donde le indicamos las tareas y cuando las queremos realizar y él se encarga de ejecutarlas por nosotros en el preciso momento que le hayamos indicado en crontab , por lo que tenemos primero que:

Crear un archivo crontab para cada usuario que quiera usar este programa ( naturalmente hacemos esto desde cada sesión de un usuario ):

1-Primero creamos con gedit un archivo de texto, con el texto:
SHELL=/bin/bash
DISPLAY=:0
2-Guardas este archivo con el nombre: cron-usuario , en el directorio /home/usuario   ( Con cada usuario el archivo cron-usuario llevara el nombre del usuario )
3-En la terminal ejecutas: crontab cron-usuario ( luego si quieres ya puedes borrar el archivo de texto cron-usuario).

---------------------------

Inicio de Gnome-Schedule:

Una vez ejecutamos el programa, nos aparece la ventana principal del programa



desde la que podemos seleccionar el tipo de tarea programada: "tarea que se lanzará repetidamente"



A continuación se abre la ventana de Edición de la nueva tarea programada, desde la que vamos a crear una tarea que queremos que se ejecute repetidamente en un tiempo determinado.

== En Descripción: ponemos un nombre que nos diga lo que va a hacer la tarea.
== En Comando: ponemos lo siguiente para crear una tarea para ejecutar una de estas tres cosas:
-- un comando: hay que poner el comando, por ejemplo: tar cvf backup-firefox.tar /home/usuario/.mozilla
-- un script: hay que poner la ruta completa de donde esta el script: por ejemplo: /home/usuario/Scripts/copia-de-firefox
-- un programa gráfico: el nombre del ejecutable de un programa gráfico, por ejemplo: sylpheed

Editado ( 3-1-2011) : si para ejecutar un programa gráfico solo ponemos su ejecutable la tarea lanzará el programa con su interfaz en inglés, para que se lance el programa con la interfaz en español hay que poner: LANG=es_ES.utf8 ejecutable ; en el ejemplo, si como ejecutable ponemos: firefox, se ejecuta el programa en ingles, si ponemos: LANG=es_ES.utf8 sylpheed , si que se ejecuta el programa en español.

Editado (6-1-2011): Para los que vivan fuera de España escribir en un terminal:  set | grep LANG
Saldrá por ejemplo LANG=es_AR.utf8 para los que vivan en Argentina.
usuario@mint ~ $ set | grep LANG
GDM_LANG=es_AR.utf8
LANG=es_AR.utf8
usuario@mint ~ $

En el ejemplo habría que poner, si vives en Argentina,  LANG=es_AR.utf8 sylpheed  . El idioma que aparece al ejecutar el comando varia en función de la lenguna ( o la variante del Español ) en la que iniciemos el sistema.

== En Comportamiento: se puede elegir entre:
-- Comportamiento predeterminado: para un programa gráfico
-- Suprimir salida: si se ejecuta de forma automática sin necesidad de que intervenga para nada el usuario.
-- Aplicación X: para un comando o script en el que se necesite contestar en la terminal
-- Aplicación X: suprimir salida: para un comando o script en el que no se necesite contestar en la terminal, sino que se ejecute de forma automática.



== En Hora y Fecha Básico: podemos elegir entre las opciones: ejecutar  "cada minuto", "cada hora", "cada día", "cada mes", "cada semana",, "al reiniciar"

== En Hora y Fecha Avanzado: podemos especificar mucho mas cuando queremos que se ejecute la tarea, para ello debemos saber como "Editar los Campos de Tiempo"

Edición de los Campos de Tiempo: los editaremos a nuestro gusto, con clíck en los botones Editar del campo que queramos editar, en la siguiente ventana,  según indico a continuación.



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
- día: va de 1 a 31 y es el día del mes en que se ejecuta
- mes: va de 1 a 12 y representa el mes que se ejecuta
- día de la semana: va de 0 a 7 y el el día de la semana en que se ejecuta (el domingo se puede indicar con el 0 o con el 7, el lunes es 1, martes 2, etc)
Con un asterisco * se indica todo es decir todos los minutos, o todos los meses, o todos los días.
‎También se admiten rangos en los campos:
un guión - significa: 0-15 -> intervalo de valores: todos los valores de 0 hasta 15
una coma , indica: 15,30,45 -> valores únicos, solo esos tres valores: 15, 30 y 45
una barra / indica: 1-10/2 -> un incremento de valores: valores en incremento de 2 en 2 , empezando desde 1, es decir: 1,3,5,7,9

——————-

Ejemplos de Campos de Tiempo: ( se omite el comando que se ejecutaría siguiendo las instrucciones dadas por los campos de tiempo anteriores a él ):

0 1 * * * *    Se ejecuta al minuto 1 de cada hora de todos los días
15 8 * * *    A las 8:15 a.m. de cada día
15 20 * * *    A las 8:15 p.m. de cada día
00 5 * * 0    A las 5 a.m. todos los Domingos
* 5 * * 0    Cada minuto de 5:00a.m. a 5:59 a.m. todos los Domingos
45 19 1 * *    A las 7:45 p.m. del primero de cada mes
01 * 20 7 *    Al minuto 1 de cada hora del 20 de Julio
10 1 * 12 1    A la 1:10 a.m. todos los lunes de Diciembre
00 12 16 * 3    A las 12h de los días 16 de cada mes y que sea Miércoles
30 9 20 7 4    A las 9:30 a.m. del dia 20 de Julio y que sea Jueves
30 9 20 7 *    A las 9:30 a.m. del 20 de Julio de cualquier día de la semana
20 * * * 6    Al minuto 20 de cada hora de los Sábados
20 * * 1 6    Al minuto 20 de cada hora de los Sábados de Enero
——————–
–   59 11 * 1-3 1,2,3,4,5    A las 11:59 de Lunes a Viernes, de Enero a Marzo
–  45 * 10-25 * 6-7    Al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea Sábado o Domingo
–  10,30,50 * * * 1,3,5    En el minuto 10, 30 y 50 de todas las horas de los días Lunes, Miércoles y Viernes
–  */15 10-14 * * *    Cada quince minutos de las 10:00a.m. a las 2:00p.m.
–  * 12 1-10/2 2,8 *    Todos los minutos de las 12h, en los días 1,3,5,7 y 9 de Febrero y Agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1)
–  0 */5 1-10,15,20-23 * 3    Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea Miércoles
–  3/3 2/4 2 2 2    Cada 3 minutos empezando por el minuto 3 (3,6,9, etc.) de las horas 2,6,10, etc (cada 4 horas empezando en la hora 2) del día 2 de Febrero y que sea Martes

Podemos programar tareas que se ejecuten cada hora, o cierto día del mes, o todos los meses, o todos los días, o solo los Sábados, o Miércoles, etc. Todo depende de la combinación de valores que pongas en esos campos.

-----------------------------

Gnome-Schedule con permisos de root: El programa Gnome-Schedule se puede usar también con permisos de root, si queremos que las tareas las realice el root, ejecutando: sudo gnome-schedule; Si queremos que se ejecute un script o comando que en su sintaxis lleva el comando sudo, es decir que necesita permisos de root para ejecutarse, tendremos que usar Gnome-Schedule con permisos de root para ejecutar dicha tarea.

Desde el programa Gnome-Schedule del usuario ( y de cada usuario si hay varios  ) y desde el del root, se accede cada uno a sus propias tareas. Desde el Gnome-Schedule ejecutado con permisos de root se puede acceder  ( y modificar )   a las tareas de cada uno de los usuarios que tengamos en el sistema, a través de una nueva opción (cambiar de usuario ) que aparece en la barra de herramientas del programa.


-------------------------------------------------------------------------

viernes, 10 de diciembre de 2010

Sylpheed: programa de correo

Sylpheed  es un programa Administrador de Correo Electrónico, que tiene las siguientes características:
- Una interfaz simple - Una configuración bien organizada  - Ligero  - Soporta varios protocolos  - Poderoso sistema de búsqueda y filtrado - Control de correo basura.

Un motivo por el que me he pasado de Thunderbird a Sylpheed es que éste guarda en dos carpetas distintas y bien delimitadas, por una parte la configuración del programa, y por otra los correos recibidos, guardados, etc, con lo que es mas fácil guardar y recuperar una copia de seguridad de ambas cosas o de solo una de ellas. Otro motivo es que es un programa mas ligero, y se abre más rápido.

Para su mejor funcionamiento y utilización hay que instalar los paquetes: sylpheed, sylpheed-i18n ( para que este en español ) y sylpheed-doc ( para que se tenga acceso a su manual -> en Sylpheed -> Ayuda-Manual en español-> ( 1 ) y  y Preguntas Frecuentes   (faq )  (2)

(1) file:///usr/share/doc/sylpheed-doc/manual/es/sylpheed.html y  (2)  file:///usr/share/doc/sylpheed-doc/FAQ/es/sylpheed-faq.html

También se puede consultar su manual online:  http://sylpheeddoc.sourceforge.net//es/manual/manual.html

I-Creación/Configuración básica de las cuentas de correo:

Como con cada proveedor de servicios de correo la configuración que hay que tener es distinta ( lo cual me quita las ganas de tener otros proveedores de correo con los que tendría que volver a averiguar como configurarlo; se echa una vez mas la falta de standarización.) he hecho este tema para tener una “copia de seguridad” de como hay que configurar las distintas cuentas de emails que tengo:

= Cuenta de correo de ono.com

Al iniciarse por primera vez el programa sale una ventana en la que nos dice que por defecto se va a crear por defecto un buzón la carpeta /home/usuario/Mail, aceptamos. Luego aparece otra ventana en la que nos invita a crear una cuenta de correo, pero yo prefiero decir que no ( click en cancelar )  en ese momento, y crearlas luego como se indica a continuación.

Se realiza en Configuración-> Editar Cuentas


Hacemos click en añadir, para que se abra la ventana de Edición de Cuentas, o a editar para editar una cuenta ya creada antes.

En la ventana de Edición de Cuentas hay varias pestañas que hay que editarlas como se ve en las imágenes ( como ejemplo he puesto los datos de una cuenta de correo de ono.com que es la que uso; para otro tipo de cuenta los datos que haya que poner en cada una de las ventanas puede ir variando.  ) :

- pestaña Básica:  - nombre de la cuenta: podemos poner el que queramos, lo logico es poner el nombre de usuario u otro que sea descriptivo de la cuenta  - nombre completo: nombre de usuario   - dirección de correo   - protocolo pop3   - servidor de recepción: pop3.ono,com  - servidor de envio: smtp.ono.com   - nombre de usuario: (solo el nombre )   -contraseña





- pestaña Enviar: seleccionamos: - Añadir campo fecha  - Generar ID-mensaje ,   -Autentificación smtp: automática ,   - nombre de usuario ( solo nombre ) ,  - contraseña




- pestaña Recibir: la carpeta que hemos puesto como buzón por defecto (#mh/Correo/hatteras) la hemos creado previamente: click con el botón derecho del ratón sobre Correo MH y "crear nueva carpeta": en este ejemplo le he llamado hatteras, como el nombre de la cuenta. ; lo demás es opcional: por ejemplo: - Recibir todo, comprueba si hay mensajes nuevos en esta cuenta  - Eliminar mensajes del servidor al recibir  - Filtrar mensajes al recibir-



- pestaña Componer:



- pestaña Privacidad: es opcional, lo dejo como viene por defecto




- pestaña SSL: seleccionamos no usar ssl  ( tanto en pop3 como en smtp ) y usar ssl no bloqueante




- pestaña Avanzadas: - No seleccionamos ni puerto smtp, ni pop3, lo demás es opcional, podemos no cambiar nada o en mi caso la carpeta que he puesto para que se guarden en ella los mensajes enviados  (#mh/Correo/ha****/enviados) la he creado previamente.


---------------------------------

= Cuenta de correo de gmail.com:

Creamos como en el caso anterior las carpetas que queramos, y en las propiedades de esta cuenta tenemos:

Nombre de la cuenta: un nombre descriptivo de la cuenta, por ejemplo el nombre de usuario

- pestaña Básica:

- Nombre de la cuenta   - Nombre completo: Si queremos poner nuestro nombre de pila
- Dirección de correo: oficina@gmail.com  - Organización: Si queremos ponerla  - Protocolo: POP3
- Servidor de recepción: pop.gmail.com    - Servidor SMTP ( enviar ): smtp.gmail.com
- Usuario: ponemos la dirección de correos, no solo el nombre de usuario   - Contraseña

- pestaña Enviar:

- Añadir campo Fecha, y - Generar ID-Mensaje, - Autentificación smtp: método automático,  - dejamos en blanco tanto el nombre de usuario como la contraseña

- pestaña Recibir:

La carpeta que hemos puesto como buzón por defecto (#mh/Correo/******) la hemos creado previamente: click con el botón derecho del ratón sobre Correo MH y “crear nueva carpeta”: en este ejemplo le he llamado *******, como el nombre de la cuenta. ; lo demás es opcional: por ejemplo: - Recibir todo, comprueba si hay mensajes nuevos en esta cuenta  - Eliminar mensajes del servidor al recibir  - Filtrar mensajes al recibir-

- pestaña SSL:

- Usar SSL para la conexión POP3.   - Usar SSL para la conexión SMTP.    - Utilizar SSL no bloqueante

- pestaña Privacidad: es opcional, lo dejo como viene por defecto

- pestaña Avanzadas:

- Puerto SMTP: 465  - Puerto POP3: 995

Lo demás es opcional, podemos no cambiar nada o como en mi caso la carpeta que he puesto para que se guarden en ella los mensajes enviados  (#mh/Correo/******/enviados) la he creado previamente.
--------------------------------

II-Otras configuraciones: El programa tiene muchas posibilidades de configuración; desde mi punto de vista lo mas básico es lo siguiente:


== Iconos de la Barra de Herramientas: La siguiente configuración, con los icónos que indico, es la que me gusta:

- Buzón remoto - Recibir todo - Recibir - Componer - Borrar - Basura -no Basura - Agenda de direcciones.
 




- Enviar -Reenviar - Responder - reenviar A Todos - Anterior mensaje  - Posterior mensaje  -Buscar en los mensajes - Preferencias de la cuenta



== Control de Correo Basura: el programa tiene al menos tres formas de controlar el correo basura:  Obviamente hay que haber instalado los paquete bogofilter desde Synaptic.

En   -> Configuración -> Preferencias comunes -> pestaña Correo Basura -> Activar control del correo basura:  escoger bogofilter o bsfilter ; yo elijo bogofilter. Previamente he creado una carpeta "Correo Basura" en la que enviar el correo que con el icono "Basura" selecciono como tal. El programa conforme me llegan correos y los selecciono como basura va aprendiendo poco a poco y al final el solo envía a la carpeta correspondiente el correo que considera basura.

Marcar el correo seleccionado actualmente (%f ) como “no spam” usando Bogofilter.: bogofilter -n -v -B "%f"
Marcar el correo seleccionado actualmente (%f ) como “spam” usando Bogofilter: bogofilter -s -v -B "%f"
Orden de clasificación: bogofilter -I



== Buzón Remoto: Con un click en su icono, permite conectarse al servidor ( buzón remoto pop3 ) de la cuenta que tengamos como predeterminada en ese momento ( se puede cambiar desde -> Configuración -> Cambiar la cuenta actual) , y desde él, sin recibir el correo en nuestro pc, borrar directamente el correo que no queramos recibir.




==  Crear filtros: Desde -> Configuración -> Preferencias de filtrado -> añadir Regla de filtrado , se permite crear reglas de filtrado de los mensajes en función de su procedencia, asunto, etc y realizar varias acciones con ellos: enviarlos a la carpeta "papelera", borrarlos, borrarlos del servidor, etc.


--------------------------------

III- Enviar correo a varios destinatarios de nuestra agenda de direcciones:

- Abrimos la Pantalla Componer ( haciendo click en el botón Componer de la barra de herramientas ),
- Elegimos la cuenta de usuario desde ( campo "Desde" ) la que vamos a enviar el mensaje,
- Ponemos el cursor del ratón sobre el campo "Para"
- Abrimos  la Agenda de direcciones



- Elegimos las direcciones de los destinatarios del mensaje a los que queremos enviarlo
- Hacemos click en Agenda de Direcciones-Dirección-Añadir a destinatario o hacemos Ctrl+M
- Cerramos la Agenda de direcciones
- Ya se han añadido al campo "Para" ( de la Pantalla Componer ) las direcciones de los destinatarios, separadas por una coma y un espacio.



( Si a quienes queremos mandar los correos no están en la Agenda de Direcciones, o bien las añadimos y hacemos los pasos indicados, o las ponemos a mano en el campo "Para" con el siguiente formato: nombre-1@cuenta-1, nombre-2@cuenta-2, nombre-3@cuenta-3,  - es decir las direcciones de los destinatarios separadas por una coma y un espacio - )



- Podemos escribir el texto del mensaje, poner el nombre - asunto - del mensaje, añadir archivos adjuntos, etc  rellenando los otros campos de la Pantalla Componer, y enviar el mensaje

------------------------

IV- Copia de Seguridad:

Un motivo por el que me he pasado de Thunderbird a Sylpheed es que éste guarda en dos carpetas distintas y bien delimitadas, por una parte la configuración del programa, y por otra los correos recibidos, guardados, etc, con lo que es mas fácil guardar y recuperar una copia de seguridad de ambas cosas o de solo una de ellas.


- Los archivos de la configuración del programa se guardan en /home/usario/.sylpheed-**  (los asteriscos variaran en función de la versión del programa, en la actualidad es .sylpheed-2.0), ésta es por tanto la carpeta que hay que copiar/restaurar. Desde la terminal, con la orden tar cvf backup-sylpheed.tar /home/usuario/.sylpheed-2.0 , podemos crear el archivo comprimido backup-sylpheed.tar como copia de seguridad de la configuración del programa.

- Los archivos de  los correos guardados, enviados, etc se guardan en /home/usuario/Mail, ésta es por tanto la carpeta que hay que copia/restaurar. Desde la terminal, con la orden: tar cvf backup-mail.tar /home/usuario/Mail , podemos crear el archivo comprimido backup-mail.tar como copia de seguridad de los correos.

-------------------------

En este tema explico como usar Sylpheed desde fuera de la carpeta del usuario

---------------------------------------------------------------------

jueves, 2 de diciembre de 2010

Crontab: Programar/Automatizar tareas repetitivas

Imagina que quieres programar una tarea para que se ejecute periódicamente, o en un determinado momento. 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“.

Servicio cron:

¿Que hace este servicio?
Es un proceso que lee un fichero crontab , 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 hay que tener en cuenta que si el pc está apagado en el momento en que la tarea fue programada, entonces esta no será ejecutada por cron, ni siquiera luego una vez que se haya encendido el sistema ya que su tiempo de ejecución expiró.) .

( Existen utilidades gráficas para programar/automatizar tareas, como son Kcron (en KDE) , o Grontab y Gnome-Schedule (en Gnome), con las que puedes hacer lo mismo que se explica en este tema; si las usas con que hagas los primeros tres pasos de "Creación de un crontab para un usuario", y leas la sección "sintaxis de contrab" te será suficiente para aprender a manejarte con ellas ) .

Si queremos definir una nueva tarea para cron podemos ejecutar en la terminal el comando crontab , el cual admite los siguientes parámetros:
$ crontab instala el fichero indicado como fichero crontab del usuario
$ crontab -e para editar este fichero de tareas que lee el servicio “cron”  Al ejecutar este comando se abre el editor nano.
$ crontab -l para mostrar un listado de las tareas actuales del usuario.
$ crontab -r elimina el fichero crontab del usuario ( es decir no usar este comando, ya que si se usa habría que volver a crear el archivo crontab del usuario )

Para impedir que un usuario utilice cron o mejor dicho el comando crontab, basta con agregar su nombre de usuario al archivo /etc/cron.deny .Para permitirle su uso entonces sería agregar su nombre de usuario en /etc/cron.allow, si por alguna razón se desea negar el uso de cron a todos los usuarios, entonces se puede escribir la palabra ALL al inicio de /etc/cron.deny .

-------------------

Creación de un crontab para un usuario:

La opción que nos interesa usar para la creación de tareas principalmente es crontab -e, para ello tenemos primero que crear un archivo crontab para cada usuario ( naturalmente hacemos esto desde cada sesión de un usuario ), y con cada usuario el archivo cron-usuario llevara el nombre del usuario ):
1-Primero creamos con gedit un archivo de texto, con el texto:
SHELL=/bin/bash
DISPLAY=:0
2-Guardamos este archivo con el nombre: cron-usuario , en el directorio /home/usuario
3- En la terminal ejecutamos: crontab cron-usuario ( luego si quieres ya puedes borrar el archivo de texto cron-usuario). Al ejecutar dicho comando se crea un archivo con el nombre del usuario en /var/spool/cron/crontabs/ ; Este archivo no se debe editar directamente, sino a través de la ejecución del comando crontab -e en la terminal.
4- A partir de ahí puedes ejecutar en la terminal: crontab -e , e ir añadiendo las lineas necesarias para que se ejecuten programas, comandos o scripts, como se explica en las secciones siguientes.
5-Al ejecutar la orden crontab -e en la terminal se abre el editor nano: una vez añadida la/s linea/s, que queremos programar como tarea/s, para guardar los cambios se da a la tecla F3, luego a la tecla Intro, y para salir del editor nano, se da a la tecla F2, y luego cerramos la terminal.  Se pueden añadir tantas lineas como se quiera para ejecutar tantas tareas como se deseen.

Con permisos de root se puede editar los crontabs de cualquier otro usuario tecleando: sudo crontab -e -u nombre_del_usuario

Programar/Automatizar una tarea para un  comando:

Si queremos que el comando (por ejemplo: tar cvf backup-firefox.tar /home/usuario/.mozilla , que nos crearía un archivo comprimido como copia de seguridad de toda la configuración del navegador firefox) lo ejecute un usuario, en la terminal ponemos: crontab -e , se abre el editor nano, añadimos el comando y lo guardamos y cerramos nano, como indicamos arriba. La nueva tarea se guardará en el archivo: /var/spool/cron/crontabs/usuario ( para las tareas que quieras que ejecute el usuario ). Este archivo no se debe editar directamente, sino a través de la ejecución del comando crontab -e en la terminal.

Si tienes varios usuarios, para que con cada uno de ellos puedas tener tareas programadas/automatizadas, tienes que realizar los pasos anteriores, ( desde la sesión de usuario correspondiente ) cambiando usuario por el nombre de cada uno de ellos.

Si queremos que el comando se ejecute con permisos de root ( es decir con sudo delante del comando ), en la terminal ponemos: sudo crontab -e , se abre el editor nano, añadimos el comando, y lo guardamos, y cerramos nado como indicamos arriba. La nueva tarea se guardará en el archivo: /var/spool/cron/crontabs/root ( para las tareas que quieras que ejecuten con permisos de root ). Este archivo no se debe editar directamente, sino a través de la ejecución del comando sudo crontab -e en la terminal.

Como puedes ver en /var/spool/cron/crontabs/ habrá tantos archivos con nombres de usuarios, como usuarios que vayan a ejecutar tareas programadas.

Sintaxis de contrab:

Todos estos ficheros de crontab siguen la misma sintaxis. En ellos tenemos una línea por cada tarea o acción a ejecutar y esta línea tiene la siguiente sintaxis:

minutos horas dia-mes mes dia-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, el lunes es 1, martes 2, etc)
- comando: es el comando a ejecutar (un comando o la ruta a un shell script que queramos ejecutar. )

Con un asterisco * se indica todo es decir todos los minutos, o todos los meses, o todos los dias.
‎También se admiten rangos en los campos:
un guión - significa: 0-15 -> un intervalo de valores: todos los valores de 0 hasta 15
una coma , indica: 15,30,45 -> unos valores determinandos: solo esos tres valores: 15, 30 y 45
una barra / indica: 1-10/2 -> un incremento de valores: valores en incremento de 2 en 2 , empezando desde 1, es decir: 1,3,5,7,9

--------------------------------------------

Esquema de la sintaxis del comando crontab:



-------------------

Ejemplos: ( se omite el comando que se ejecutaría siguiendo las instrucciones dadas por los campos anteriores a él ):

0 1 * * * *    Se ejecuta al minuto 1 de cada hora de todos los días
15 8 * * *    A las 8:15 a.m. de cada día
15 20 * * *    A las 8:15 p.m. de cada día
00 5 * * 0    A las 5 a.m. todos los domingos
* 5 * * 0    Cada minuto de 5:00a.m. a 5:59a.m. todos los domingos
45 19 1 * *    A las 7:45 p.m. del primero de cada mes
01 * 20 7 *    Al minuto 1 de cada hora del 20 de julio
10 1 * 12 1    A la 1:10 a.m. todos los lunes de diciembre
00 12 16 * 3    A las 12h de los días 16 de cada mes y que sea Miércoles
30 9 20 7 4    A las 9:30 a.m. del dia 20 de julio y que sea jueves
30 9 20 7 *    A las 9:30 a.m. del 20 de julio de cualquier día de la semana
20 * * * 6    Al minuto 20 de cada hora de los sábados
20 * * 1 6    Al minuto 20 de cada hora de los sábados de enero
--------------------
--   59 11 * 1-3 1,2,3,4,5    A las 11:59 de lunes a viernes, de enero a marzo
--  45 * 10-25 * 6-7    Al minuto 45 de todas las horas de los días 10 al 25 de todos los meses y que el día sea sábado o domingo
--  10,30,50 * * * 1,3,5    En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y viernes
--  */15 10-14 * * *    Cada quince minutos de las 10:00a.m. a las 2:00p.m.
--  * 12 1-10/2 2,8 *    Todos los minutos de las 12h, en los días 1,3,5,7 y 9 de febrero y agosto. (El incremento en el tercer campo es de 2 y comienza a partir del 1)
--  0 */5 1-10,15,20-23 * 3    Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de cada mes y que el día sea miércoles
--  3/3 2/4 2 2 2    Cada 3 minutos empezando por el minuto 3 (3,6,9, etc.) de las horas 2,6,10, etc (cada 4 horas empezando en la hora 2) del día 2 de febrero y que sea martes

-------------------

Podemos programar tareas que se ejecuten cada hora, o cierto dia del mes, o todos los meses, o todos los dias, o solo los sábados, o miércoles, etc.
Todo depende de la combinación de valores que pongas en esos campos.
Así que, todas esas tareas periódicas que realizas ocasionalmente (un script para que me limpie de ficheros no necesarios, copias de seguridad, recordatorios, etc) podrían ser programados para ejecutarse de manera automática.

----------------
Programar/Automatizar una tarea para un  script:

En la linea de “comando” del cron ( al ejecutar crontab -e ) no solo puedes poner un comando, también puedes crear un shell script que haga lo que tu quieras y después lo ejecutas como tarea programada con contrab. Podría ser algo como esto:

15,30,45 11-12 1,2,3 * * /home/usuario/Scripts/cambiar_wallpaper.sh ( hay que poner la ruta entera del directorio donde esta guardado el script )   que significa: cada dia 1,2 y 3 de todos los meses, a las 11h y 12h y 15, 30 y 45 minutos ejecuta el script: /home/usuario/scripts/cambia_wallpaper.sh

Como antes, si el script queremos que lo use root debemos ejecutar: sudo crontab -e , y editar el archivo que se abre.

------------------------------

Programar/Automatizar una tarea para un programa gráfico:

Cron ejecuta comandos (en principio) que no impliquen una salida por entorno gráfico, pero después de haber creado el archivo: cron-usuario con el texto que se indica mas arriba ( en la sección "crear un crontab para un usuario" ), y de haber ejecutado en la terminal: crontab cron-usuario , ya podemos editar con contrab -e y añadir la linea correspondiente, poniendo como comando el nombre del archivo ejecutable, por ejemplo:
20 15  * * *  sylpheed  haría que el programa de correo se abriera todos los dias a las 15h 20 minutos.

Editado ( 3-1-2011) : si para ejecutar un programa gráfico solo ponemos su ejecutable la tarea lanzará el programa con su interfaz en inglés, para que se lance el programa con la interfaz en español hay que poner: LANG=es_ES.utf8 ejecutable ; en el ejemplo, si como ejecutable ponemos: firefox, se ejecuta el programa en ingles, si ponemos: LANG=es_ES.utf8 sylpheed , si que se ejecuta el programa en español.

Editado (6-1-2011): Para los que vivan fuera de España escribir en un terminal:  set | grep LANG
Saldrá por ejemplo LANG=es_AR.utf8 para los que vivan en Argentina.
usuario@mint ~ $ set | grep LANG
GDM_LANG=es_AR.utf8
LANG=es_AR.utf8
usuario@mint ~ $

En el ejemplo habría que poner, si vives en Argentina,  LANG=es_AR.utf8 sylpheed  .El idioma que aparece al ejecutar el comando varia en función de la lenguna ( o la variante del Español ) en la que iniciemos el sistema.

Como antes, si el programa gráfico queremos que lo use root debemos ejecutar: sudo crontab -e y editar el archivo que se abre.

-------------------------------

Un ejemplo, a modo de chuleta o recordatorio,  de como seria el texto que aparece al ejecutar contrab -e y que permitiría ejecutar tanto un script, como un programa gráfico o un comando sería:

SHELL=/bin/bash
DISPLAY=:0

# sintaxis: minutos horas dia-mes mes dia-semana comando
# guión - = intervalo de valores
# coma , = valores determinados
# barra / = incremento de valores
# asterisco * = todo
# ejemplo para ejecutar un script
20 17 * * * /home/usuario/Scripts/cambiar_wallpaper.sh
# ejemplo para ejecutar un programa gráfico
20 15 * * * LANG=es_ES.utf8 sylpheed
# ejemplo para ejecutar un comando
32 17 * * * tar cvf backup-firefox.tar /home/usuario/.mozilla

-------------------------------

Este tema lo he podido escribir gracias a la inestimable y desinteresada ayuda tanto de Miguel k3b - usuario de http://foro-ubuntu-guia.blogspot.com/ , como de Sanatas -usuario de Guadalinex  http://www.guadalinex.org/participa/foros/foro/25 - ( puestos por su orden alfabético ), a los que desde aquí agradezco su amabilidad y paciencia conmigo.

----------------------------------------------------------------------------

martes, 23 de noviembre de 2010

Restaurar el Sistema tras un desastre, a un punto anterior.

RESTAURAR EL SISTEMA (CON LA MISMA VERSIÓN DE LA DISTRO), TRAS UN DESASTRE , A UN PUNTO ANTERIOR EN EL TIEMPO.

Supongamos que se produce un desastre en nuestro sistema que no podemos arreglar, y queremos volver a tener el sistema lo mas parecido posible a como lo teníamos en un punto anterior en el tiempo: para poder recuperar el sistema (con la misma versión de la distro) a un punto en el que funcionaba correctamente, aplicando lo que se va a explicar,  se necesita tener la partición /home por separado de la partición / y no haber borrado los archivos de la caché de apt: /var/cache/apt/archives

Con lo que se indica a continuación podremos volver a tener nuestro sistema en un estado en el que volverá a funcionar correctamente, como tras una instalación del sistema desde cero, y con los mismos programas que tuviéramos instalados cuando el sistema funcionaba, sin tenerlos que buscar e instalar de uno en uno, e incluso pudiéndolos instalar sin tener conexión a internet.

( Se puede complementar con un programa de copia de seguridad Back in Time con el que se pueden crear "instantáneas" ( snapshots ) de los directorios del sistema que quieras: es buena idea hacer con este programa una copia de los directorios /home, /boot y /etc : copia-de-seguridad-de-nuestra-configuración.)

Los pasos que se indican a continuación se deben hacer en un momento en el que el sistema funciona correctamente para que se pueda recuperar posteriormente si es necesario.

I- Crear archivos de Recuperación:

Paso 1- crear un apt.tgz ( archivo comprimido ) con los repositorios que tienes en Synaptic y las claves de orígenes de Software: para ello se ejecuta en la terminal el comando:


sudo tar zcvf apt_`date +%d%b%y`.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/

Esto creará en la carpeta de usuario un archivo apt_fecha.tgz  ( por ejemplo apt_16Nov10.tgz )

Paso 2- Crear un archivo con una lista de los paquetes instalados: para ello se ejecuta en la terminal el comando:


sudo apt-get install dselect && dpkg --get-selections | grep -v deinstall | cut -f1> paquetes-totales_`date +%d%b%y`

Esto crea un archivo de nombre paquetes-totales_fecha (por ejemplo paquetes-totales_16nov10 ) en la carpeta de usuario.

Otra forma de guardar una lista de los programas instalados ( crear el archivo paquetes-totales_fecha)  es desde Synaptic -> seleccionas "Instalados" -> Archivo -> Save markings as -> en la ventana que se abre seleccionas "guardar el estado completo, no solo los cambios" y le pones un nombre a la lista - paquetes-totales_fecha - y le das a guardar en /home/usuario.





Con todo esto tenemos una copia de los paquetes instalados en el sistema, de los repositorios, y de las claves de orígenes de software que tienes en un momento dado en el que todo el sistema funciona correctamente.

Estos dos pasos se pueden hacer creando un script de Recuperación (en /home/usuario/Scripts/Recuperación ) , que puede ser ejecutado manualmente cuando queramos, o de forma automatizada como se indica mas abajo. El contenido de dicho script es:

#!/bin/bash
cd /home/usuario
echo Script para crear archivos de recuperación
echo crear el archivo apt_fecha.tgz
sudo tar zcvf apt_`date +%d%b%y`.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/
echo crear el archivo paquetes-totales_fecha
sudo apt-get install dselect && dpkg --get-selections | grep -v deinstall | cut -f1>paquetes-totales_`date +%d%b%y`
exit

paso 3- Guardas los archivos apt_fecha.tgz y paquetes-totales_fecha en lugar seguro...se supone que /home lo es ya que al recuperar el sistema no se va a formatear dicha partición, pero por si acaso se puede guardar otra copia en  por ejemplo en un pendrive o disco duro externo

-----------------------------------------

II- Recuperar el sistema a como estaba cuando se hizo lo anterior:

¿ Para que sirve esto ? pues para recuperar el sistema si tienes un desastre...

1-Instalas el sistema desde cero (desde el livecd, instalas la misma versión) , formateando la partición / , pero sin formatear la partición /home.

2-Reponemos los repositorios, las llaves y el caché de apt: para ello elegimos el archivo apt_fecha que queramos restaurar, y se ejecuta en la terminal el comando:


sudo tar zxvf  apt_fecha.tgz -C /   ( en el comando se sustituye apt_fecha.tgz por el nombre del archivo correspondiente, por ejemplo por apt_16Nov10.tgz )

3-Reinstalamos todos los paquetes que había antes del desastre: para ello elegimos el archivo paquetes-totales_fecha que queramos restaurar, y luego se ejecuta en la terminal el comando:


sudo apt-get update && sudo apt-get install dselect && sudo apt-get dist-upgrade && sudo dpkg --set-selections < paquetes-totales_fecha  && sudo dselect install ( en el comando se sustituye paquetes-totales_fecha  por el nombre del archivo correspondiente, por ejemplo por  paquetes-totales_16Nov10 )

Y dejará todos los paquetes que había instalados... Quedaría retocar el escritorio solamente, pero si se hizo sobre un sistema con una partición /home separada ni eso. Quizás haya que restaurar el Menú de Aplicaciones, para eso ver: copia de seguridad & recuperar Menú de Aplicaciones

En principio este método si no has borrado la caché, y no has bloqueado ningún archivo... No tiene porqué dañarte nada. Es más, es que si no has borrado la caché lo puedes hasta hacer sin estar conectado a internet... ya que te instalarían los paquetes que están en la caché que previamente has salvado.

----------------------

III Programar/Automatizar la creación de los paquetes de recuperación (apt_fecha.tgz y paquetes-totales_fecha ) :

Lo ideal seria ir guardando versiones sucesivas del archivo apt_fecha.tgz y de paquetes-totales_fecha, y que además se hiciera como una tarea programada automáticamente cada por ejemplo 1 mes ó 1 semana, etc.     ¿ como se puede hacer ?:  Creando el  script  de Recuperación con los comandos arriba indicados - en el apartado I -  y :

1- Automatizando la tarea con el comando crontab , como se explica en http://hatteras-blog.blogspot.com.es/2010/12/crontab-programarautomatizar-tareas.html

2- Ejecutandolo con: el programa gnome-schedule: Ejecutar el programa con permisos de root: sudo gnome-schedule ya que el script que queremos ejecutar con este programa contiene unos comandos que se ejecutan con permisos de root. . Hay que editar la tarea como se indica en la imagen: - comando: la dirección donde se ha guardado el script de Recuperación ( /home/usuario/Scripts/Recuperación)  - modo: comportamiento predeterminado.  - fecha de ejecución: en este ejemplo: todos los miércoles, y sábados ( dias 1,3, 6: lunes, miércoles y sábado), de todos los meses, a las 10:25h



Aquí se explica como usar el programa Gnome-Schedule:  Programar/Automatizar tareas repetitivas con Gnome-Schedule/

----------------------------------------------------------------------

jueves, 18 de noviembre de 2010

Recuperar archivos borrados o de un dispositivo dañado.

Método sencillo y útil ante la pérdida de información importante por un fallo mecánico de un dispositivo: pendrive, cdrom o dvd, o por haber borrado accidentalmente un archivo sin haberlo llevado a la papelera. Se necesita que el sistema sea capaz de reconocer y  montar dicho dispositivo. Se puede usar con cualquier dispositivo que el sistema reconozca y monte como sistema de almacenamiento de datos, por ejemplo una cámara digital de fotos.

A)-Saber la ruta donde se monta el dispositivo: ( hay varias formas, indico las dos que me parecen mas sencillas )

1- Ejecutar en la terminal el comando mount filtrado (con grep) por el nombre que le ha dado el sistema al montarlo ( etiqueta del dispositivo ): por ejemplo: mount | grep /media/PENTARJETA
.

Según puede verse en el ejemplo, la ruta del dispositivo es /dev/sdb1 y ha sido montado en /media/PENTARJETA.

Si no se tienen conectados muchos dispositivos, puede servir simplemente ejecutar el comando  mount en la terminal y buscando hasta encontrar tu dispositivo:

2- Se puede añadir al panel el Monitor del Sistema, y en la pestaña Sistema de Archivos ver la información del dispositivo que buscamos:


B)-Crear la imagen .iso del dispositvo:

Para poder crear la imagen ejecuta desde la terminal el siguiente comando

sudo dd if=/dev/sdb1 of=/tmp/dispositivo.iso conv=noerror,sync

donde:

/dev/sdb1 es el dispositivo a recuperar (para saber cuál es el tuyo no tiene más que seguir las instrucciones arriba indicadas ).

/tmp/dispositivo.iso es el fichero que vamos a crear a partir del contenido del dispositivo, en el directorio /tmp. ( asegúrate de que en dicha dirección tienes suficiente espacio para la imagen.iso que se creará, o cambia la dirección hacia alguna otra en la que si que tengas espacio: por ejmplo una partición aparte del sistema, o un disco duro externo ) 

conv=noerror,sync es el parámetro que indica al comando dd que ignore los errores y siga generando la imagen del dispositivo aunque se produzcan fallos.

C)-Recuperar ficheros de la imagen .iso creada:

Una vez creada la imagen del paso anterior (recomiendo hacer copia de seguridad de la iso por si fuese necesario) sólo nos queda instalar con Synaptic el paquete foremost y luego lanzar (una vez más desde la terminal) el comando:

foremost -v -t all -o /home/usuario/recuperados -i /tmp/dispositivo.iso

donde las opciones:

-v : modo detallado, para saber que está haciendo foremost de una manera más completa.

-o : Con la opción -o indicamos el lugar donde almacenar los archivos recuperados: en este ejemplo /home/usuario/recuperados

-t all : Con la opción -t indicamos el tipo de archivo a buscar: para recuperar todo lo recuperable ponemos -t all; puedes cambiar la opción all por una de las extensiones que foremost es capaz de recuperar, para que solo se recuperen los archivos con esa extensión: por ejemplo -t jpg ; o poner una lista de extensiones de archivo, separadas por comas: por ejemplo -t jpg,doc,png

-i : Con la opción -i indicamos el lugar donde esta la imagen .iso a escanear, en este ejemplo:  /tmp/dispositivo.iso

En el directorio /home/usuario/recuperados , aparecerán los  directorios para todos y cada uno de los tipos de archivos que foremost es capaz de recuperar (avi, bmp, dll, doc, docx, exe, gif, htm, jar, jpg, mdb, mov, mpg, mp4, ole, pdf, png , ppt, rar, wav, xls, zip , etc …  )  Lamentablemente la última versión de foremost aún no puede recuperar archivos con la extensión.mp3

————————---------

Otro programa similar se puede instalar desde Synaptic ( esta en casi todas las distros ) : testdisk ; una vez instalado también se habrá instalado otro comando: photorec . Éste último comando se ejecuta desde la terminal, y sirve para lo mismo que el comando foremost.

Como usar photorec: Recuperacion de fotos y archivos con PhotoRec o     PhotoRec paso a paso

Lista de archivos que photorec recupera: Formatos De_Archivos_Recuperados_Por_PhotoRec

------------------------------------------------------------------