Bash en Windows 10 64 Bits!

Muchos de nosotros somos Linuxeros de corazón pero por temas laborales nos vemos obligados a trabajar bajo entorno Windows y aunque ciertamente Windows 10 parece estar muy bien a nivel de consola siempre extrañamos nuestra Shell Bash de siempre, algunos por costumbre y otros por fanatismo (en mi caso una mezcla un poco rara entre ambas), el tema es que hay muchas o varias opciones para tener nuestra consola Linux en Windows, no obstante en Windows 10 64 bits (si tienes la versión 32 bits tendrías que actualizar a la versión de 64 aquí tienes un enlace de como hacerlo) tenemos la opción de habilitarlo y te comento como a continuación:

  1. Abres Configuración de Windows / Actualización y Seguridad.
  2. Click en “Para programadores”.
  3. En la sección “Usar las funciones de programador“, habilitar la opción “Modo de programador“.
  4. Luego hacemos click en inicio (icono de Windows) y escribimos “Programas” nos aparecerá la opción de “Programas y características“, presionamos ENTER.
  5. Hacemos click en “Activar o desactivar las características de Windows“.
  6. Se desplegara una pequeña ventana con titulo “Características de Windows“, bajamos casi hasta el final de la lista y seleccionamos la opcion “Subsistema de Windows para Linux (beta)” y hacemos click en aceptar.
  7. Nos notificara que necesita reiniciar el ordenador para poder aplicar los cambios, lastimosamente hay que hacerlo así que guarda todos los documentos en los que estés trabajando y haz click en “Reiniciar“.
  8. Una ves reiniciado el ordenador haz click en Inicio y escribe “bash“, te aparecerá la opción bash.exe, presiona ENTER.
  9. Se te abrirá la consola tipo CMD pero ejecutando bash.exe, te informara que se instalara el entorno de Ubuntu en Windows y te dirá que su licencia es Canonical dándote el link para que consultes dicha licencia, aquí solo tienes que escribir “y” para continuar, esto descargara todos los paquetes necesarios del repositorio.
  10. Lo siguiente que te pedirá es asignar un nombre de usuario a la bash, escribes el que quieras y presionas ENTER.
  11. Ahora te pedirá la contraseña para dicho usuario, la escribes presionas ENTER y te pedirá confirmarla, la vuelves a escribir y presionas ENTER.
  12. Te notificara que la instalación se realizo correctamente y veras que en la consola ya te muestra la sesión de usuario en el host correspondiente a tu ordenador y ya podrás comenzar a lanzar comandos como si te encontraras en un Linux puro y duro, que en principio prácticamente seria así ya que estas en una bash de Ubuntu.

Espero que os sea de utilidad!

Saber siempre tu IP/WAN

Aveces queremos acceder a nuestros ordenadores de casa desde el exterior bien sea porque tienes algún archivo en uno de tus discos duros locales, deseas conectar remotamente con uno de tus ordenadores o cualquier otra cosa similar, por ejemplo en este caso me he montado una Rapsberry Pi 2 en casa para montar en ella un Media Center y así dejar de compartir el contenido multimedia desde mi portátil principal hacia la consola, con lo cual necesitaba tener aparte de el portátil encendido y operativo y aparte encender la consola, esto aunque no parezca a diario puede tener un resultado no muy positivo a nivel de la factura de la luz sin hablar que es obviamente todo mucho mas tedioso.

Lo que he hecho ha sido montar una Rapsberry Pi 2 con RapsBMC al cual he conectado mis discos duros externos y me he instalado el Transmission-Daemon entre otras cosas, el tema es saber constantemente la IP WAN tomando en cuenta que tengo una IP dinámica con mi ISP.

20150213_204743.jpg 20150213_204818.jpg 20150213_205011.jpg 20150213_205139.jpg 20150213_205203.jpg 20150213_205333.jpg 20150213_212253_HDR.jpg 20150213_212254.jpg

Algunos servicios como NO-IP.COM, DynDNS entre otros suelen ofrecer gratuitamente por un determinado tiempo la instalación de una App en el ordenador/servidor para que constantemente se sincronice con el servicio y de esa forma puedas traducir tu IP mediante una DNS que ellos te ofrecen al puro estilo de un sub-dominio como por ejemplo test.no-ip.org o cualquier otro, el problema con estos servicios es que hoy en día luego de unos 15 días al vencer te solicitan que pagues el servicio o en todo caso notificaciones para que renueves constantemente el servicio lo cual se hace tedioso.

Yo como no me quiero complicar demasiado la vida lo que he pensado hacer es un crond que se ejecute a diario y me envié un archivo de texto a una carpeta FTP de mi servidor dedicado con el numero IP de mi servicio de Internet de casa, de esta forma el dia que note que no puedo acceder a mis recursos en casa sera tanto como entrar a mi directorio FTP y comprobar el ultimo archivo cargado y conocer la IP actual.

Ahora ¿como lo he hecho?
Fácil!, teniendo en marcha el Rapsberry y tomando en cuenta que la distro instalada esta basada en Debian simplemente nos instalamos curl con el siguiente comando:

apt-gt install curl

Teniendo curl instalado desde la consola podemos ejecutar el siguiente comando:

curl ifconfig.me

Esto nos devolverá la IP publica, el problema es que la unica forma de saberla de esta forma es conectandome via SSH al Rapsberry y si no conozco la IP publica sera obviamente complicado, con lo cual instalamos expect con el siguiente comando:

apt-get install expect

Ahora creamos un pequeño script en bash con el siguiente contenido:

#!/bin/bash/expect -f 
ip=$(curl ifconfig.me) #Variable de extracción de la IP WAN 
fecha=$(date +”%m_%d_%Y”) #Variable de fecha 
archivo=”/root/$ip._$fecha.txt” #Directorio y nombre del archivo 
echo $ip > “$archivo” #Imprimimos el archivo 
lftp -u [user],[password] ip « EOF #Abrimos conexión FTP 
set ssl:verify-certificate no #Para evitar validación de SSL en caso de tenerla 
set ftp:ssl-force true #Forzar el SSL 
set ftp:ssl-protect-data true #Habilitar la protección de datos 
put $archivo #Subimos el archivo 
bye #Finalizamos 
EOF #Cerramos la conexión   
rm -rf $archivo #Para no dejar archivos en local lo eliminamos.

Ya lo tenemos! lo guardamos como archivo con extensión .sh y lo ejecutamos, yo por ejemplo lo he llamado getip.sh, lo ejecuto con el siguiente comando:

sh getip.sh

Durante el progreso puedes ver lo que va haciendo, una ves terminado y para comprobar si ha funcionado sera solo mirar nuestro directorio FTP y comprobar que el archivo esta cargado allí.

Ahora simplemente editamos el crontab para que se ejecute de forma automática, yo por ejemplo lo he configurado para que lo ejecute cada dia a las 10:00 horas. Editamos el arachivo /etc/crontab y al final del archivo añadimos la siguiente linea: 

00 10 * * * sh /root/getip.sh

Y woala!, ya lo tenemos, todos los días a las 10 de la mañana el archivo .sh se ejecutara enviando a nuestro FTP un archivo de texto con nuestra IP publica como nombre y con ella como contenido de texto, así que en el momento en que vea que la IP publica habitual deja de funcionar solo tendré que entrar al FTP y ver el ultimo archivo creado para conocerla.

Espero que a quien me lea le sea de provecho!