1 dic 2015

Configurando NoIP en GNU-Linux (Debian, Ubuntu, Raspian, Mint.. etc)

Nota: La siguiente entrada es parte de la serie "Servidor de Desarrollo en una Raspberry" pero debido a que Raspbian es un Debian modificado estos pasos aplican para todas aquellas distribuciones de Linux basadas en Debian (Ubuntu, Kubuntu, Mint, etc...)
Para acceder a un servicio en red (una pagina web, un servidor de base de datos, un servidor ftp, etc...) es necesario conocer la dirección en la cual se encuentra publicado dicho servicio, esta dirección no es otra mas que la IP, dependiendo de nuestro servicio de internet esta IP puede ser dinámica o estática, en el primer caso bastara con memorizar dicha IP para acceder al servicio pero en el segundo caso lo mas recomendable sería utilizar un nombre de dominio el cual enmascare nuestra IP. Aunque pensándolo bien sea lo mejor en ambos casos en lugar de recordar números extraños.

No-IP permite enmascarar una dirección IP con un nombre de dominio fácil de recordar, como misitio.ddns.net, y que este siempre este disponible sin importar si nuestra IP es o no estática.

Configurar No-IP es bastante sencillo, basta con obtener un usuario, contraseña y un nombre de dominio en su pagina. El dominio podrá ser un dominio gratuito con extensión .ddns.net o cualquier dominio que poseamos.

Primero que nada tenemos que asegurarnos que nuestro servidor tenga una IP local fija, en seguida nos aseguraremos de contar con los paquetes necesarios para compilar el cliente de NoIP.
sudo apt-get install make gcc g++
Y nos colocaremos en el directorio /usr/local/src/, descargaremos el cliente, descomprimiremos el paquete y lo instalaremos, con los siguientes comandos:
cd /usr/local/src/
sudo wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
sudo tar xf noip-duc-linux.tar.gz
sudo rm noip-duc-linux.tar.gz
cd noip-2.1.9-1/
sudo make install
A continuación se iniciara un asistente en linea de comandos, el cual nos pedirá el usuario y contraseña que dimos de alta en la página de NoIP, posteriormente nos pedirá que elijamos el dominio que queremos utilizar. En caso de que sea el único que hayamos registrado nos lo dará por default. Por último nos solicitará que confirmemos el tiempo de actualización de nuestro dominio (recomiendo dejar los 30 minutos por default). 

Importante: Con esto habremos instalado el cliente el cual nos resolverá las peticiones del dominio que hemos configurado sin importar la IP que tenga nuestro servidor lo cual no servirá de mucho si no configuramos los puertos de nuestro modem para que los redireccione a la IP local de nuestro servidor, esto queda fuera de esta guía ya que depende mucho del modem que poseamos. En mi caso es un Hawuei HG532e (de Telmex) en el cual se configura en el menú Avanzado/NAT/Mapeo de Puerto. Desde dicho menú seleccionamos la aplicación y el equipo al cual será direccionado.


1 nov 2015

Servidor de desarrollo en una Raspberry Pi (Parte 2)

Nota: Esta entrada es la segunda parte de la entrada Servidor de desarrollo en una Raspberry Pi (Parte 1) en la cual explique el modo de cargar la imagen de Raspbian en una microSD. En esta entrada hablare de la configuración primaria de Raspbian.
Una vez puesta la microSD en la Raspberry Pi debemos conectar, al menos la primera vez el teclado y mouse en los puertos USB, una pantalla al puerto HDMI, el cable ethernet y por último la corriente eléctrica al puerto microUSB.

Al iniciar el Raspbian habrá que iniciar la configuración inicial, abriendo la terminal y tecleando:
sudo raspi-config
Esto nos abrirá una ventana de color azul con un menú con distintas opciones:
Al copiar la imagen en nuestra memoria esta ocupa un tamaño limitado, la primera opción Expand Filesystem nos permite utilizar el espacio completo disponible en la tarjeta microSD.

Change User Password por default en Raspbian se incluyen 2 usuarios root y pi. Esta opción del menú permite modificar la contraseña del usuario pi, la cual por default es raspberry.

Boot Options nos permite elegir el modo en el cual iniciara Raspbian:

  1. Console - Inicio en modo texto solicitando usuario y contraseña 
  2. Console Autologin - Inicio en modo texto loggeado con el usuario pi
  3. Desktop - Modo gráfico
  4. Desktop Autologin - Inicio en modo gráfico loggeado con el usuario pi
Wait for Network at boot esta opción nos permite indicar si queremos dar prioridad al uso de la red al inicio.

Internationalisation Options dentro de esta opción podremos configurar las opciones regionales, el idioma y la distribución del teclado.

Enable Camera esta opción habilita el puerto físico para el modulo externo de la cámara para la Raspberry Pi

Add to Rastrack permite que nuestra Raspberry sea rastreada por el sitio web Rastrack. Este sitio es una herramienta que ubica geograficamente a las Raspberry Pi a las que les han habilitado esta opción. No tiene ningún otro uso, más que ese. Si deseas que tu Raspberry Pi aparezca en el mapa deberas nombrarla y registrar un correo electronico.

Overclock Esta opción permite aumentar la velocidad del procesador. Antes de jugar con los parámetros hay que tener en cuenta que el elevar la velocidad de procesamiento significara un mayor calentamiento en el procesador, un mayor consumo eléctrico y un mayor desgaste físico, es decir se acortara la vida útil de la Raspberry. Si aun así se quiere probar les recomiendo usar disipadores de calor en los chips de la placa e incluso usar algún ventilador. Y usar el comando:
/opt/vc/bin/vcgencmd measure_temp
Para monitorear la temperatura de la placa... que debe andar entre los 40º C y 50º C.

Advanced Options presenta un submenu con diferentes opciones que podremos configurar, entre las que destacan el poder nombrar a nuestra Raspberry dentro de la red local, habilitar o deshabilitar el uso de SSH, elegir si queremos que el audio salga por el jack 3.5mm o por el HDMI, seleccionar la cantidad de memoria compartida entre la CPU y la unidad de gráficos (GPU), forzar la actualización, entre otras.

About raspi-config por ultimo nos muestra una breve descripción de la herramienta.

Una vez terminada la configuración inicial yo recomiendo, desconectar teclado, mouse y display y conectarnos via ssh para esto requerimos conocer la IP de la raspberry para lo que utilizamos el comando
ifconfig
Para conectarnos desde MacOSX y GNU Linux bastara con abrir la consola y teclear:
ssh usuario@dominio
En el caso de la Rasp usaremos el usuario root default "pi" y el dominio en este caso, será nuestra ip (más adelante explicare como configurar un dominio):
ssh pi@192.168.1.5
Si requerimos conectarnos desde windows tendremos que usar algún programa, yo recomiendo Putty Manager.
Nota: A pesar de configurar con el asistente y en el modo visual los parámetros de idioma tuve algunos problemas con perl ya que no se configuraban correctamente. Luego que consultar varios sitios me entere que dicho error era provocado por el ssh al conectarme, para resolverlo edite el archivo /etc/ssh/ssh_config (En MacOS) y comenté (colocando un # al inicio) la linea: 
# SendEnv LANG LC_* 
En la siguiente entrada explicaré como activar todos los servicios restantes en nuestro servidor.

30 oct 2015

Servidor de desarrollo en una Raspberry Pi (Parte 1)

Hace ya un tiempo que venia dandole vuelta a la idea de hacerme de una Raspberry Pi lo cual no había sido posible hasta hoy. Durante todo ese tiempo tuve (valga la redundancia) mucho tiempo para idear un posible uso practico y sencillo que me ayudara a conocer las posibilidades de una Rasp y he aquí que he decidido montar un servidor basado en GNU-Linux!!

Sí, lo se nada fuera de lo común.. pero bueno.. por algo había que empezar...

La idea de montar el servidor surge de la necesidad de tener un servidor de desarrollo de bajo costo y bajo consumo eléctrico, en el que, un pequeño equipo de desarrolladores puedan trabajar a la par en uno o varios proyectos. Para ello el servidor debe contar con las siguientes características:
  • Accesible remotamente vía Internet (HTTP y SSH)
  • Servidor web (Apache + PHP)
  • Servidor de Base de Datos (MySQL)
  • Transferencia de Archivos vía FTP
  • Controlador de versiones (git)

Primero que nada hay que entender que la Raspberry Pi no es mas que una computadora, lista para usarse, basta conectar los cables y listo... Claro que antes habra que ponerle una microSD con un sistema operativo basado en ARM para que nuestra mini computadora funcione, piece of cake.

Primero que nada tendremos que descargarnos el archivo *.img (comprimido en un *.zip) desde la pagina oficial. En mi caso opte por Raspbian, una distribución basada en Debian para la Raspberry Pi El paso siguiente depende del sistema operativo y del modo en el que lo queramos hacer:
NOTA: Al intentar descomprimir el archivo usando la Utilidad de Compresión nativa de MacOS obtenía un archivo *.cpgz, investigando un poco, opte por utilizar The Unarchiver.
En GNU-Linux y en Unix (Mac) desde la terminal

Para los valientes que gustan de usar la terminal, primero que nada debemos saber cual es la ruta en la cual se esta montando nuestra microSD, una vez que la conectemos y abramos la terminal tecleamos:

En linux 
df -h
En mac
diskutil list
Los comandos anteriores nos muestran un listado de los dispositivos conectados, si tenemos dudas para identificar cual es el que queremos utilizar podemos correr el comando antes y después de conectar la memoria. El dispositivo deberá tener un nombre como disk o ssd (En Linux o Mac, respectivamente) en el directorio /dev acompañado de un numero. Acto seguido debemos desmontar esa unidad:

En linux 
unmount /dev/ssd#
En mac
diskutil unmountDisk /dev/disk#
Donde el # es el numero que mencionaba anteriormente. Finalmente usaremos el comando dd para copiar el contenido del *.img en la unidad deseada, este comando es el mismo para ambos sistemas operativos:
dd bs=tamaño_bloque if=archivo_imagen of=ruta_destino
Donde bs indica el tamaño de los bloques que al transferir, if y of son la imagen y el directorio de destino. El destino seria la ruta de nuestra unidad previamente montada. Un ejemplo sería:
dd bs=4M if=2015-09-24-raspbian-jessie.img of=/dev/sdd
En este ejemplo estaríamos usando bloques de 4MB, en caso de que el comando nos diera error tendríamos que cambiar 4M por 1M lo cual aumentaría el tiempo de copiado.

Al correr el comando anterior no tendríamos ningún indicador de tiempo restante lo cual hay que tener en cuenta... y ser pacientes... 
Alternativas a la terminal

En caso de no querer usar la consola podemos emplear estas aplicaciones:

Ambas opciones funcionan de la misma manera, conectamos la microSD, la seleccionamos, seleccionamos la imagen y esperamos.

Una vez copiada la imagen en la SD lo que queda por hacer es expulsar la unidad e introducirla en la Raspberry y ahora si.. conectar todo.

En la entrada posterior "Servidor de desarrollo en una Raspberry Pi (Parte 2)" explico las configuraciones básicas que habrá que hacer para que nuestro servidor quede funcionando.

28 oct 2015

NTFS gratis en Mac OS X (El Capitan)

Dentro de la eterna competencia entre los sistemas operativos se incluye el tema de los formatos de archivos, en windows el estándar es NTFS como para Linux es ext3/ext4, en Mac OS X se usa HFS+ estos formatos (nativamente) son incompatibles por razones obvias.

Como usuario de estos 3 sistemas operativos busco siempre el modo de tener a la mano mis archivos sincronizados y al día independientemente del SO que este utilizando. Para ello utilizo como pivote un disco duro externo (con formato NTFS) y rutinas de sincronización para cada uno de los sistemas que utilizo (ROBOCOPY, rsync.. en otra entrada hablare al respecto). 

El problema radica, en que a diferencia de GNU-Linux Mac OSX nativamente restringe la escritura en los discos duros con formato NTFS, esto se puede solucionar con 2 soluciones comerciales:


Pero no son las únicas opciones existentes, existe una solución gratuita que utiliza NTFS-3G, el driver de código libre para los discos con formato NTFS. Este driver permite crear, renombrar, mover o borrar ficheros de cualquier tamaño en cualquier dispositivo con NTFS.

Antes que nada debemos instalar OSX Fuse es la opción gratuita que utiliza NTFS-3G. Durante la instalación, debemos marcar la opción “MacFUSE Compatibility Layer“ y posteriormente debemos reiniciar el equipo.

Una vez reiniciado deberemos instalar el NTFS-3G y de nueva cuenta reiniciar el equipo. Una vez hecho podremos escribir ficheros en dispositivos con NTFS.

Descarga OSX Fuse (Compatible con El Capitan)


Edición: La versión del NTFS-3G que a mi me funcionó fue la 2010.10.2, actualmente funcionando en MacOS X 10.11.4

17 feb 2014

Android 4.4 x86 (Kit Kat) para PC

Siempre he imaginado que el siguiente paso de Google será el generar un SO para integrar y sincronizar nuestro equipo de computo con nuestro equipo móvil (El cual ya existe y se llama ChromeOS, solo que aun no se comercializa masivamente), el equipo de Android-x86 ha ido mas allá y desde hace un tiempo han trabajado en la opción de correr Android directamente como sistema operativo en nuestras computadoras con plataformas x86 de Intel o AMD ya sea como LiveCD o instalándola en el disco duro.
Este pasado 14 de febrero este equipo nos regalo la versión Release Candidate (RC1) de Android 4.4 x86. 
Android 4.4 x86 se ofrece para descarga y uso gratuito en formato de imagen *.iso que como ya mencione puede grabarse en una unidad óptica o pendrive USB, funcionando como Live CD o para instalarse en unidad de almacenamiento interno en equipos como netbooks u otros PCs.
Pueden checar mas datos acerca del proyecto en: Android-x86 o descargar en: Sourceforge

3 feb 2014

Blat: envio de email desde la consola (Windows)



Blat es una biblioteca OpenSource y una utilidad para la linea de comandos de Windows la cual permite enviar correo electrónico. Para usar blat es necesario tener acceso a un servidor SMTP vía TCP/IP.

El paquete que se distribuye en sourceforge contiene 2 carpetas: docs y full. Dentro de docs se encuentra la documentación y el historial de las versiones. Dentro de full se tienen los archivos:
  • blat.dll   - Biblioteca de enlace dinámico, para usar blat desde C o C++.
  • blat.exe - Programa para linea de comandos para envío de correo electrónico.
  • blat.lib   - Biblioteca estática, para enlazar a la dinámica.
  • blatdll.h - Archivo cabecera para incluir en los proyectos de C o C++.
Usando blat
Para utilizar blat debemos ubicarnos usando la consola en el directorio donde esta el archivo blat.exe, o bien, por comodidad, debemos copiar el archivo blat.exe a alguna carpeta listada en el PATH (C:/Windows/System32 por conveniencia). Una vez hecha cualquiera de las opciones anteriores podremos acceder al programa desde la consola usando el comando: 

blat "parametros"

La lista completa de parámetros que podemos emplear viene en el archivo docs/syntax.txt o se puede consultar en linea.

Para que quede claro veamos un ejemplo, usando el correo: manuel@empresa.com usaríamos los siguientes datos:
  • Dominio: empresa.com
  • Servidor: smtp.empresa.com
  • Puerto: 225 (Puede cambiar)
  • Cuenta: manuel@empresa.com
  • Usuario: manuel (En ocasiones el usuario es el correo completo manuel@empresa.com)
  • Pasword: password  
 Por lo que ejecutaríamos desde linea de comandos:

blat -q -f manuel@empresa.com -server smtp.empresa.com -u manuel -pu password -subject "Correo de Prueba" -body "Este es una prueba de envio de correo"

Perfiles Blat.


Una opción que puede resultar útil (para reducir el tamaño del comando) es la de los perfiles. Un perfil nos permite usar el programa blat configurando uno o mas correos para el envío. Para usar esta opción es necesario copiar el archivo blat.exe a alguna carpeta listada en el PATH (C:/Windows/System32 por conveniencia). Para crear un perfil utilizamos el comando:

blat -install smtp.empresa.com manuel@empresa.com  3 225 - manuel password
Donde los parámetros en negrita indican: 
  • El numero de intentos de envío (por default 1)
  • El puerto (por default 25)
  • El indice del perfil (en este caso se indica con el '-' que se usara el numero de perfiles por default: 1).

Una vez configurado el perfil podemos enviar correos usando el siguiente comando:
blat correo.txt -t destinatario@dominio.com -s "Hola"
En esta ocasión emplee correo.txt en lugar de -body "Contenido del mensaje". De esta forma se envía como cuerpo del mensaje el contenido del archivo de texto, esto es muy útil si lo que se desea enviar es contenido HTML o algún texto que incluye comillas (ya que estas "truncan" el comando, produciendo errores en el envío). El parámetro -t indica el destinatario y -s es el asunto del mensaje enviado.
Otros parámetros para tener en cuenta.
Blat incluye un modo debug, el cual permite conocer el status del envío, de este modo en caso de haber algún error en el envío podremos corregirlo. 
blat correo.txt -t destinatario@dominio.com -s "Hola" -debug
Podemos almacenar en un archivo de texto (log) la información de los envíos.
blat correo.txt -t destinatario@dominio.com -s "Hola" -log logfile.log
Para enviar archivos adjuntos empleamos el parámetro -attach  seguido del o los archivos adjuntos, separados por comas:
blat correo.txt -t destinatario@dominio.com -s "Hola" -attach "file.txt,f2.txt"
Por ultimo añadiendo el parámetro -q suprimimos cualquier salida de texto en la consola.
blat correo.txt -t destinatario@dominio.com -s "Hola" -q

Este seria una explicación muy básica del blat, la cual es una herramienta muy útil si se combina con scripts batch o con otros lenguajes para automatizar tareas que requieran del envío de correo electrónicoPersonalmente la emplee para envío de CFD's (un par de archivos *.xml y *.pdf) en un programa de facturación digital.
Espero a alguien le sea de utilidad, para mayor información les recomiendo la lectura de la documentación. 

1 oct 2013

Quitar contraseñas de usuario en Windows 7 y Windows Vista

En ocasiones, ya sea por descuido, broma o que se yo; los usuarios cambian su contraseña y no pueden entrar a Windows, esto se resuelve muy fácilmente:

Requerimientos: CD-ROM o USB booteable 

Yo en lo particular utilizo Ubuntu ya sea desde una USB o desde un CD.

Arrancar con un disco booteable. 
1. Ubicarse en el directorio c:\windows\system32\ 
2. Renombrar el archivo sethc.exe como sethc.old 
3. Copiar cmd.exe y renombrar la copia como sethc.exe 
4. Reiniciar la computadora y arrancar desde el disco duro.

Una vez reiniciado, en la ventana de inicio de sesión de usuario de Windows
1. Presionamos 5 (cinco) veces la tecla SHIFT del lado izquierdo, abriendo una ventana de comando. 
2. Ubicarse en el directorio (creo lo da por default) c:\windows\system32\
3. Escribir control userpasswords2 y damos ENTER

Aparecerá una ventana con las cuentas existentes en el sistema:
1. Seleccionar la cuenta que queramos cambiar y/o modificar 
2. Pulsar en la opción RESTABLECER CONTRASEÑA. 
3. Dejar en blanco los campos de contraseña y ACEPTAR. 
4. Cerrar la ventana de comando. 


Con esto podremos "restablecer" la contraseña de los usuarios que queramos, pudiendo ingresar ahora sin ninguna contraseña.


Si booteamos usando un disco de Windows los pasos a seguir son en esencia los mismo, con ligeras variaciones, como se puede ver en el siguiente vídeo:



En lo personal me parece mas rápido usar un Live CD de GNU Linux, pero hay para todos los gustos.

9 ago 2013

Drivers

En ocasiones al instalar-actualizar-formatear una computadora la mayor parte de la talacha es buscar los drivers, ya sea que se nos haya olvidado respaldarlos (El cómo lo postearé en otra ocasión), que no tenemos los discos de restauración o porque de a tiro no podemos acceder a el sistema, por esto es que siempre tomo la precaución de guardar los drivers de la mayoría de las computadoras que reparo, por precaución, por si el cliente vuelve, por si la compañía deja de dar soporte a ese equipo y para evitar eso de "El flojo trabaja doble".

En este post iré compartiendo esta pequeña colección de drivers por eso de "Si a alguien le sirve".

8 ago 2013

Instalar Windows desde una USB (Pendrive)

Aunque la entrada se titula "Instalar Windows desde una USB (Pendrive)" este método es aplicable a cualquier sistema operativo booteable, así que dicho esto, comencemos:
Aunque existen programas especializados para tal labor (Incluso distribuidos por Microsoft. Descargar) prefiero este método que es mas rápido ya que evita el tener que esperar a que se descargue y luego instalar el programa. 
Requerimientos:
Disco de instalación de Windows 7 (O el sistema que quieras bootear desde la USB).
USB con mínimo 4 GB libres.
Computadora con Windows instalado.

24 jul 2013

Optimus Technology: Instalando CUDA Toolkit con Bumblebee Project en GNU-Linux (Ubuntu/Debian/Mint)


Hace unos meses me hice de una Laptop nueva, una Lenovo ideapad y480 cuyas especificaciones son:

  • Video: Intel® HD Graphics / Nvidia Geforce GT 640M LE
  • RAM: 6GB (1333MHz) 
  • Pantalla: 14" (1366x768) LED WXGA 
  • Disco Duro: 1TB 5400rpm
  • Procesador: Intel® Core™ i7-3630QM (6M Cache, 2.40 GHz)
La idea era tener una maquina potente y con una tarjeta de vídeo CUDA capable en caso de tener que usar programación en paralelo en mi proyecto de tesis. Al principio todo era alegría  la maquina era todo lo que esperaba, con Windows... Hice respaldos, copie drivers, hice los discos de recuperación y formatie, cree particiones e instale Ubuntu 12.04 LTS, de maravilla la maquina jalaba perfectamente, no hubo problemas con dispositivos así que me puse a instalar paquetes, uno tras otro sin error, pero al querer instalar CUDA Toolkit todo cambio...