¿Quien dijo “No sé como Automatizar Tareas en un Sistema Operativo GNU/Linux desde un Terminal” usando Canaima 4.X?


FELIZ AGOSTO: 2014 (PUBLICACIÓN 150)

Saludos: Integrantes de la Gran Comunidad de Usuarios del Software Libre (No necesariamente gratis) y Usuarios del Linux Post Install – Script Bicentenario (CMSL / U-LPI-SB), Compañeros, Colegas y Autodidactas del Siglo XXI. Y ahora también a los Ingenieros en Telecomunicaciones, Sistemas e Informática, Licenciados y Técnicos de áreas afines.

Saludo de Bienvenida

En esta Vigésima primera (21°) publicación del año vamos a aprender sobre los comandos más útiles para la Automatización de Tareas desde un Terminal (Consola) para así optimizar nuestros Recursos y Tiempo, es decir, exploraremos como desde el terminal podemos: programar actividades que nos permitan ahorrar Horas/Labor de ejecución, supervisión y control tratando de explicarlo de una manera, practica y sencilla. Todo esto con la intención de seguir intentando desmitificar otro de esos paradigmas sobre GNU/Linux que muchos de los Usuarios de Sistemas Operativos Privativos y uno que otro Linuxero Novato tienen todavía metido entre ceja y ceja. El mito de “No sé como Automatizar Tareas en un Sistema Operativo GNU/Linux desde un Terminal” usando Canaima 4.X? En este caso, no solo veremos el concepto del Comando y sus opciones asociadas, si que también nos concentraremos en las Mejores Practicas (Best Practices) para obtener las automatizaciones más eficiente y practicas. Bueno aquí lo tienen, y demuéstrenle a los escépticos e incrédulos que no es cierto, que solo es desconocimiento o falta de experiencia técnica. Estos son pequeños “Tips” que nos facilitan realizar esas operaciones técnicas reservadas por lo general para personas expertas (Administradores de Sistemas y/o Servidores) en DEBIAN o nuestro Sistema Operativo Nacional basado en DEBIAN, “Canaima GNU/Linux”.

Pero antes los invito a ver este Canal de vídeos de Youtube, para que se auto-entrenen o por lo menos vean algunos si no son muy expertos en trabajando en GNU/Linux o trabajo en el Terminal (Consola) del Sistema Operativo GNU/Linux.

Linux LPI 101 Español

LINUX DEBIAN 6.0.1, LINUX LPIC

 

 

Automatización de Tareas desde un Terminal (Consola)

 

Como Administrador de Sistemas, no es probable que a uno le guste tener que reinventar la rueda continuamente. La labor de administrador ya implica suficiente trabajo como para perder el tiempo en tareas repetitivas que pueden automatizarse fácilmente. Los Scripts de Shell resultan muy convenientes para agrupar en un archivo una serie de comandos (que normalmente se escribirían en la línea de comandos) para resolver tareas de una sola vez. Todos esos comandos que se incluyen en el archivo se comportan como si fueran un único comando; lo único que hay que hacer es escribir el nombre del archivo y todos los comandos en él contenidos serán ejecutados. Los Scripts de Shell permiten transformar muchas tareas tediosas en comandos de una única línea. ¿Qué pasaría si pudiéramos ir un paso más allá y no tener ni siquiera que escribir el nombre de los Scripts de Shell? Pues bien, Linux dispone de dos comandos de automatización de tareas para hacer, precisamente, que se ejecuten las tareas en un momento determinado. Ni siquiera hace falta tener una sesión iniciada en el sistema para que las tareas se ejecuten, aunque,por supuesto, el sistema deberá estar encendido para que los dos comandos puedan llevar a cabo su trabajo.

Estos dos comandos son at (que incluye al comando batch) y cron. El comando at se emplea para planificar la ejecución de tareas una única vez en el momento especificado y funciona basándose en el concepto de cola de trabajos (batch se emplea para planificar la ejecución de tareas una única vez cuando la carga del sistema lo permita). El comando cron se emplea para planificar tareas que se tengan que ejecutar más de una vez en intervalos predefinidos.Tanto el comando at como el comando cron son demonios (comandos que se ejecutan en segundo plano que se encuentran continuamente a la espera hasta que son necesarios) que son arrancados por los archivos de inicialización durante el inicio del sistema. Si se examinan todos los procesos que se estén ejecutando en el sistema en un instante determinado (ps aux), pueden observarse los procesos con identificador de proceso PID 1888, que es el proceso correspondiente al comando (demonio) at (/usr/sbin/atd), y PID 328, que es el comando (demonio) cron (crond).

$ ps aux

============================

 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1799 0.0 0.0 1348 148 ? S 19:23 0:00 cronddaemon 1888 0.0 0.1 1336 188 ? S 19:23 0:00 [atd]

CRON

* Información básica de cron: Las características más importantes del servicio cron son las siguientes

  • Nombre del demonio: crond
  • Nombre del fichero de configuración (disponible para root): /etc/crontab
  • Programa para inicio y parada del demonio: /etc/init.d/cron
  • Orden para la programación de tareas (disponible para los usuarios con suficientes privilegios): crontab
  • Sistema de log (logs) típico de los sistemas GNU/Linux: /var/log/cron

* Importante: La configuración del funcionamiento de cron se encuentra dentro del directorio /etc.

* Arranque y parada del demonio

Para poder arrancar o parar el demonio cron hay que ejecutar las órdenes siguientes:

  • Arranque del demonio cron: $/etc/init.d/cron start
  • Parada del demonio cron: $/etc/init.d/cron stop
  • Ver su estado de ejecución en linea: $ service cron status

* Estructura del archivo crontab

El fichero crontab esta dividido en líneas y cada línea representa una tarea programada. Estas líneas tienen el siguiente formato:

# minuto hora día mes día_semana usuario orden_a_ejecutar

Estos campos pueden tener los siguientes valores:

  • El campo minuto puede tener un valor entre [0-59]
  • El campo hora puede tener un valor entre [00-23]
  • El día del mes puede tener un valor entre [1-31]
  • El mes del año puede tener un valor entre los valores [1-12]
  • El día de la semana puede tener un valor entre [0-7], asumiendo el 0 como inicio de la semana en domingo, y el valor 7 también como domingo (el 1 será el lunes, 2 martes…)
  • El campo usuario es aquel usuario del sistema con permisos que ha definido la tarea programada
  • El último campo indica la orden, programa o script que se ejecutará.

Símbolos especiales para los cinco primeros campos.

* : indica cualquier valor
, : actúa como separador de una lista de valores
# : indica que lo que acompaña es un comentario (no se ejecutará)
– : sirve para indicar un rango de valores
/ : sirve para indicar un paso de valor (por ejemplo, en el campo hora si se indica */4 se está detallando que la tarea se realizará cada cuatro horas).

Por ejemplo, imaginemos que se quiere ejecutar un script scr.sh a las 9 y las 18 horas todos los días laborables, la línea de configuración sería la siguiente:
0 9,18 * * 1-5 scr.sh

Imaginemos que queremos ejecutar el script el día 18 del mes y todos los martes:
* * 18 * 2 echo scr.sh

La línea anterior se ejecutará todos los martes y los días 18 de cada mes. Y el martes 18 se ejecutará dos veces.

Cadenas comodín

En vez de la configuración anterior se pueden utilizar las siguientes cadenas comodín:
@reboot: Se ejecuta al iniciarse la máquina.
@yearly: Se ejecuta una vez al año.
@monthly: Se ejecuta una vez al mes.
@weekly: Se ejecuta una vez por semana.
@daily: Se ejecuta una vez al día.
@hourly: Se ejecuta una vez por hora.

Por ejemplo la línea “@reboot /home/usuario/al_arrancar.sh” ejecutará /home/usuario/al_arrancar.sh cuando arranque el sistema.

Importante: Todas las tareas programadas se ejecutan mediante una shell.

* Ejemplos de uso:

¿Qué hace el siguiente comando?
01 04 1 1 1 /home/usuario/al_arrancar.sh
El comando anterior ejecutará /home/usuario/al_arrancar.sh a las 4:01am de Enero y cada Lunes en Enero

¿Qué hace el siguiente comando?
01 04 * * * /home/usuario/al_arrancar.sh
El ejemplo anterior ejecutará /home/usuario/al_arrancar.sh a las 4:01am cada día de cada mes.

¿Qué hace el siguiente comando?
01,31 04,05 1-15 1,6 * /home/usuario/al_arrancar.sh
El ejemplo anterior ejecutará /home/usuario/al_arrancar.sh a las 4 o 5 y un minuto o 31 minutos desde el 1 hasta el 15 de cada Enero hasta Junio.

¿Y si quiero ejecutar un comando cada 10 minutos?
*/10 * * * * /home/usuario/al_arrancar.sh

¿Sería esta línea equivalente?
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
SI

¿Qué hace el siguiente comando?
45 04 * * * /home/usuario/al_arrancar.sh
Ejecuta el comando /home/usuario/al_arrancar.sh a las 4 y 45 de la mañana

¿Qué hace el siguiente comando?
45 04 * * * /home/usuario/uno.sh && /home/usuario/dos.sh
Ejecuta el comando dos.sh a las 4 y 45 de la mañana solo si uno.sh se ejecuta con éxito.

Orden Crontab

Cron también se puede configurar mediante la orden crontab. Crontab lo que hace es gestionar los ficheros crontabs asignados a cada usuario (en /var/spool/cron/crontabs/).
Crontab permite a cada usuario poder gestionar sus propias planificaciones de tareas.

Su sintaxis consiste en la orden crontab seguida del fichero, y de forma opcional, algunos parámetros:
crontab [-l e r u] fichero

Respecto a los parámetros, su significado es el siguiente:

-l : muestra el fichero de configuración del usuario
-e: edita el fichero de configuración del usuario
-r: borra el fichero de configuración del usuario
-u usuario: especifica el usuario propietario de la tarea (normalmente, esta opción la usa el usuario root para cambiar propietarios de tareas).

* Otros Ejemplos:

 

cron-linux-tareas-periódicas

crontab

 

ANACRON

Es común que un servidor se mantenga encendido las 24 horas del día, por lo que el programa cron anterior es totalmente adecuado para automatizar tareas que, en la mayoría de los casos, se ejecutan en horas de poco uso del sistema. Pero es necesario tener en cuenta que también existen equipos que, a ciertas horas, se encuentran apagados, por lo que las tareas que se encuentren definidas en el fichero /etc/crontab, no se ejecutarán. Para estos casos disponemos de la utilidad anacron.

Una de las principales diferencias entre cron y anacron es que anacron no es demonio, por lo que no se encuentra permanentemente corriendo en segundo plano. Es necesario ejecutarlo a través de un script de inicio del sistema o mediante cron. Otra diferencia es que anacron solo permite programar tareas por días, al contrario que cron, que especifica minutos y horas a lo largo del día.

El funcionamiento de anacron es semejante a cron; sus tareas se definen en el fichero /etc/anacrontab. Cuando se ejecuta, comprueba las tareas e intervalos definidos y, en caso de que en dicho intervalo no se haya ejecutado aún el comando indicado, lo inicia.

Como es predecible, la instalación de dicho servicio (aunque es estándar en los sistemas Debian GNU/Linux) se realizaría mediante la orden: $ apt-get install anacron

Al igual que cron que tiene su /etc/crontab, anacron tiene su propio /etc/anacrontab.

* Formato del archivo anacrontab:

periodo retraso identificador_del_trabajo comando

1. Campo 1: (periodo de recurrencia), Indica el número de días: 1 – diario / 7 – semanal /30 – mensual / N – Cualquier número en el que N indica el número de días.
Nota: También se puede utilizar ‘@monthly’ para un job que se necesite ejecutar mensualmente.

2. Campo 2: (retraso) es el retraso: Número de minutos que tiene que esperar anacron desde que arranque la máquina.

3. Campo 3: (identificador_del_trabajo): Indica donde almacena la marca de tiempo del trabajo. Debería de ser única por cada trabajo. Estará disponible bajo el directorio /var/spool/anacron. Este fichero contendrá una única línea donde indica cuando fue la última vez que se ejecutó el trabajo.

4. Campo 4: Es el comando a ejecutar.

* Ejemplos de uso:

Imaginemos que queremos ejecutar el script /home/andrino/backup.sh cada 7 días. El día que supuestamente la tarea backup.sh debe de ser ejecutada, si el sistema está abajo por alguna razón, anacrón lo ejecutará una vez pasados 15 minutos tras arrancar la máquina sin tener que esperar otros 7 días.

$ cat /etc/anacrontab
7 15 test.daily /bin/sh /home/andrino/backup.sh

En el ejemplo anterior con un delay de 15 minutos se ejecuta cada 7 días el script backup.sh ¿Qué ocurre cuando el equipo no se reinicia? ¿En ese caso cuando se ejecuta el trabajo?

Esto se puede especificar con la variable de entorno START_HOURS_RANGE en el fichero /etc/anacrontab.

Un ejemplo sería añadir la siguiente línea al anacrontab:

START_HOURS_RANGE=3-22

Esto haría que se ejecutase el trabajo en un rango de 3 a.m a 10 p.m.

Además del delay especificado por el usuario en el segundo campo del fichero /etc/anacrontab, anacrón también añade de forma aleatoria un número de x minutos. Esta x está definida en la variable RANDOM_DELAY del fichero /etc/anacrontab. Por defecto está establecida en 45 (esto significa que anacrón añadirá un número de 0 a 45 minutos elegido aleatoriamente). Para añadir manualmente este retardo basta con añadir la siguiente línea:

RANDOM_DELAY=30

Esta linea anterior añadida al fichero hará que el anacron ejecute la tarea con un retardo aleatorio de 0 a 30 minutos.

-bin-bash_001

 

AT

 

El comando at permite ejecutar un único comando en un momento específico del futuro una sola vez en lugar de hacerlo regularmente, supone un despliegue menor que cron y anacron. Normalmente, recibe una única opción (aunque también se puede ajustar este comportamiento): una hora. Esta hora puede adoptar varias formas:

  • Una hora del día: podemos especificar la hora del día como HH:MM seguida opcionalmente por AM o PM si utilizamos un formato de 12 horas. Si la hora especificada ya ha pasado, la operación se ejecutará al día siguiente.
  • noon (mediodía), midnight (medianoche) o teatime (la hora de té): estas tres palabras se explican por si solas, la hora del té son las 4 PM.
  • Un día específico: podremos planificar una tarea at con más de 24 horas de antelación especificando el día tras la hora del día. Para ello se emplea el siguiente formato MMDDAA, MM/DD/AA o DD.MM.AA. Otra opción sería especificar la fecha como nombre del mes día año.
  • Un periodo futuro especificado: podemos especificar un momento utilizando la palabra clave now (ahora), un signo de la suma (+) y un periodo temporal, como en now + 2 para ejecutar una tarea en 2 horas.

at depende del demonio atd,  si el sistema no lo inicia automáticamente puede que tengamos que configurar un script de inicio SysV para que lo haga. Cuando ejecutemos at y le especifiquemos una hora, el programa responderá con su propio prompt, at>, que trataremos igual que el promptde bash u otra consola de comandos. Cuando finalicemos, pulsaremos Control+d para abandonar este prompt. Otra opción es pasarle a at un fichero de comandos con el parámetro -f, como en at -f comands.sh  noon, que ejecutará el contenido de comands.sh al medio día.

at posee varias herramientas de soporte, una de ellas es el demonio atd que debe estar iniciado para que at haga su trabajo. Otro programa de soporte es atq, que lista las tareas de atpendientes. atrm elimina una tarea at de la cola y batch que funciona de un modo similar a at pero que ejecuta las tareas cuando el nivel de carga del sistema baja de 0,8. Estas utilidades son muy sencillas, a atq le basta con que le escribamos su nombre. Para utilizar atrm sólo tendremos que pasarle el número de tarea atque devuelve atq.

at permite restricciones similares a las de cron. Los ficheros /etc/at.allow y  /etc/at.deny funcionan exactamente igual a los ficheros /etc/cron.allow y /etc/cron.deny. at posee algunas peculiaridades, si no existe ninguno de estos dos ficheros, sólo root puede utilizar at. at.allow lista los usuarios que tienen acceso a at, si at.deny existe, entonces tendrán acceso todos los usuarios excepto los recogidos en este fichero.

Esta seguridad más restrictiva hace que el programa rara vez se instale con permisos de ejecución restrictivos, aunque podemos utilizar los permisos del fichero del programa para denegar a los usuarios normales la posibilidad de ejecutar at si queremos una capa adicional de seguridad.

* at es un conjunto de programas los cuales se detallan a continuación:

 

  • atd – Es el demonio encargado de ejecutar todas las tareas encomendadas a at.
  • at – Es el comando para programar tareas.
  • atq – Es un comando que muestra las tareas pendientes de ejecutar por el usuario que lo invoca.
  • atrm – Es un comando que elimina una tarea de la lista de pendientes.

 

* La instalación de at en un Sistema Operativo basado en DEBIAN se realizará con el siguiente comando:

$ apt-get install at
* Ficheros y permisos

Existen dos ficheros que permiten regular la utilización del comando at y son los siguientes:

  • /etc/at.allow – De existir este fichero, solamente los usuarios contenidos en él podrán ejecutar at.
  • /etc/at.deny – De existir este fichero, los usuarios listados en él no podrán ejecutar los comandos at, atrm, y atq.

En el caso de que ambos ficheros no existan, solamente root podrá ejecutar el comando at. No obstante, en Ubuntu por defecto el fichero /etc/at.deny existe y contiene una serie de usuarios utilizados por demonios y procesos que obviamente no tiene porque lanzar comandos at. No son usuarios normales del sistema.

* Ejemplos de uso:

1.- En el siguiente ejemplo vamos a dejar programado para dentro de cinco minutos un borrado de todos los archivos (no directorios) del directorio /tmp. Para ello ejecutaremos el comando “at now +5 min”:

proyectotictac@pc-hogar:~$ at now +5 min
warning: commands will be executed using /bin/sh
at> rm /tmp/*
at>
job 3 at Fri Dec 20 09:00:00 2013

Una vez ejecutamos este comando at, el sistema nos va a pedir comandos hasta que tecleemos CTRL+D (EOT). En ese momento el sistema deja programado el trabajo con su identificador correspondiente (job 3) y nos avisa cuando se va a ejecutar (job 3 at Fri Dec 20 09:00:00 2013).

proyectotictac@pc-hogar:~$ atq
3 Fri Dec 20 09:00:00 2013 a morenoperezjc

Podemos ver que la tarea 3 está pendiente de ejecución y la ha lanzado el usuario proyectotictac.

Si se quiere eliminar la tarea número 3 bastará ejecutar el comando atrm con el parámetro 3 y se eliminará de la cola de tareas a realizar:

proyectotictac@pc-hogar:~$ atrm 3

Para verificar que se ha borrado la tarea, nuevamente se vuelve a ejecutar el comando atq:

proyectotictac@pc-hogar:~$ atq
2.- Otros ejemplos de uso

$at HH[:]MM[am|pm] [Mes día]

– A esta hora se le puede añadir un número seguido de su unidad (minutes, hours, days o weeks)

$ at 1830 Feb 15 + 3 days (ejecutar a las 6 y media el 18 de febrero)

– También se pueden utilizar valores relativos como son now, midnight, noon, teatime, today o tomorrow.

$ at 11am tomorrow (ejecutar mañana a las 11 am)
$ at now (ejecutar ahora mismo)

– También se puede dejar un script en ejecución con el siguiente formato de comando:

$at now + 5 min < backup.sh (dejar pendiente de ejecución el script backup.sh para dentro de 5 minutos)

Para mayor explicación sobre el tema pueden ver el siguiente vídeo o buscar en Google sobre el tema:

 

Los comandos $ at y $ cron.

 

Control de procesos y tareas (parte 1)

Control de procesos y tareas (parte 2)

 

Espero les haya gustado y les sea útil dicha información, en la siguiente parte veremos otros prácticos comandos para usar en el Terminal y obtener información útil sobre el Sistema Operativo y el Sistema de Archivo.

No olviden contestar la Encuesta y/o agregarse a la Pagina de Facebook Script Bicentenario y/o al Grupo de Facebook Linux Post Install para estar pendientes de las novedades en el Blog.

##########################################

Aquí les dejo esta encuesta para medir el apoyo logrado:

##########################################

=========================================================================================

Recordemos que básicamente este Blog se dedica a explicar todo lo relacionado con mi Aplicación, el Linux Post Install – Script Bicentenario (LPI-SB), el cual es una aplicación de Software Libre como pocas en su tipo en el mundo, es decir, con él una persona (Novata, Experta o Técnica) se puede ahorrar incuantificables horas/labor en entrenamiento y estandarización de procesos de Instalación, Actualización, Mantenimiento, Soporte (Resolución de problemas), Configuración de Perfiles de Usuarios o Parámetros dentro de su Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB es un Script de Bash Shell desarrollado con tecnología “dialog, gxmessage y zenity” para su interfase gráfica y con “espeak, festival, festvox, mbrola, mpg123, speech y stardict”. El LPI-SB es un Sistema Experto que emula el razonamiento de un Especialista (Analista) Técnico experto en Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB busca una mejor y uniforme calidad y rapidez en las respuestas a los Usuarios dando así lugar a una mejora de la productividad del Humano “experto” que presta el servicio. El LPI-SB trabaja como un Asistente Técnico con una interfase amigable y multimedia, es decir, con Ventanas, Asistencia por Voz, Alertas de Sonido y Manipulación de archivos de Sistema y Ofimáticos. También implementa la configuración de Perfiles de Usuario de forma que el Sistema Operativo GNU/Linux conserve su bajo consumo de recursos y se conserve como un Sistema Operativo Estable y Ligero, pero lleno de herramientas y aplicaciones elementales y productivas que faciliten su usabilidad ante los usuarios, es decir, que facilite el ser usados por cualquier persona (Usuario Básico, Administrativo, Avanzado, Programador, Técnico, entre otros). El LPI-SB proporciona a la Distribución Canaima GNU/Linux y otras escalabilidad, adaptabilidad, modularidad y ahorro de horas/labor en configuración al personal Técnico o no Técnico que lo implemente. En resumen, actúa como una pequeña inteligencia artificial capaz de lograr la ejecución de una operación idónea o pertinente para resolver una necesidad o poder resolver un problema específico. Si quieren conocer o experimentar con el LPI-SB6 pueden hacer clic en el siguiente enlace:

Todo sobre el LPI-SB6

Postdata: Soy un Ingeniero en Informática (Líder en Proyectos de Migración de Software Libre a Nivel de Usuarios) con un excelente empleo, pero si me ofrecen 14.000,00 Bs. + Beneficios puedo considerar ofertas! Para cualquier información llamar al teléfono0416.610.13.03 ó escribirme al correo: albertccs1976@hotmail.com y albertccs1976@gmail.com

=========================================================================================

REPÚBLICA BOLIVARIANA DE VENEZUELA

LEY DE INFOGOBIERNO

TÍTULO II

DE LA ORGANIZACIÓN EN EL PODER PÚBLICO PARA EL USO DE LAS TECNOLOGÍAS DE INFORMACIÓN

Capítulo II
De la Comisión Nacional de las Tecnologías de Información

 

Prohibición para integrar el Consejo Directivo

Artículo 45. No podrán ser designados o designadas director o directora general o, miembros del Consejo directivo ni suplentes:

1. Las personas que tengan parentesco hasta el cuarto grado de consanguinidad o segundo de afinidad, o sean cónyuges del Presidente o Presidenta de la República, del Vicepresidente Ejecutivo o Vicepresidenta Ejecutiva de la República o de la máxima autoridad del órgano rector o de algún miembro de la dirección de la Comisión Nacional de las Tecnologías de Información.

2. Quienes en beneficio propio o de un tercero, directa o indirectamente, hayan celebrado contratos de obra o de suministro de bienes o servicios con la Comisión Nacional de las Tecnologías de Información y no los hayan finiquitado en el año inmediatamente anterior a sus designaciones.

3. Quienes tengan conflicto de intereses con el cargo a desempeñar.

4. Las personas que hayan sido declaradas en estado de quiebra, culpable o fraudulenta, y los condenados o condenadas por delitos contra el patrimonio público.

Responsabilidad de los miembros del Consejo Directivo

Articulo 46. Los miembros del Consejo Directivo serán responsables civil, penal, disciplinaria y administrativamente de las decisiones adoptadas en sus reuniones de conformidad con las leyes que rigen la materia.

__________________________________________________________________

Atrévete, usa Linux, sobre todo Canaima GNU / Linux.

La Lucha es Global y somos Ciudadanos Globales, todos a luchar por un Mundo Mejor!

Anuncios

Gracias por tus comentarios...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s