este 28 de marzo a las 8:30 PM se realizara un evento a nivel mundial
la hora de la tierra, que consiste en apagar las luces y desconectar aparatos eléctricos por una hora, y así darle un respiro energético a nuestro maltrecho planeta, si algo podemos hacer hagamoslo no!
y de todos modos en lo obscuro también se pasa bien.
Buscar este blog
viernes, 20 de marzo de 2009
jueves, 12 de marzo de 2009
Torpedo Linea de comandos Linux Unix
Por el post anterior, me dí cuenta que me faltaba un torpedo, para recordar los comandos básicos de Linux en la consola.
Suele pasar que entre mas utilizas la interfase gráfica (GUI) o las herramientas basadas en web se te empieza a atrofiar el hemisferio Linux de el cerebro y no te acuerdas de todos esos simples y rápidos comandos que te entregaban o solucionaban tus requerimientos.
Bueno aquí le dejo una que encontré y es bastante completa y no tan básica
gracias a www.pixelbeat.org
Suele pasar que entre mas utilizas la interfase gráfica (GUI) o las herramientas basadas en web se te empieza a atrofiar el hemisferio Linux de el cerebro y no te acuerdas de todos esos simples y rápidos comandos que te entregaban o solucionaban tus requerimientos.
Bueno aquí le dejo una que encontré y es bastante completa y no tan básica
Comando | Descripción | |
• | apropos palabra | Ver comandos relacionados con palabra. Ver también threadsafe |
| which comando | Ver la ruta completa de comando |
| time comando | Medir cuanto tarda comando |
• | time cat | Iniciar cronómetro. Ctrl-d para detenerlo. Ver también sw |
• | nice info | Lanzar comando con prioridad baja (info en este ejemplo) |
• | renice 19 -p $$ | Darle prioridad baja al shell (guión). Usar para tareas no interactivas |
dir navegación | ||
• | cd - | Volver al directorio anterior |
• | cd | Ir al directorio personal (home) |
| (cd dir && comando) | Ir a dir, ejecutar comando y volver al directorio inicial |
• | pushd . | Guardar el directorio actual en la pila para luego, poder hacer popd y volver al mismo |
búsquedas de archivo | ||
• | alias l='ls -l --color=auto' | listado de directorio rápido |
• | ls -lrt | Listar archivos por fecha. Ver también newest |
• | ls /usr/bin | pr -T9 -W$COLUMNS | Imprimir 9 columnas en ancho de la terminal |
| find -name '*.[ch]' | xargs grep -E 'expre' | Buscar 'expre' en este directorio y subdirectorios. Ver también findrepo |
| find -type f -print0 | xargs -r0 grep -F 'ejemplo' | Buscar 'ejemplo' en todos los archivos regulares en este directorio y subdirectorios |
| find -maxdepth 1 -type f | xargs grep -F 'ejemplo' | Buscar 'ejemplo' en todos los archivos regulares de este directorio |
| find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done | Procesar cada elemento con muchos comandos (con un bucle while) |
• | find -type f ! -perm -444 | Hallar archivos sin permiso general de lectura (util para sedes web) |
• | find -type d ! -perm -111 | Hallar directorios sin permiso general de acceso (util para sedes web) |
• | locate -r 'file[^/]*\.txt' | Buscar nombres en indice en cache. Este re es igual a glob *file*.txt |
• | look referencia | Búsqueda rápida (ordenada) de prefijo en diccionario |
• | grep --color referencia /usr/share/dict/palabras | Resaltar ocurrencias de expresión regular en diccionario |
archivos | ||
| gpg -c file | Encriptar archivo |
| gpg file.gpg | Desencriptar archivo |
| tar -c dir/ | bzip2 > dir.tar.bz2 | Crear archivo compacto de dir/ |
| bzip2 -dc dir.tar.bz2 | tar -x | Extraer archivo compacto (usar gzip en vez de bzip2 para archivos tar.gz ) |
| tar -c dir/ | gzip | gpg -c | ssh user@remoto 'dd of=dir.tar.gz.gpg' | Crear compactado encriptado de dir/ en equipo remoto |
| find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2 | Crear compactado de subconjunto de dir/ y subdirectorios |
| find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents | Copiar subconjunto de dir/ y subdirectorios |
| ( tar -c /dire/de/copiame ) | ( cd /este/dir/ && tar -x -p ) | Copiar (con permisos) directorio copiame/ a directorio /este/dir/ |
| ( cd /dire/de/copiame && tar -c . ) | ( cd /este/dir/ && tar -x -p ) | Copiar (con permisos) contenido del directorio copiame/ a directorio /este/dir/ |
| ( tar -c /dire/de/copiame ) | ssh -C user@remoto 'cd /este/dir/ && tar -x -p' | Copiar (con permisos) directorio copiame/ a directorio remoto /este/dir/ |
| dd bs=1M if=/dev/hda | gzip | ssh user@remoto 'dd of=hda.gz' | Respaldo de disco duro en equipo remoto |
rsync (Usar la opción --dry-run para probarlo) | ||
| rsync -P rsync://rsync.servidor.com/ruta/a/archivo archivo | Obtenerr solo diffs. Repetir muchas veces para descargas conflictivas |
| rsync --bwlimit=1000 desdearchivo alarchivo | Copia local con taza límite. Parecido a nice para E/S (I/O) |
| rsync -az -e ssh --delete ~/public_html/ remoto.com:'~/public_html' | Espejo de sede web (usando compresión y encriptado) |
| rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ | Sincronizando directorio actual con uno remoto |
wget (herramienta de descargas multiuso) | ||
• | (cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) | Guardar en directorio actual una versión navegable de una página web |
| wget -c http://www.ejemplo.com/largo.archivo | Retomar descarga de un archivo parcialmente descargado |
| wget -r -nd -np -l1 -A '*.jpg' http://www.ejemplo.com/ | Descargar una serie de archivos en el directorio actual |
| wget ftp://remoto/archivo[1-9].iso/ | FTP permite globalizaciones directas |
• | wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head | Procesando directamente la salida |
| echo 'wget url' | at 01:00 | Descargar la url a 1AM al directorio en que esté |
| wget --limit-rate=20k url | Hacer descargas de baja prioridad (en este caso, no exceder los 20KB/s) |
| wget -nv --spider --force-html -i bookmarks.html | Revisando los enlaces de una página |
| wget --mirror http://www.ejemplo.com/ | Actualizar eficientemente una copia local de una página web (útil si usamos cron) |
redes (Nota los comandos ifconfig, route, mii-tool, nslookup son obsoletos) | ||
| ethtool interface | Listar estado de interfase |
• | ip link show | Listar interfases |
| ip link set dev eth0 name wan | Renombrar eth0 a wan |
| ip addr add 1.2.3.4/24 brd + dev eth0 | Agregar ip y máscara (255.255.255.0) |
| ip link set dev interface up | Subir (o bajar) la interfase |
| ip route add default via 1.2.3.254 | Establecer 1.2.3.254 como valor por omisión para la puerta de enlace. |
• | tc qdisc add dev lo root handle 1:0 netem delay 20msec | Agregarle 20ms de espera al dispositivo de retorno (para hacer pruebas) |
• | tc qdisc del dev lo root | Quitar la espera agregada antes. |
• | host pixelbeat.org | Obtener la dirección ip para el dominio o al revés |
• | hostname -i | Obtener la dirección ip local (equivale al anfitrión `hostname`) |
• | netstat -tupl | Listar los servicios de internet de un sistema |
• | netstat -tup | Listar las conexiones activas de/hacia un sistema |
windows (nota samba es el paquete que permite todos estos comandos de redes de windows ) | ||
• | smbtree | Hallar equipos windows. Ver también findsmb |
| nmblookup -A 1.2.3.4 | Hallar el nombre (netbios) de windows asociado con la dirección ip |
| smbclient -L windows_box | Listar archivos compartidos en equipos windows o servidor samba |
| mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share | Montar un directorio compartido |
| echo 'mensaje' | smbclient -M windows_box | Enviar mensaje emergente al equipo windows (desactivado por omisión en XP sp2) |
math | ||
• | echo '(1 + sqrt(5))/2' | bc -l | Cuentas rápidas (Calcular φ). Ver también bc |
• | echo 'obase=16; ibase=10; 64206' | bc | Conversiones de base (decimal a hexadecimal) |
• | echo $((0x2dec)) | Conversiones de base (hex a dec) ((expansión aritmética del shell)) |
• | echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc | Mas complejo (int) x.ej. Ejemplo: tasa máxima de paquetes FastE |
• | echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python | Python maneja notación científica |
• | echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist | Graficar tasa de paquetes FastE vs. tamaño de paquetes |
• | seq 100 | (tr '\n' +; echo 0) | bc | Agregar una columna de números. Ver también add y funcpy |
manejo de textos (nota: como sed usa stdin y stdout, para editar archivos, agregar... | ||
| sed 's/cadena1/cadena2/g' | Remplaza cadena1 por cadena2 |
| sed 's/\(.*\)1/\12/g' | Modificar cualquiercadena1 con cualquiercadena2 |
| sed '/ *#/d; /^ *$/d' | Quitar comentarios y lineas en blanco |
| sed ':a; /\\$/N; s/\\\n//; ta' | Concatenar lineas con \ al final |
| sed 's/[ \t]*$//' | Quitar blancos finales de las lineas |
| sed 's/\([\\`\\"$\\\\]\)/\\\1/g' | Escapar metacaracteres activos del shell dentro de comillas dobles |
| sed -n '1000p;1000q' | Listar la línea 1000° |
| sed -n '10,20p;20q' | Listar de la linea 10 a la 20 |
| sed -n 's/.* | Extraer titulo de página web en HTML |
| sort -t. -k1,1n -k2,2n -k3,3n -k4,4n | Sort de direcciones ip de tipo IPV4 |
• | echo 'Test' | tr '[:lower:]' '[:upper:]' | Conversión de cajas |
• | tr -dc '[:print:]' < /dev/urandom | Filtrando caracteres no imprimibles |
• | grep 'processor' /proc/cpuinfo | wc -l | Contar lineas |
definir operaciones (Nota export LANG=C es para acelerar, aquí también se supone que no hay líneas duplicadas en los archivos) | ||
| sort archivo1 archivo2 | uniq | Union de archivos sin ordenar |
| sort archivo1 archivo2 | uniq -d | Intersección de archivos sin ordenar |
| sort archivo1 archivo1 archivo2 | uniq -u | Diferencia de archivos sin ordenar |
| sort archivo1 archivo2 | uniq -u | Diferencia Simétrica de archivos sin ordenar |
| comm archivo1 archivo2 | sed 's/^\t*//' | Unión de archivos ordenados |
| comm -12 archivo1 archivo2 | Intersección de archivos ordenados |
| comm -13 archivo1 archivo2 | Diferencia de archivos ordenados |
| comm -3 archivo1 archivo2 | sed 's/^\t*//' | Diferencia Simétrica de archivos ordenados |
calendario | ||
• | cal -3 | Mostrar calendario |
• | cal 9 1752 | Mostrar calendario para mes y año determinado |
• | date -d fri | Que día cae este viernes. Ver también day |
• | date --date='25 Dec' +%A | ¿En que día cae la Navidad, este año? |
• | date --date '1970-01-01 UTC 1234567890 seconds' | Convertir total de segundos desde la época a una fecha |
• | TZ=':America/Los_Angeles' date | ¿Que hora es en la Costa Oeste de EEUU (usar tzselect para hallar TZ) |
| echo "mail -s 'tomar el tren' P@draigBrady.com < /dev/null" | at 17:45 | Recordatorio por email |
• | echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes" | Recordatorio emergente |
locales | ||
• | printf "%'d\n" 1234 | Imprimir numero agrupado por miles de acuerdo a su locale |
• | BLOCK_SIZE=\'1 ls -l | pedir que ls agrupe por miles de acuerdo a su locale |
• | echo "Yo vivo en `locale territory`" | Extraer información de la base de datos del locale |
• | LANG=en_IE.utf8 locale int_prefix | Buscar información de locale para determinado país. Ver también ccodes |
• | locale | cut -d= -f1 | xargs locale -kc | less | Listar campos en base de datos del locale |
recode (obsoletos: iconv, dos2unix, unix2dos) | ||
• | recode -l | less | Ver conversiones disponibles (aliases en cada línea) |
| recode windows-1252.. archivo_a_cambiar.txt | "ansi" de Windows a tabla de caracteres locales (auto hace conversión CRLF) |
| recode utf-8/CRLF.. archivo_a_cambiar.txt | utf8 de Windows a tabla de caracteres locales |
| recode iso-8859-15..utf8 archivo_a_cambiar.txt | Latin9 (Europa oriental) a utf8 |
| recode ../b64 <> archivo.b64 | Codificado Base64 |
| recode /qp.. <> archivo.qp | Decodificado de citas imprimibles (qp) |
| recode ..HTML <> archivo.html | Texto a HTML |
• | recode -lf windows-1252 | grep euro | Buscar tabla de caracteres |
• | echo -n 0x80 | recode latin-9/x1..dump | Mostrar representación de un código en tabla de caracteres latin-9 |
• | echo -n 0x20AC | recode ucs-2/x2..latin-9/x | Ver codificado latin-9 |
• | echo -n 0x20AC | recode ucs-2/x2..utf-8/x | Ver codificado utf-8 |
CDs | ||
| gzip < /dev/cdrom > cdrom.iso.gz | Guardar una copia de los datos de cdrom |
| mkisofs -V NOMBRE -r dir | gzip > cdrom.iso.gz | Crear imagen de cdrom con el contenido de dir |
| mount -o loop cdrom.iso /mnt/dir | Montar la imagen cdrom en /mnt/dir (solo lectura) |
| cdrecord -v dev=/dev/cdrom blank=fast | Limpiar un CDRW |
| gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom - | Grabar un cdrom con imagen (usar dev=ATAPI -scanbus para confirmar ruta dev) |
| cdparanoia -B | Extraer pistas de audio desde un CD a archivos wav en directorio actual |
| cdrecord -v dev=/dev/cdrom -audio *.wav | Armar un CD de audio con todos los wavs en directorio actual (ver también cdrdao) |
| oggenc --tracknum='pista' pista.cdda.wav -o 'pista.ogg' | Crear un archivo ogg con un archivo wav |
espacio de disco (Ver también FSlint) | ||
• | ls -lSr | Mostrar archivos, de menor a mayor |
• | du -s * | sort -k1,1rn | head | Mostrar usuarios de disco principales en el directorio actual. Ver también dutop |
• | df -h | Mostrar espacio libre de disco |
• | df -i | Mostrar inodos libres |
• | fdisk -l | Mostrar tamaños y tipos de particiones de disco (pedir como root) |
• | rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n | Listar todos los paquetes por tamaño instalado (Bytes) de distribuciones RPMs |
• | dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n | istar todos los paquetes por tamaño instalado (Kbytes) de distribuciones deb |
• | dd bs=1 seek=2TB if=/dev/null of=ext3.test | Crear un gran archivo de prueba (sin ocupar espacio). Ver también truncate |
monitoreo/rastreo | ||
• | strace -c ls >/dev/null | Resumir/perfil de llamadas al sistema hechas con comando |
• | strace -f -e open ls >/dev/null | Listar llamadas al sistema hechas con comando |
• | ltrace -f -e getenv ls >/dev/null | Listar llamadas a librerías hechas con comando |
• | lsof -p $$ | Listar las rutas que abrió el id de proceso |
• | lsof ~ | Listar procesos que solicitaron apertura de rutas |
• | tcpdump not port 22 | Ver tráfico de redes excepto ssh. Ver también tcpdump_not_me |
• | ps -e -o pid,args --forest | Listar procesos de una jerarquía |
• | ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d' | Listar procesos por % de uso de cpu |
• | ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS | Listar procesos por uso de memoria. Ver también ps_mem.py |
• | ps -C firefox-bin -L -o pid,tid,pcpu,state | Listar todos los hilos de un proceso determinado |
• | ps -p 1,2 | Listar información de un ID determinado |
• | last reboot | Ver historia de reencendido del sistema |
• | free -m | Ver cantidad de RAM (que queda) (-m muestra en MB) |
• | watch -n.1 'cat /proc/interrupts' | Observar continuamente los datos que van cambiando |
información del sistema (Ver también sysinfo) | ||
| hdparm -i /dev/hda | Ver informe sobre partición hda |
| hdparm -tT /dev/hda | Hacer una prueba de velocidad de lectura en partición hda |
| badblocks -s /dev/hda | Hallar bloques ilegibles en partición hda |
• | mount | column -t | Ver particiones montadas en el sistema (y alinear la salida) |
• | cat /proc/partitions | Ver todas las particiones registradas en el sistema |
• | grep MemTotal /proc/meminfo | Ver el total de RAM que registra el sistema |
• | grep "model name" /proc/cpuinfo | Ver informe de CPU(s) |
• | lspci -tv | Ver informe de PCI |
• | lsusb -tv | Ver informe de USB |
interactivo | ||
• | mc | Poderoso administrador de archivos que permite navegar por rpm, tar, ftp, ssh, ... |
• | screen | Terminales virtuales con capacidad de reacomodamiento, ... |
• | links | Navegador web |
• | gnuplot | Graficos interactivos/ programables |
• | octave | Entorno parecido a Matlab |
Miscellaneous | ||
• | alias hd='od -Ax -tx1z -v' | Práctico vuelco hexa. (uso x.ej.: • hd /proc/self/cmdline | less) |
• | alias realpath='readlink -f' | Canonicalizar ruta. (uso x.ej.: • realpath ~/../$USER) |
• | set | grep $USER | Buscar en el entorno actual |
| touch -c -t 0304050607 archivo | Asignarle a archivo la fecha (AAMMDDhhmm) |
• | python -m SimpleHTTPServer | Serve current directory tree at http://$HOSTNAME:8000/ |
gracias a www.pixelbeat.org
¿como saber que ubuntu hay instalado en una maquina remota?
nunca me había pasado que necesitara ver que versión de ubuntu, RHEL, o otra distribución de linux tiene instalada un pc remoto, y buscando encontré varias soluciones pero la mas sencilla es la siguiente
en la maquina remota ejecutas el siguiente comando
#tail /etc/issue
Ubuntu 8.04.2 \n \l
en mi caso ese es la respuesta pero en otras maquinas varia un poco
CentOS release 3.9 (Final)
Kernel \r on an \m
Los ficheros /etc/issue y /etc/issue.net son los que contienen el texto que te aparece en cada petición de login y como este mensaje es modificado cada ves que se realiza un upgrade que afecte a la versión, siempre tiene el dato que requiero. :-)
en la maquina remota ejecutas el siguiente comando
#tail /etc/issue
Ubuntu 8.04.2 \n \l
en mi caso ese es la respuesta pero en otras maquinas varia un poco
CentOS release 3.9 (Final)
Kernel \r on an \m
Los ficheros /etc/issue y /etc/issue.net son los que contienen el texto que te aparece en cada petición de login y como este mensaje es modificado cada ves que se realiza un upgrade que afecte a la versión, siempre tiene el dato que requiero. :-)
viernes, 6 de marzo de 2009
Instalación de GroundWork Community Edition v5.3.0
Instalación de GroundWork Community Edition v5.3.0
GroundWork es una herramienta creada en torno a Nagios, la que integra una serie de software para la la administración, control y apoyo a Nagios, Cacti, Ganglia, Nagios, NeDi, RRDtool , en un a sola interfase basada en web, basta de modificar los archivos de nagios a manito, con esto todo se simplifica, aunque siempre es necesario saber como trabaja Nagios para que puedas entender como trabaja GroundWork.
Bueno vamos manos a la obra
la instalación la realice en Ubuntu 8.04.2 y los requerimientos de software son:
nada
todo lo necesario viene integrado en el binario de instalación GroundWork
es recomendable instalarlo en un server limpio y que no comparta maquina con otros servidores, bases de datos, web, correo, etc.
#chmod +x groundwork-5.3.0-br46-gw333-linux-32-installer.bin
procedamos con la instalación
#./groundwork-5.3.0-br46-gw333-linux-32-installer.bin
esto ejecuta la instalación en modo GUI o grafico
van a salir al comienzo una serie de pantallas recomendando unos determinados requerimientos para el pc, solicita 4 Gb de RAM, 160GB espacio en el disco, y 2 CPU de 3000Mhz, en lo personal creo que exagera, hasta donde lo he probado no instala en menos de 1Gb de ram, sobre esto instala sin problemas y los otros parámetros son advertencias.
1-. ventana del setup presionar Adelante
2-. ventana pide una password para el usuario root del mysql ---> Adelante
3 -. ventana del EULA o licencia seleccionar I accept... ---> Adelante ---> Adelante
4 -. ventana notification component seleccionar yes ---> Adelante

Username: admin
Password: admin
mi experiencia con GroundWork ha sido buena, la facilidad con que agregas maquinas y servicios a monitorizar, es realmente útil a la hora de administrar una red grande donde tienes servidores tanto en tu red local como en otros sites, como herramienta para administradores de sistemas es un gran aporte.
links: http://www.groundworkopensource.com
GroundWork es una herramienta creada en torno a Nagios, la que integra una serie de software para la la administración, control y apoyo a Nagios, Cacti, Ganglia, Nagios, NeDi, RRDtool , en un a sola interfase basada en web, basta de modificar los archivos de nagios a manito, con esto todo se simplifica, aunque siempre es necesario saber como trabaja Nagios para que puedas entender como trabaja GroundWork.
Bueno vamos manos a la obra
la instalación la realice en Ubuntu 8.04.2 y los requerimientos de software son:
nada
todo lo necesario viene integrado en el binario de instalación GroundWork
es recomendable instalarlo en un server limpio y que no comparta maquina con otros servidores, bases de datos, web, correo, etc.
descarga el binario de http://www.groundworkopensource.com/community/downloads/
darle permisos de ejecución#chmod +x groundwork-5.3.0-br46-gw333-linux-32-installer.bin
procedamos con la instalación
#./groundwork-5.3.0-br46-gw333-linux-32-installer.bin
esto ejecuta la instalación en modo GUI o grafico
van a salir al comienzo una serie de pantallas recomendando unos determinados requerimientos para el pc, solicita 4 Gb de RAM, 160GB espacio en el disco, y 2 CPU de 3000Mhz, en lo personal creo que exagera, hasta donde lo he probado no instala en menos de 1Gb de ram, sobre esto instala sin problemas y los otros parámetros son advertencias.
1-. ventana del setup presionar Adelante
2-. ventana pide una password para el usuario root del mysql ---> Adelante

4 -. ventana notification component seleccionar yes ---> Adelante

después de un rato de instalar todos los servicios y componentes termina el proceso y inicia los servicios.
Username: admin
Password: admin
hay una demo en http://www.groundworkopensource.com/demo/
para conocer sobre la operación y configuración consulta los foros http://www.groundworkopensource.com/community/forums/
ahora lo que queda es configurar para monitorizar los servers o equipos que desees.mi experiencia con GroundWork ha sido buena, la facilidad con que agregas maquinas y servicios a monitorizar, es realmente útil a la hora de administrar una red grande donde tienes servidores tanto en tu red local como en otros sites, como herramienta para administradores de sistemas es un gran aporte.
links: http://www.groundworkopensource.com
martes, 3 de marzo de 2009
El show de juanelo
Este es un blog dedicado al un curioso personaje JUANELO, creado por Marco Canepa, este es un personaje con una agudeza social y contingente única, es el fiel reflejo de la patudez, y cara de raja de nuestra sociedad, tiene una mirada critica de los eventos contingentes con una mirada de humor, me encanta, de echo imprimo las mejores y la pongo en el diario mural del departamento.
Esta bajo licencia Creative Commons, no podía ser de otra manera.

http://www.juanelo.cl
no se lo pierdan
Esta bajo licencia Creative Commons, no podía ser de otra manera.
http://www.juanelo.cl
no se lo pierdan
Suscribirse a:
Entradas (Atom)