Instalar Sublime Text 2 + Package control manager + Emmet plugin

Sublime Text es un editor de texto que permite ahorrar mucho tiempo a la hora de desarrollar aplicaciones que usan mucho codigo, tal como html, css, javascript, php, jquery, etc etc.

Ademas permite utilizar snippets, que son atajos rapidos de codigo, que nos permite ahorrar. mucho tiempo.

Permite el uso de plugins, que aumentan las caracteristicas del programa, como por ejemplo “Emmet” (antiguamente llamado “ZenCode”), que permite crear codigo de una forma muy rapida.

Para poder instalar facilmente plugins, asi como el plugin emmet, debemos instalar  el package control manager para sublime text.

Vamos a ver los pasos para instalar todo:

Paso 1: Instalar sublime text 2

Lo descargamos de esta direccion. Elegimos la version correcta:
http://www.sublimetext.com/2

Paso 2: Instalamos el Package control manager:

Vamos a la web oficial:
https://sublime.wbond.net/installation

Elegimos Sublime text 2, y copiamos el codigo que aparece (Todo el codigo):

import urllib2,os; pf=’Package Control.sublime-package’; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), ‘wb’ ).write( urllib2.urlopen( ‘http://sublime.wbond.net/’ +pf.replace( ‘ ‘,’%20’ )).read()); print( ‘Please restart Sublime Text to finish installation’)

Vamos a nuestro programa sublime text, y vamos al menu View -> Show Console

Pegamos el codigo copiado, y le damos a INTRO.

Cerramos sublime Text, y lo abrimos de nuevo

Esto instalara todo lo necesario.

Paso 3: Instalar el Plugin EMMET:

Vamos al Menu Preferences -> Package Control, y elegimos INSTALL PACKAGE

Aparacera una lista de packages diferentes que podemos instalar. Aquí vienen incluidos todo tipo de plugins , asi como temas o pieles para nuestro sublime text, para poder cambiar el aspecto visual. Escribimos Emmet, y elegimos el paquete. Fijaros que pondrá entre paréntesis en la descripción del paquete (Ex-ZenCode). Elegimos el paquete, y se instalara.

Una vez terminado, podeis crear un nuevo documento de HTML por ejemplo, y pobrar el funcionamiento, escribiendo algo asi:

table>tr.fila>td*8
y le damos a tabulador.

Os deberia crear la tabla de forma automatica, de una fila y 8 columnas.

Si queréis mas información podeis consultar paginas web como estas:

http://falasco.org/guia-definitiva-sublime-text-2

http://html5facil.com/tutoriales/escribe-codigo-como-un-maestro-zen-con-zen-coding-en-sublime-text-2

http://unadocenade.com/una-docena-de-razones-para-utilizar-sublime-text-2/

http://coding.smashingmagazine.com/2013/03/26/goodbye-zen-coding-hello-emmet/

NOTA: Un paquete muy pero que muy util, es el paquete HTML5. Esto os permitira añadir etiquetas html5 de una manera muy pero que muy rapida. Añadirlo igual que hemos añadido el paquete EMMET, pero escribiendo en la busqueda HTML5.

Un saludo!!

Lista completa de atajos de teclado para Windows 8

Lista completa de atajos de teclado para Windows 8

Lista completa de atajos de teclado para Windows 8

Estraido de la web:
http://www.muycomputer.com/2012/10/28/lista-completa-de-atajos-de-teclado-para-windows-8

  • Tecla Windows: Cambiar entre la pantalla de inicio Modern UI y la última aplicación
  • Tecla Windows + C: Abre la charms bar (barra de herramientas de Windows 8)
  • Tecla Windows + Tab: Accede a la barra de herramientas Modern UI
  • Tecla Windows + I: Accede a la configuración
  • Tecla Windows + H: Accede a Compartir
  • Tecla Windows + K: Accede a Dispositivos
  • Tecla Windows + Q: Accede a la búsqueda de apps
  • Tecla Windows + F: Accede a la búsqueda de ficheros
  • Tecla Windows + W: Accede a la configuración de búsqueda
  • Tecla Windows + P: Accede a la barra de la segunda pantalla
  • Tecla Windows + Z: Barra de aplicaciones si estás ejecutando Modern UI
  • Tecla Windows + X: Accede al menú de herramientas
  • Tecla Windows + O: Orientación de la pantalla de bloqueo
  • Tecla Windows + . : Mueve la pantalla dividida a la derecha
  • Tecla Windows + Shift + . : Mueve la pantallla dividida a la izquierda
  • Tecla Windows + V: Visualiza todas las notificaciones
  • Tecla Windows + Shift + V: Visualiza todas las notificaciones en orden inverso
  • Tecla Windows + PrtScn: Captura la pantalla y la graba en el directorio Imágenes
  • Tecla Windows + Enter: Lanza Narrator
  • Tecla Windows + E: Abre Mi PC
  • Tecla Windows + R: Abre el diálogo Ejecutar…
  • Tecla Windows + U: Abre el centro de Accesibilidad
  • Tecla Windows + Ctrl + F: Abre búsqueda de PCs
  • Tecla Windows + Pause/Break: Abre la página de Sistema
  • Tecla Windows + 1..10: Lanza el programa equivalente de la barra Windows
  • Tecla Windows + Shift + 1..10: Lanza una nueva instancia del programa equivalente al número de la barra Windows
  • Tecla Windows + Ctrl + 1..10: Accede a la última instancia del programa de la barra de Windows equivalente
  • Tecla Windows + Alt + 1..10: Accede a la lista de instancias del programa de la barra de Windows equivalente a ese número
  • Tecla Windows + B: Selecciona el primer dispositivo del área de notificaciones y luego puedes usar las flechas para navegar por ellas, para abrir alguna, puedes resaltarla y pulsar Enter.
  • Tecla Windows + Ctrl + B: Accede al programa que se está mostrando en el área de notificaciones
  • Tecla Windows + T: Navegar entre los elementos de la barra de tareas
  • Tecla Windows + M: Minimizar todas las ventanas
  • Tecla Windows + Shift + M: Restaurar todas las ventanas minimizadas
  • Tecla Windows + D: Mostrar/Ocultar el Escritorio
  • Tecla Windows + L: Bloquear el ordenador
  • Tecla Windows + Flecha arriba: Maximizar la ventana actual
  • Tecla Windows + Flecha abajo: Minimizar / restaurar la ventana actual
  • Tecla Windows + Inicio: Minimizar todas las ventanas excepto la que está en uso
  • Tecla Windows + Flecha izquierda: Amontonar las ventanas en el lado izquierdo de las pantalla
  • Tecla Windows + Flecha derecha: Amontonar las ventalas en el lado derecho
  • Tecla Windows + Shift + Flecha arriba: Extiende la ventana actual a toda la altura de la pantalla
  • Tecla Windows + Shift + Flecha Izqda/dcha: Mueve la ventana de un monitor al siguiente
  • Tecla Windows + F1: Lanza la Ayuda y Soporte de Windows

  • AvPag: Scroll derecha en la pantalla de inicio Modern UI
  • RePag: Scroll izqda en la pantalla de inicio Modern UI
  • Esc: Cierra el menú
  • Ctrl + Esc: Cambia entre el escritorio Modern UI y la última aplicación
  • Ctrl + Rueda de desplazamiento del ratón: Activa el zoom en el menú principal Modern UI
  • Alt: Muestra una barra de menú oculta
  • Alt + D: Selecciona la barra de direcciones
  • Alt + P: Muestra el pane de previsualización en Windows Explorer
  • Alt + Tab: Cambia entre aplicaciones abiertas
  • Alt + Shift + Tab: Cambia entre aplicaciones abiertas en sentido inverso al anterior
  • Alt + F: Cierra la ventana actual y abre el diálogo Apagar Windows si estás en el escritorio
  • Alt + barra espaciadora: Accede al menú de atajos de la ventana actual
  • Alt + Esc: cambia entre los programas abiertos en el orden en el que se abrieron
  • Alt + Enter: Abre el diálogo de propiedades del elemento seleccionado
  • Alt + PrtScn: Captura una imagen de la ventana activa y la deja en el portapapeles
  • Alt + Flecha arriba: Mueve al nivel de directorio anterior dentro de Windows Explorer
  • Alt + Flecha izqda: Muestra el directorio anterior
  • Alt + Flecha dcha: Muestra el directorio siguiente
  • Shift + Insertar: Evita el autorun de CD / DVD
  • Shift + Supr: Borra permanentemente un archivo, sin pasar por la papelera de reciclaje
  • Shift + F6: Cambia entre los elementos de una ventana o diálogo
  • Shift + F10: Accede al menú contextual del elemento seleccionado
  • Shift + Tab: Cambia entre los elementos de dentro de una ventana en orden inverso
  • Shift + Clic: Selecciona un grupo consecutivo de elementos
  • Shift + Clic en un botón de la barra de herramientas: Lanza una nueva instancia del programa en cuestión
  • Shift + clic derecho en un botón de la barra de herramientas: Accede la menú contextual de ese elemento
  • Ctrl + A: Selecciona todos los elementos
  • Ctrl + C: Copiar
  • Ctrl + X: Cortar
  • Ctrl + V: Pegar
  • Ctrl + D: Borrar elemento seleccionado
  • Ctrl + Z: Deshacer
  • Ctrl + Y: Volver a hacer (acción inversa a Ctrl+Z)
  • Ctrl + N: Nueva ventana de Windows explorer
  • Ctrl + W: Cierra la ventana de Windows Explorer
  • Ctrl + E: Selecciona la caja de búsqueda de la ventana
  • Ctrl + Shift + N: Crea un nuevo directorio
  • Ctrl + Shift + Esc: Abre el Administrador de Tareas de Windows
  • Ctrl + Alt + Tab: Usa las teclas de flecha para pasar entre las ventanas abiertas
  • Ctrl + Alt + Supr: Accede a la pantalla Windows Security 
  • Ctrl + Clic: Selecciona múltiples elementos individuales
  • Ctrl + Clic y arrastra un elemento: Copia ese elemento
  • Ctrl + Shift + Clic y arrastra un elemento: Crea un acceso directo de ese elemento
  • Ctrl + Tab:  Navega entre las pestañas
  • Ctrl + Shift + Tab: Navega de manera inversa entre pestañas
  • Ctrl + Shift + Clic en un botón de la barra de herramientas: Lanza una instancia como administrador
  • Ctrl + Clic en un botón agrupado de la barra de herramientas: Navega entre las instancias del programa

  • F1: Ayuda
  • F2: Renombre un fichero
  • F3: Abre la búsqueda
  • F4: Muestra la lista de la barra de direcciones
  • F5: Refresca la pantalla
  • F6: Cambia entre los elementos de una ventana o diálogo
  • F7: Muestra el historial de comandos en una línea de comandos
  • F10: Muestra la barra de menú oculta
  • F11: Cambia a pantalla completa
  • Tab: Equivalente a F6, Cambia entre los elementos de una ventana o diálogo
  • PrtScn: Captura toda la pantalla y la copia en el portapapeles
  • Inicio: Mueve la ventana activa arriba
  • Fin: Mueve la ventana activa abajo
  • Suprimir: Borra el elemento seleccionado
  • Tecla de borrar: Muestra el directorio anterior en Windows Explorer. Mueve a un nivel superior en los diálogos de Abrir o Salvar.
  • Esc: Cierra una ventana de diálogo
  • (+) del teclado numérico -activo-: muestra los contenidos del directorio seleccionado
  • (-) del teclado numérico -activo-: cierra el directorio seleccionado
  • (*) del teclado numérico -activo-: Expande todos los subdirectorios del directorio seleccionado

StickyKeys:

  • Pulsa 5 veces Shift para activarlas o apagarlas

FilterKeys:

  • Pulsa la flecha de la derecha durante 8 segundos para activarlas o desactivarlas

ToggleKeys:

  • Pulsa Bloque numérico durante 5 segundos para activar o desactivar la función

Como crear un proxy trasparente para nuestra red con Linux, squid e iptables

Aqui pongo una recopilacion de post, de como configurar un proxy trasparente para nuestra red con Linux, squid e iptables. Necesitariamos un pc, con dos tarjetas de red, y ponerla entre nuestro router de acceso a internet, y nuestra red local, tal como se muestra en esta imagen:

Encontraras toda la documentacion necesaria en Español en esta web:
http://guluca.org/2011/05/proxy-transparente-en-ubuntu/

Así como configuración extra en Ingles en esta otra web:
http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html

Un saludo a todos!!

Los 400 comandos de Linux que deberias conocer

Aqui os pongo un post cogido directamente de http://blog.desdelinux.net/mas-de-400-comandos-para-gnulinux-que-deberias-conocer/

con los 400 comandos de linux, que todo el mundo deberia conocer, o al menos probar alguna vez. Lo pongo aqui para acordarme yo mismo de dichos comandos!

Un saludo!!!

Indice:

  1. Información del Sistema
  2. Apagar (Reiniciar o Cerrar Sesión)
  3. Archivos y Directorios
  4. Encontrar archivos
  5. Montando un sistema de ficheros
  6. Espacio de Disco
  7. Usuarios y Grupos
  8. Permisos en Ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)
  9. Atributos especiales en ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)
  10. Archivos y Ficheros comprimidos
  11. Paquetes RPM (Red Hat, Fedora y similares)
  12. Actualizador de paquetes YUM (Red Hat, Fedora y similares)
  13. Paquetes Deb (Debian, Ubuntu y derivados)
  14. Actualizador de paquetes APT (Debian, Ubuntu y derivados)
  15. Ver el contenido de un fichero
  16. Manipulación de texto
  17. Establecer caracter y conversión de ficheros
  18. Análisis del sistema de ficheros
  19. Formatear un sistema de ficheros
  20. Trabajo con la SWAP
  21. Salvas (Backup)
  22. CD-ROM
  23. Trabajo con la RED ( LAN y Wi-Fi)
  24. Redes de Microsoft Windows (SAMBA)
  25. Tablas IP (CORTAFUEGOS)
  26. Monitoreando y depurando
  27. Otros comandos útiles

Información del sistema

  1. arch: mostrar la arquitectura de la máquina (1).
  2. uname -m: mostrar la arquitectura de la máquina (2).
  3. uname -r: mostrar la versión del kernel usado.
  4. dmidecode -q: mostrar los componentes (hardware) del sistema.
  5. hdparm -i /dev/hda: mostrar las características de un disco duro.
  6. hdparm -tT /dev/sda: realizar prueba de lectura en un disco duro.
  7. cat /proc/cpuinfo: mostrar información de la CPU.
  8. cat /proc/interrupts: mostrar las interrupciones.
  9. cat /proc/meminfo: verificar el uso de memoria.
  10. cat /proc/swaps: mostrar ficheros swap.
  11. cat /proc/version: mostrar la versión del kernel.
  12. cat /proc/net/dev: mostrar adaptadores de red y estadísticas.
  13. cat /proc/mounts: mostrar el sistema de ficheros montado.
  14. lspci -tv: mostrar los dispositivos PCI.
  15. lsusb -tv: mostrar los dispositivos USB.
  16. date: mostrar la fecha del sistema.
  17. cal 2011: mostrar el almanaque de 2011.
  18. cal 07 2011: mostrar el almanaque para el mes julio de 2011.
  19. date 041217002011.00: colocar (declarar, ajustar) fecha y hora.
  20. clock -w: guardar los cambios de fecha en la BIOS.

Apagar (Reiniciar Sistema o Cerrar Sesión)

  1. shutdown -h now: apagar el sistema (1).
  2. init 0: apagar el sistema (2).
  3. telinit 0: apagar el sistema (3).
  4. halt: apagar el sistema (4).
  5. shutdown -h hours:minutes &: apagado planificado del sistema.
  6. shutdown -c: cancelar un apagado planificado del sistema.
  7. shutdown -r now: reiniciar (1).
  8. reboot: reiniciar (2).
  9. logout: cerrar sesión.

Archivos y Directorios

  1. cd /home: entrar en el directorio “home”.
  2. cd ..: retroceder un nivel.
  3. cd ../..: retroceder 2 niveles.
  4. cd: ir al directorio raíz.
  5. cd ~user1: ir al directorio user1.
  6. cd –: ir (regresar) al directorio anterior.
  7. pwd: mostrar el camino del directorio de trabajo.
  8. ls: ver los ficheros de un directorio.
  9. ls -F: ver los ficheros de un directorio.
  10. ls -l: mostrar los detalles de ficheros y carpetas de un directorio.
  11. ls -a: mostrar los ficheros ocultos.
  12. ls *[0-9]*: mostrar los ficheros y carpetas que contienen números.
  13. tree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
  14. lstree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
  15. mkdir dir1: crear una carpeta o directorio con nombre ‘dir1′.
  16. mkdir dir1 dir2: crear dos carpetas o directorios simultáneamente (Crear dos directorios a la vez).
  17. mkdir -p /tmp/dir1/dir2: crear un árbol de directorios.
  18. rm -f file1: borrar el fichero llamado ‘file1′.
  19. rmdir dir1: borrar la carpeta llamada ‘dir1′.
  20. rm -rf dir1: eliminar una carpeta llamada ‘dir1′ con su contenido de forma recursiva. (Si lo borro recursivo estoy diciendo que es con su contenido).
  21. rm -rf dir1 dir2: borrar dos carpetas (directorios) con su contenido de forma recursiva.
  22. mv dir1 new_dir: renombrar o mover un fichero o carpeta (directorio).
  23. cp file1: copiar un fichero.
  24. cp file1 file2: copiar dos ficheros al unísono.
  25. cp dir /* .: copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
  26. cp -a /tmp/dir1 .: copiar un directorio dentro del directorio actual de trabajo.
  27. cp -a dir1: copiar un directorio.
  28. cp -a dir1 dir2: copiar dos directorio al unísono.
  29. ln -s file1 lnk1: crear un enlace simbólico al fichero o directorio.
  30. ln file1 lnk1: crear un enlace físico al fichero o directorio.
  31. touch -t 0712250000 file1: modificar el tiempo real (tiempo de creación) de un fichero o directorio.
  32. file file1: salida (volcado en pantalla) del tipo mime de un fichero texto.
  33. iconv -l: listas de cifrados conocidos.
  34. iconv -f fromEncoding -t toEncoding inputFile > outputFile: crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.
  35. find . -maxdepth 1 -name *.jpg -print -exec convert ”{}” -resize 80×60 “thumbs/{}” ;: agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde ImagemagicK).

Encontrar archivos

  1. find / -name file1: buscar fichero y directorio a partir de la raíz del sistema.
  2. find / -user user1: buscar ficheros y directorios pertenecientes al usuario ‘user1′.
  3. find /home/user1 -name *.bin: buscar ficheros con extensión ‘. bin’ dentro del directorio ‘/ home/user1′.
  4. find /usr/bin -type f -atime +100: buscar ficheros binarios no usados en los últimos 100 días.
  5. find /usr/bin -type f -mtime -10: buscar ficheros creados o cambiados dentro de los últimos 10 días.
  6. find / -name *.rpm -exec chmod 755 ‘{}’ ;: buscar ficheros con extensión ‘.rpm’ y modificar permisos.
  7. find / -xdev -name *.rpm: Buscar ficheros con extensión ‘.rpm’ ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
  8. locate *.ps: encuentra ficheros con extensión ‘.ps’ ejecutados primeramente con el command ‘updatedb’.
  9. whereis halt: mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando ‘halt’.
  10. which halt: mostrar la senda completa (el camino completo) a un binario / ejecutable.

Montando un sistema de ficheros

  1. mount /dev/hda2 /mnt/hda2: montar un disco llamado hda2. Verifique primero la existencia del directorio ‘/ mnt/hda2′; si no está, debe crearlo.
  2. umount /dev/hda2: desmontar un disco llamado hda2. Salir primero desde el punto ‘/ mnt/hda2.
  3. fuser -km /mnt/hda2: forzar el desmontaje cuando el dispositivo está ocupado.
  4. umount -n /mnt/hda2: correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
  5. mount /dev/fd0 /mnt/floppy: montar un disco flexible (floppy).
  6. mount /dev/cdrom /mnt/cdrom: montar un cdrom / dvdrom.
  7. mount /dev/hdc /mnt/cdrecorder: montar un cd regrabable o un dvdrom.
  8. mount /dev/hdb /mnt/cdrecorder: montar un cd regrabable / dvdrom (un dvd).
  9. mount -o loop file.iso /mnt/cdrom: montar un fichero o una imagen iso.
  10. mount -t vfat /dev/hda5 /mnt/hda5: montar un sistema de ficheros FAT32.
  11. mount /dev/sda1 /mnt/usbdisk: montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).

Espacio de Disco

  1. df -h: mostrar una lista de las particiones montadas.
  2. ls -lSr |more: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
  3. du -sh dir1: Estimar el espacio usado por el directorio ‘dir1′.
  4. du -sk * | sort -rn: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
  5. rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
  6. dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes instalados, organizados por tamaño (Ubuntu, Debian y otros).

Usuarios y Grupos

  1. groupadd nombre_del_grupo: crear un nuevo grupo.
  2. groupdel nombre_del_grupo: borrar un grupo.
  3. groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo: renombrar un grupo.
  4. useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1: Crear un nuevo usuario perteneciente al grupo “admin”.
  5. useradd user1: crear un nuevo usuario.
  6. userdel -r user1: borrar un usuario (‘-r’ elimina el directorio Home).
  7. usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1: cambiar los atributos del usuario.
  8. passwd: cambiar contraseña.
  9. passwd user1: cambiar la contraseña de un usuario (solamente por root).
  10. chage -E 2011-12-31 user1: colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
  11. pwck: chequear la sintaxis correcta el formato de fichero de ‘/etc/passwd’ y la existencia de usuarios.
  12. grpck: chequear la sintaxis correcta y el formato del fichero ‘/etc/group’ y la existencia de grupos.
  13. newgrp group_name: registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.

Permisos en Ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

  1. ls -lh: Mostrar permisos.
  2. ls /tmp | pr -T5 -W$COLUMNS: dividir la terminal en 5 columnas.
  3. chmod ugo+rwx directory1: colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio ‘directory1′.
  4. chmod go-rwx directory1: quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio ‘directory1′.
  5. chown user1 file1: cambiar el dueño de un fichero.
  6. chown -R user1 directory1: cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
  7. chgrp group1 file1: cambiar grupo de ficheros.
  8. chown user1:group1 file1: cambiar usuario y el grupo propietario de un fichero.
  9. find / -perm -u+s: visualizar todos los ficheros del sistema con SUID configurado.
  10. chmod u+s /bin/file1: colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
  11. chmod u-s /bin/file1: deshabilitar el bit SUID en un fichero binario.
  12. chmod g+s /home/public: colocar un bit SGID en un directorio –similar al SUID pero por directorio.
  13. chmod g-s /home/public: desabilitar un bit SGID en un directorio.
  14. chmod o+t /home/public: colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
  15. chmod o-t /home/public: desabilitar un bit STIKY en un directorio.

Atributos especiales en ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

  1. chattr +a file1: permite escribir abriendo un fichero solamente modo append.
  2. chattr +c file1: permite que un fichero sea comprimido / descomprimido automaticamente.
  3. chattr +d file1: asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
  4. chattr +i file1: convierte el fichero en invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
  5. chattr +s file1: permite que un fichero sea borrado de forma segura.
  6. chattr +S file1: asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
  7. chattr +u file1: te permite recuperar el contenido de un fichero aún si este está cancelado.
  8. lsattr: mostrar atributos especiales.

Archivos y Ficheros comprimidos

  1. bunzip2 file1.bz2: descomprime in fichero llamado ‘file1.bz2′.
  2. bzip2 file1: comprime un fichero llamado ‘file1′.
  3. gunzip file1.gz: descomprime un fichero llamado ‘file1.gz’.
  4. gzip file1: comprime un fichero llamado ‘file1′.
  5. gzip -9 file1: comprime con compresión máxima.
  6. rar a file1.rar test_file: crear un fichero rar llamado ‘file1.rar’.
  7. rar a file1.rar file1 file2 dir1: comprimir ‘file1′, ‘file2′ y ‘dir1′ simultáneamente.
  8. rar x file1.rar: descomprimir archivo rar.
  9. unrar x file1.rar: descomprimir archivo rar.
  10. tar -cvf archive.tar file1: crear un tarball descomprimido.
  11. tar -cvf archive.tar file1 file2 dir1: crear un archivo conteniendo ‘file1′, ‘file2′ y’dir1′.
  12. tar -tf archive.tar: mostrar los contenidos de un archivo.
  13. tar -xvf archive.tar: extraer un tarball.
  14. tar -xvf archive.tar -C /tmp: extraer un tarball en / tmp.
  15. tar -cvfj archive.tar.bz2 dir1: crear un tarball comprimido dentro de bzip2.
  16. tar -xvfj archive.tar.bz2: descomprimir un archivo tar comprimido en bzip2
  17. tar -cvfz archive.tar.gz dir1: crear un tarball comprimido en gzip.
  18. tar -xvfz archive.tar.gz: descomprimir un archive tar comprimido en gzip.
  19. zip file1.zip file1: crear un archivo comprimido en zip.
  20. zip -r file1.zip file1 file2 dir1: comprimir, en zip, varios archivos y directorios de forma simultánea.
  21. unzip file1.zip: descomprimir un archivo zip.

Paquetes RPM (Red Hat, Fedora y similares)

  1. rpm -ivh package.rpm: instalar un paquete rpm.
  2. rpm -ivh –nodeeps package.rpm: instalar un paquete rpm ignorando las peticiones de dependencias.
  3. rpm -U package.rpm: actualizar un paquete rpm sin cambiar la configuración de los ficheros.
  4. rpm -F package.rpm: actualizar un paquete rpm solamente si este está instalado.
  5. rpm -e package_name.rpm: eliminar un paquete rpm.
  6. rpm -qa: mostrar todos los paquetes rpm instalados en el sistema.
  7. rpm -qa | grep httpd: mostrar todos los paquetes rpm con el nombre “httpd”.
  8. rpm -qi package_name: obtener información en un paquete específico instalado.
  9. rpm -qg “System Environment/Daemons”: mostar los paquetes rpm de un grupo software.
  10. rpm -ql package_name: mostrar lista de ficheros dados por un paquete rpm instalado.
  11. rpm -qc package_name: mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
  12. rpm -q package_name –whatrequires: mostrar lista de dependencias solicitada para un paquete rpm.
  13. rpm -q package_name –whatprovides: mostar la capacidad dada por un paquete rpm.
  14. rpm -q package_name –scripts: mostrar los scripts comenzados durante la instalación /eliminación.
  15. rpm -q package_name –changelog: mostar el historial de revisions de un paquete rpm.
  16. rpm -qf /etc/httpd/conf/httpd.conf: verificar cuál paquete rpm pertenece a un fichero dado.
  17. rpm -qp package.rpm -l: mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
  18. rpm –import /media/cdrom/RPM-GPG-KEY: importar la firma digital de la llave pública.
  19. rpm –checksig package.rpm: verificar la integridad de un paquete rpm.
  20. rpm -qa gpg-pubkey: verificar la integridad de todos los paquetes rpm instalados.
  21. rpm -V package_name: chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
  22. rpm -Va: chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
  23. rpm -Vp package.rpm: verificar un paquete rpm no instalado todavía.
  24. rpm2cpio package.rpm | cpio –extract –make-directories *bin*: extraer fichero ejecutable desde un paquete rpm.
  25. rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm: instalar un paquete construido desde una fuente rpm.
  26. rpmbuild –rebuild package_name.src.rpm: construir un paquete rpm desde una fuente rpm.

Actualizador de paquetes YUM (Red Hat, Fedora y similares)

  1. yum install package_name: descargar e instalar un paquete rpm.
  2. yum localinstall package_name.rpm: este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
  3. yum update package_name.rpm: actualizar todos los paquetes rpm instalados en el sistema.
  4. yum update package_name: modernizar / actualizar un paquete rpm.
  5. yum remove package_name: eliminar un paquete rpm.
  6. yum list: listar todos los paquetes instalados en el sistema.
  7. yum search package_name: Encontrar un paquete en repositorio rpm.
  8. yum clean packages: limpiar un caché rpm borrando los paquetes descargados.
  9. yum clean headers: eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
  10. yum clean all: eliminar desde los paquetes caché y ficheros de encabezado.

Paquetes Deb (Debian, Ubuntu y derivados)

  1. dpkg -i package.deb: instalar / actualizar un paquete deb.
  2. dpkg -r package_name: eliminar un paquete deb del sistema.
  3. dpkg -l: mostrar todos los paquetes deb instalados en el sistema.
  4. dpkg -l | grep httpd: mostrar todos los paquetes deb con el nombre “httpd”
  5. dpkg -s package_name: obtener información en un paquete específico instalado en el sistema.
  6. dpkg -L package_name: mostar lista de ficheros dados por un paquete instalado en el sistema.
  7. dpkg –contents package.deb: mostrar lista de ficheros dados por un paquete no instalado todavía.
  8. dpkg -S /bin/ping: verificar cuál paquete pertenece a un fichero dado.

Actualizador de paquetes APT (Debian, Ubuntu y derivados)

  1. apt-get install package_name: instalar / actualizar un paquete deb.
  2. apt-cdrom install package_name: instalar / actualizar un paquete deb desde un cdrom.
  3. apt-get update: actualizar la lista de paquetes.
  4. apt-get upgrade: actualizar todos los paquetes instalados.
  5. apt-get remove package_name: eliminar un paquete deb del sistema.
  6. apt-get check: verificar la correcta resolución de las dependencias.
  7. apt-get clean: limpiar cache desde los paquetes descargados.
  8. apt-cache search searched-package: retorna lista de paquetes que corresponde a la serie «paquetes buscados».

Ver el contenido de un fichero

  1. cat file1: ver los contenidos de un fichero comenzando desde la primera hilera.
  2. tac file1: ver los contenidos de un fichero comenzando desde la última línea.
  3. more file1: ver el contenido a lo largo de un fichero.
  4. less file1: parecido al commando ‘more’ pero permite salvar el movimiento en el fichero así como el movimiento hacia atrás.
  5. head -2 file1: ver las dos primeras líneas de un fichero.
  6. tail -2 file1: ver las dos últimas líneas de un fichero.
  7. tail -f /var/log/messages: ver en tiempo real qué ha sido añadido al fichero.

Manipulación de texto

  1. cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txt: sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
  2. cat file1 | command( sed, grep, awk, grep, etc…) > result.txt: sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
  3. cat file1 | command( sed, grep, awk, grep, etc…) » result.txt: sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
  4. grep Aug /var/log/messages: buscar palabras “Aug” en el fichero ‘/var/log/messages’.
  5. grep ^Aug /var/log/messages: buscar palabras que comienzan con “Aug” en fichero ‘/var/log/messages’
  6. grep [0-9] /var/log/messages: seleccionar todas las líneas del fichero ‘/var/log/messages’ que contienen números.
  7. grep Aug -R /var/log/*: buscar la cadena “Aug” en el directorio ‘/var/log’ y debajo.
  8. sed ‘s/stringa1/stringa2/g’ example.txt: reubicar “string1” con “string2” en ejemplo.txt
  9. sed ‘/^$/d’ example.txt: eliminar todas las líneas en blanco desde el ejemplo.txt
  10. sed ‘/ *#/d; /^$/d’ example.txt: eliminar comentarios y líneas en blanco de ejemplo.txt
  11. echo ‘esempio’ | tr ‘[:lower:]‘ ‘[:upper:]‘: convertir minúsculas en mayúsculas.
  12. sed -e ’1d’ result.txt: elimina la primera línea del fichero ejemplo.txt
  13. sed -n ‘/stringa1/p’: visualizar solamente las líneas que contienen la palabra “string1”.

Establecer caracter y conversión de ficheros

  1. dos2unix filedos.txt fileunix.txt: convertir un formato de fichero texto desde MSDOS a UNIX.
  2. unix2dos fileunix.txt filedos.txt: convertir un formato de fichero de texto desde UNIX a MSDOS.
  3. recode ..HTML < page.txt > page.html: convertir un fichero de texto en html.
  4. recode -l | more: mostrar todas las conversiones de formato disponibles.

Análisis del sistema de ficheros

  1. badblocks -v /dev/hda1: Chequear los bloques defectuosos en el disco hda1.
  2. fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
  3. fsck.ext2 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  4. e2fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  5. e2fsck -j /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  6. fsck.ext3 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  7. fsck.vfat /dev/hda1: reparar / chequear la integridad del fichero sistema fat en el disco hda1.
  8. fsck.msdos /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
  9. dosfsck /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.

Formatear un sistema de ficheros

  1. mkfs /dev/hda1: crear un fichero de sistema tipo Linux en la partición hda1.
  2. mke2fs /dev/hda1: crear un fichero de sistema tipo Linux ext 2 en hda1.
  3. mke2fs -j /dev/hda1: crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
  4. mkfs -t vfat 32 -F /dev/hda1: crear un fichero de sistema FAT32 en hda1.
  5. fdformat -n /dev/fd0: formatear un disco flooply.
  6. mkswap /dev/hda3: crear un fichero de sistema swap.

Trabajo con la SWAP

  1. mkswap /dev/hda3: crear fichero de sistema swap.
  2. swapon /dev/hda3: activando una nueva partición swap.
  3. swapon /dev/hda2 /dev/hdb3: activar dos particiones swap.

Salvas (Backup)

  1. dump -0aj -f /tmp/home0.bak /home: hacer una salva completa del directorio ‘/home’.
  2. dump -1aj -f /tmp/home0.bak /home: hacer una salva incremental del directorio ‘/home’.
  3. restore -if /tmp/home0.bak: restaurando una salva interactivamente.
  4. rsync -rogpav –delete /home /tmp: sincronización entre directorios.
  5. rsync -rogpav -e ssh –delete /home ip_address:/tmp: rsync a través del túnel SSH.
  6. rsync -az -e ssh –delete ip_addr:/home/public /home/local: sincronizar un directorio local con un directorio remoto a través de ssh y de compresión.
  7. rsync -az -e ssh –delete /home/local ip_addr:/home/public: sincronizar un directorio remoto con un directorio local a través de ssh y de compresión.
  8. dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’: hacer una salva de un disco duro en un host remoto a través de ssh.
  9. dd if=/dev/sda of=/tmp/file1: salvar el contenido de un disco duro a un fichero. (En este caso el disco duro es “sda” y el fichero “file1”).
  10. tar -Puf backup.tar /home/user: hacer una salva incremental del directorio ‘/home/user’.
  11. ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’: copiar el contenido de un directorio en un directorio remoto a través de ssh.
  12. ( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’: copiar un directorio local en un directorio remoto a través de ssh.
  13. tar cf – . | (cd /tmp/backup ; tar xf – ): copia local conservando las licencias y enlaces desde un directorio a otro.
  14. find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents: encontrar y copiar todos los ficheros con extensión ‘.txt’ de un directorio a otro.
  15. find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2: encontrar todos los ficheros con extensión ‘.log’ y hacer un archivo bzip.
  16. dd if=/dev/hda of=/dev/fd0 bs=512 count=1: hacer una copia del MRB (Master Boot Record) a un disco floppy.
  17. dd if=/dev/fd0 of=/dev/hda bs=512 count=1: restaurar la copia del MBR (Master Boot Record) salvada en un floppy.

CD-ROM

  1. cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force: limpiar o borrar un cd regrabable.
  2. mkisofs /dev/cdrom > cd.iso: crear una imagen iso de cdrom en disco.
  3. mkisofs /dev/cdrom | gzip > cd_iso.gz: crear una imagen comprimida iso de cdrom en disco.
  4. mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd: crear una imagen iso de un directorio.
  5. cdrecord -v dev=/dev/cdrom cd.iso: quemar una imagen iso.
  6. gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom –: quemar una imagen iso comprimida.
  7. mount -o loop cd.iso /mnt/iso: montar una imagen iso.
  8. cd-paranoia -B: llevar canciones de un cd a ficheros wav.
  9. cd-paranoia – ”-3”: llevar las 3 primeras canciones de un cd a ficheros wav.
  10. cdrecord –scanbus: escanear bus para identificar el canal scsi.
  11. dd if=/dev/hdc | md5sum: hacer funcionar un md5sum en un dispositivo, como un CD.

Trabajo con la RED ( LAN y Wi-Fi)

  1. ifconfig eth0: mostrar la configuración de una tarjeta de red Ethernet.
  2. ifup eth0: activar una interface ‘eth0′.
  3. ifdown eth0: deshabilitar una interface ‘eth0′.
  4. ifconfig eth0 192.168.1.1 netmask 255.255.255.0: configurar una dirección IP.
  5. ifconfig eth0 promisc: configurar ‘eth0′en modo común para obtener los paquetes (sniffing).
  6. dhclient eth0: activar la interface ‘eth0′ en modo dhcp.
  7. route -n: mostrar mesa de recorrido.
  8. route add -net 0/0 gw IP_Gateway: configurar entrada predeterminada.
  9. route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1: configurar ruta estática para buscar la red ’192.168.0.0/16′.
  10. route del 0/0 gw IP_gateway: eliminar la ruta estática.
  11. echo “1” > /proc/sys/net/ipv4/ip_forward: activar el recorrido ip.
  12. hostname: mostrar el nombre del host del sistema.
  13. host www.example.com: buscar el nombre del host para resolver el nombre a una dirección ip(1).
  14. nslookup www.example.com: buscar el nombre del host para resolver el nombre a una direccióm ip y viceversa(2).
  15. ip link show: mostar el estado de enlace de todas las interfaces.
  16. mii-tool eth0: mostar el estado de enlace de ‘eth0′.
  17. ethtool eth0: mostrar las estadísticas de tarjeta de red ‘eth0′.
  18. netstat -tup: mostrar todas las conexiones de red activas y sus PID.
  19. netstat -tupl: mostrar todos los servicios de escucha de red en el sistema y sus PID.
  20. tcpdump tcp port 80: mostrar todo el tráfico HTTP.
  21. iwlist scan: mostrar las redes inalámbricas.
  22. iwconfig eth1: mostrar la configuración de una tarjeta de red inalámbrica.
  23. whois www.example.com: buscar en base de datos Whois.

Redes de Microsoft Windows (SAMBA)

  1. nbtscan ip_addr: resolución de nombre de red bios.
  2. nmblookup -A ip_addr: resolución de nombre de red bios.
  3. smbclient -L ip_addr/hostname: mostrar acciones remotas de un host en windows.

Tablas IP (CORTAFUEGOS)

  1. iptables -t filter -L: mostrar todas las cadenas de la tabla de filtro.
  2. iptables -t nat -L: mostrar todas las cadenas de la tabla nat.
  3. iptables -t filter -F: limpiar todas las reglas de la tabla de filtro.
  4. iptables -t nat -F: limpiar todas las reglas de la tabla nat.
  5. iptables -t filter -X: borrar cualquier cadena creada por el usuario.
  6. iptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT: permitir las conexiones telnet para entar.
  7. iptables -t filter -A OUTPUT -p tcp –dport http -j DROP: bloquear las conexiones HTTP para salir.
  8. iptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT: permitir las conexiones POP a una cadena delantera.
  9. iptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT”: registrando una cadena de entrada.
  10. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE: configurar un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada.
  11. iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22: redireccionar los paquetes diriguidos de un host a otro.

Monitoreando y depurando

  1. top: mostrar las tareas de linux usando la mayoría cpu.
  2. ps -eafw: muestra las tareas Linux.
  3. ps -e -o pid,args –forest: muestra las tareas Linux en un modo jerárquico.
  4. pstree: mostrar un árbol sistema de procesos.
  5. kill -9 ID_Processo: forzar el cierre de un proceso y terminarlo.
  6. kill -1 ID_Processo: forzar un proceso para recargar la configuración.
  7. lsof -p $$: mostrar una lista de ficheros abiertos por procesos.
  8. lsof /home/user1: muestra una lista de ficheros abiertos en un camino dado del sistema.
  9. strace -c ls >/dev/null: mostrar las llamadas del sistema hechas y recibidas por un proceso.
  10. strace -f -e open ls >/dev/null: mostrar las llamadas a la biblioteca.
  11. watch -n1 ‘cat /proc/interrupts’: mostrar interrupciones en tiempo real.
  12. last reboot: mostrar historial de reinicio.
  13. lsmod: mostrar el kernel cargado.
  14. free -m: muestra el estado de la RAM en megabytes.
  15. smartctl -A /dev/hda: monitorear la fiabilidad de un disco duro a través de SMART.
  16. smartctl -i /dev/hda: chequear si SMART está activado en un disco duro.
  17. tail /var/log/dmesg: mostrar eventos inherentes al proceso de carga del kernel.
  18. tail /var/log/messages: mostrar los eventos del sistema.

Otros comandos útiles

  1. apropos …keyword: mostrar una lista de comandos que pertenecen a las palabras claves de un programa; son útiles cuando tú sabes qué hace tu programa, pero de sconoces el nombre del comando.
  2. man ping: mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar la opción ‘-k’ para encontrar cualquier comando relacionado.
  3. whatis …keyword: muestra la descripción de lo que hace el programa.
  4. mkbootdisk –device /dev/fd0 `uname -r`: crear un floppy boteable.
  5. gpg -c file1: codificar un fichero con guardia de seguridad GNU.
  6. gpg file1.gpg: decodificar un fichero con Guardia de seguridad GNU.
  7. wget -r www.example.com: descargar un sitio web completo.
  8. wget -c www.example.com/file.iso: descargar un fichero con la posibilidad de parar la descargar y reanudar más tarde.
  9. echo ‘wget -c www.example.com/files.iso‘ | at 09:00: Comenzar una descarga a cualquier hora. En este caso empezaría a las 9 horas.
  10. ldd /usr/bin/ssh: mostrar las bibliotecas compartidas requeridas por el programa ssh.
  11. alias hh=’history’: colocar un alias para un commando –hh= Historial.
  12. chsh: cambiar el comando Shell.
  13. chsh –list-shells: es un comando adecuado para saber si tienes que hacer remoto en otra terminal.
  14. who -a: mostrar quien está registrado, e imprimir hora del último sistema de importación, procesos muertos, procesos de registro de sistema, procesos activos producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.
     
     

Crear una estacion meteorologica con raspberry pi y un sensor dth11

Ya puestos a trastear con la raspberry y sus conexiones al GPIO, vamos a ver como podemos crear una pequeña estacion meteorologica con la raspberry pi, y un sensor dth11.

Que necesitamos??

Una raspberry pi
Un sensor dth11 (unos 2 € en dealextreme)
Cables para conectarlo

Notas sobre los materiales necesarios
El sensor que utilizo yo, y el que aparece en la imagen, viene con una resistencia de 10k(amarillo violeta rojo oro) incorparada entre el conector de señal y nuestra conexion al gpio. Si lo compramos suelto, habra que hacer un circuito en un protoboard tal como aparece en esta imagen:

Montaje de los componentes:

Conectamos el sensor dth11 al gpio de la raspberry asi:

RPi VCC (pin 1) -> DHT11 pin 1
RPi GPIO4 (pin 7) -> DHT11 pin 2
RPi GND (pin 6) -> DHT11 pin 4 (pin3 si solo tiene 3 pins)
 
Creando un programa para poder acceder al sensor y leer temperatura y humedad:
 
Una vez realizadas las conexiones, vamos a crearnos un programa que realice 
las lecturas, y que nos saque los resultados por la pantalla.
 
He elegido el lenguaje de programacion en C

Instalamos lo necesario:
nota: Todo lo voy a hacer desde el terminal. Esto me permitira hacerlo todo, 
con una conexion SSH hacia mi raspberry.


Me situo en mi directorio HOME
cd ~

Ejecuto estos comandos:
sudo apt-get install git-core build-essential
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
 
Con esto ya tenemos lista la libreria wiringPi, para poder usar el puerto GPIO 
de la raspberry de una manera mas sencilla
 
Creamos el siguiente archivo con este comando:
nano dth11.c
 
Escribimos el siguiente codigo:
 
------------------------------------------ 
CODIGO DESDE AQUI - Archivo dth11.c
------------------------------------------
 
 //Incluimos librerias necesarias
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

//Definimos constantes
#define MAX_TIME 85
#define DHT11PIN 7
#define ATTEMPTS 5

//Definimos un vector global
int dht11_val[5]={0,0,0,0,0};

/////////////////////////////////////////////////////////////
//Funcion principal para leer los valores del sensor.
int dht11_read_val(){
uint8_t lststate=HIGH;
uint8_t counter=0;
uint8_t j=0,i;
for(i=0;i<5;i++){
dht11_val[i]=0;
}
pinMode(DHT11PIN,OUTPUT);
digitalWrite(DHT11PIN,LOW);
delay(18);
digitalWrite(DHT11PIN,HIGH);
delayMicroseconds(40);
pinMode(DHT11PIN,INPUT);
for(i=0;i<MAX_TIME;i++){
counter=0;
while(digitalRead(DHT11PIN)==lststate){
counter++;
delayMicroseconds(1);
if(counter==255){
break;
}
}
lststate=digitalRead(DHT11PIN);
if(counter==255){
break;
}
//Las 3 primeras transiciones son ignoradas
if((i>=4)&&(i%2==0)){
dht11_val[j/8]<<=1;
if(counter>16){
dht11_val[j/8]|=1;
}
j++;
}
}

// Hacemos una suma de comprobacion para ver si el dato es correcto. Si es asi, lo mostramos
if((j>=40)&&(dht11_val[4]==((dht11_val[0]+dht11_val[1]+dht11_val[2]+dht11_val[3])& 0xFF))){
printf("%d.%d,%d.%dn",dht11_val[0],dht11_val[1],dht11_val[2],dht11_val[3]);
return 1;
}else{
return 0;
}
}

////////////////////////////////////////////////////////////////
//Empieza nuestro programa principal.
int main(void){
//Establecemos el numero de intentos que vamos a realizar
//la constante ATTEMPTS esta definida arriba
int attempts=ATTEMPTS;

//Si la libreria wiringPi, ve el GPIO no esta listo, salimos de la aplicacion
if(wiringPiSetup()==-1){
exit(1);
}

while(attempts){
//Intentamos leer el valor del gpio, llamando a la funcion
int success = dht11_read_val();

//Si leemos con exito, salimos del while, y se acaba el programa
if (success){
break;
}

//Si no lee con exito, restamos 1, al numero de intentos
attempts--;

//Esperamos medio segundo antes del siguiente intento.
delay(500);
}
return 0;
}
 
------------------------------------------ 
CODIGO HASTA AQUI-------- FIN DE ARCHIVO dth11.c
------------------------------------------
   
Se puede cambiar esto...:
printf("%d.%d,%d.%dn",dht11_val[0],dht11_val[1],dht11_val[2],dht11_val[3]); 

por esto:
printf("%d,%dn",dht11_val[0]*256+dht11_val[1],dht11_val[2]*256+dht11_val[3]); 
 
Y asi saldra correctamente los datos. Gracias a seta43 por el aviso! 
 
Una vez escrito, lo compilamos con el siguiente comando:
gcc -o dth11 dth11.c -L /usr/local/lib -l wiringPi

 
Si compila bien, ejecutamos con este comando:
sudo ./dth11
 
(GRACIAS A seta43 por la advertencia!!, habia confundido dth11 por dht11, asi que cuidar a ver!)
 
Deberia mostrarnos la temperatura, y la humedad separadas por comas.
 
 
Siguiente paso!!!
 
Como lo que nos interesa realmente, es tener unos datos actualizados cada minuto, 
y en forma de grafica, vamos a instalar un servidor web, y crearnos asi una
pagina web donde podamos consultar los resultados que nos dara nuestra medicio
de una forma grafica. Para eso, instalamos apache, y creamos la web necesaria.
 
Instalacion de apache:
 
Ejecutamos el siguiente comando:
apt-get install apache2
 
Arrancamos apache:
service apache2 start
 
Una vez instalado el 
 
 
Creacion automatica de la medicion de temperatura y humedad:

Vamos a crearnos un fichero, para que vaya guardando de forma automatica
los valores de temperatura y humedad, asi como la fecha en la que se ha 
tomado dicha medicion.

Nos situamos de nuevo en el directorio HOME:
cd ~

Creamos el siguiente fichero con el siguiente codigo:
nano dth11.sh

------------------------------------------ 
CODIGO DESDE AQUI - Archivo dth11.sh
------------------------------------------

#!/bin/bash
FECHA=$(date +%Y%m%d%H%M%S)
COMA=","
TEMP=$(/home/usuario/dth11)
echo "$FECHA$COMA$TEMP" >> /var/www/temp.log
 
------------------------------------------ 
CODIGO HASTA AQUI-------- FIN DE ARCHIVO dth11.sh
------------------------------------------ 
 
Con esto lo que hacemos, es un script que nos dara como resultado la fecha
en el formato adecuado, seguido de la temperatura y humedad, y lo almacenara 
en un archivo llamado temp.log, en el directorio raiz de APACHE por defecto, 
para su lectura posterior.
 
Tarea programada con cron
 
A continuacion, le vamos a decir a cron (nuestro programador de tareas en linux), 
que ejecute el script cada minuto. Para eso ejecutamos el siguiente comando:
 
sudo crontab -e
 
Y añadimos la siguiente linea al final:
 
* * * * * /home/usuario/dth11.sh
 
Creamos la pagina web para mostrarnos los resultados leidos:
 
Nos situamos en el directorio de nuestro servidor web con el siguiente comando:
cd /var/www 

Si existe un archivo index.html, lo borramos con el comando:
rm index.html

Descargamos la libreria dygraphs para poder generar la grafica:
wget -P /var/www http://dygraphs.com/dygraph-combined.js
 
Nos creamos el archivo index.html para almacenar la web:
nano index.html
 
------------------------------------------ 
CODIGO DESDE AQUI - Archivo index.html
------------------------------------------
 
 
<html>
<head>
<script type="text/javascript" src="dygraph-combined.js"></script>
</head>
<body>

<h1>Grafica con temperaturas y humedad</h1>

<p>Esta gr&aacute;fica, esta generada a partir de las mediciones tomadas por un sensor dth11, conectado a una raspberry pi. Se accede al sensor mediante lenguaje de programacion C, usando las librerias wiringPi, para poder leer y utilizar el conector GPIO de la raspberry Pi.</p>



<hr/>

<div id="graphdiv" style="width:750px; height:400px;"></div>
<script type="text/javascript">

//Funcion para añadir ceros a los numeros de un solo digito
function addZero(num){
var s=num+"";
if (s.length < 2){
s="0"+s;
}
return s;
}

//Funcion para dar formato a la fecha, devolviendo la misma formateada
function dateFormat(indate){
var hh = addZero(indate.getHours());
var MM = addZero(indate.getMinutes());
//var ss = addZero(indate.getSeconds()); //No usamos los segundos
var dd = addZero(indate.getDate());
var mm = addZero(indate.getMonth()+1);
var yyyy = addZero(indate.getFullYear());
return dd+'/'+mm+' '+hh+':'+MM;
}

//Funcion principal para generar el grafico. Se genera en el id="graphdiv"
g = new Dygraph(
document.getElementById("graphdiv"),
"temp.log",
{
xValueParser: function(x) {
var date = new Date(x.replace(
/^(d{4})(dd)(dd)(dd)(dd)(dd)$/,
'$4:$5:$6 $2/$3/$1'
));
return date.getTime();
},
axes: {
x: {
ticker: Dygraph.dateTicker,
axisLabelFormatter: function(x) {
return dateFormat(new Date(x));
},
valueFormatter: function(x) {
return dateFormat(new Date(x));
}
}
},
labelsDivWidth: 310,
rollPeriod: 30,
strokeWidth: 2.0,
labels: ['Date','Humedad (%)','Temp (&deg;C)']
}
);
</script>

<hr/>

</body>
</html>
 
------------------------------------------ 
CODIGO HASTA AQUI-------- FIN DE ARCHIVO index.html
------------------------------------------
 
Probandolo todo!!!

Si todo va bien, podemos probar que todo esto funciona, desde nuestro navegador
de paginas web, apuntando a la direccion ip de nuestra raspberry

http://ip.de.mi.pi

Deberia aparecer algo como esto:




Resumen:

Espero que os sirva de utilidad. A mi me ha funcionado todo a la perfeccion.

Un saludo a todos!!!


Fuente de informacion:

http://chrisbaume.wordpress.com/2013/02/10/beer-monitoring/

http://dygraphs.com/

http://rpidude.blogspot.com.es/2012/11/temp-sensor-and-wiringpi.html

http://dx.com/es/p/arduino-digital-temperature-humidity-sensor-module-121350

http://ubuntuone.com/6mT9cTREz90BUfvQD1AGNy


Agradecimientos:

Muchas gracias a Alberto, que me ha dejado todo el hardware necesario para poder
hacer mis pinitos con todo esto. Un abrazo!!!

 




			

Usar un cable ide de disquetera, para conectar el gpio de la raspberry pi, y poder jugar con las conexiones

A continuación pongo un esquema de como quedaria la relaciones de pines, si usamos un cable ide de disquetera (de 32 pines), para no ir tocando continuamente los pines del gpio de la raspberry pi.

Seguir leyendo para verlo en mas detalle.

Fijaos muy bien en el dibujo, porque el lado de la derecha del dibujo, que es el que no tiene los cables cruzados, y los deja a la izquierda en el otro extremo, se conecta a la raspberry, dejando 8 agujeros del cable libre. Hay que tener en cuenta que es un cable de 32 pines, y el gpio de la raspberry tiene 26

IMPORTANTE: Hay muchos cables que vienen con uno de los agujeros tapados!! buscar un cable que no lleve los agujeros tapados!!

Aqui os pongo otro dibujo en grande con la correlacion de pines:

Si por ejemplo, queremos usar el pin 3 y el pin 6 de la raspberry (Tabla de arriba), buscamos su numero en la tabla de abajo, y usamos ese hueco del cable.

Espero que os sirva de ayuda!! a mi me ha servido!!

Un saludo!

Instalando WEBMIN para administrar nuestro raspbian

Instalar Webmin en Raspbian

Vamos a ver paso por paso, como podemos instalar este administrador del servidor basado en web llamado webmin. Asi podremos administrarlo directamente desde un entorno amigable de pagina web.

Nos conectamos como usuario root

Paso 1:
——-

Creamos un fichero de texto en esta ruta y con este nombre:
/etc/apt/sources.list.d/webmin.list

Lo podemo crear directamente escribiendo este comando:

nano /etc/apt/sources.list.d/webmin.list

Escribimos estas dos lineas, que son los repositorios para que pueda descargar e instalar webmin de una forma

facil y sencilla

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Guardamos los cambios en el programa “nano” con CTRL+o

Salimos del programa “nano” con CTRL+x

Paso 2:
——-

Nos descargamos la clave publica de webmin siguiendo estos pasos:

Vamos a nuestro directorio HOME, poniendo este comando:

cd /root

Descargamos la clave publica con este comando:

wget http://www.webmin.com/jcameron-key.asc

Instalamos la clave publica con este comando:

apt-key add jcameron-key.asc

Si todo va BIEN, acabara poniendo OK

Paso 3:
——-

Actualizamos los repositorios con este comando:

apt-get update

Instalamos webmin con este comando:

apt-get install webmin

cuando termine, nos vamos al navegador de paginas web, y entramos en webmin con esta direccion

http://localhost:10000

Eso es todo!!!!

Usando raspberry pi como reproductor multimedia para casa

Aqui pongo un interesante enlace a un artículo que nos cuenta, como configurar raspberry pi con la distribucion de xbian ademas de instalar el plugin de “pelisalacarta”, para poder disfrutar de un monton de series y peliculas online. En enlace es el siguiente:

http://www.edoyle.net/xbian-pelisalacarta-series-ly-seriesyonkis-personalizacion-control-a-distancia/

Espero que os sea de interes.

Saludos!!!