Ver la fecha de instalación de Windows

¿Cómo podemos ver en qué fecha se ha instalado un sistema Windows? Bueno, hay varias opciones, pero la más universal es usando este comando desde el símbolo de sistema (cmd)

wmic os get installdate

Esto nos devolverá un churro ininteligible en principio, pero si te fijas bien es la fecha: los cuatro primeros dígitos son el año, los dos siguientes el mes, los dos siguientes el día, los dos siguientes la hora, luego otros dos para los minutos y acabamos con los segundos.

resultado get installdate
Sí, parece un churro incomprensible, pero realmente pone que se instaló en 2016, el 01 (enero) el día 29 a las 10:02:08.

Redirección WWW con .htaccess

Bueno, no es la primera vez que hablamos por aquí del fichero .htaccess. Hoy vamos a ver cómo utilizarlo para redireccionar nuestro dominio a www siempre, o viceversa. Esto nos permitirá mejorar nuestro SEO y nuestro PageRank.

La cuestión ahora es editar nuestro .htaccess con un editor de texto. Si lo que quieres es redireccionar del dominio sin www al que sí la tiene sería el siguiente código:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^aquitudominio.loquesea [NC]
RewriteRule ^(.*)$ http://www.aquitudominio.loquesea/$1 [L,R=301]

Y para lo contrario, para que siempre entre sin las www, entonces sería:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.aquitudominio.loquesea [NC]
RewriteRule ^(.*)$ http://aquitudominio.loquesea/$1 [L,R=301]

Cambiando aquitodominio.loquesea por lo que corresponda para vuestra web.

Crear un Raid1 con mdadm en Linux

Si ya vimos como instalar mdadm y cómo hacer un Raid0 para conseguir mayor velocidad, vamos ahora con otro de los arrays de discos más básicos: RAID1 o Mirroring. Lo de mirroring ya te dará una idea sobre cómo funciona la cosa: consiste en tener una copia exacta de los datos en dos discos. Esto implica que lo mejor para este caso es tener dos discos duros del mismo tamaño.

Para este ejemplo vamos a suponer que tenemos dos discos: sda1 y sdb1.

El primer paso es editar el archivo /etc/mdadm.conf y añadir los parámetros DEVICE y ARRAY correspondientes:

DEVICE /dev/sd[ab]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1

Una vez configurado el archivo nos toca ejecutar el comando mdadm para crear el array de discos y que se inicie:

mdadm -C /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1

Tras eso nos pedirá permiso para continuar creando el array, así que basta con contestar yes para terminar.

Recuerda que este tipo de array ralentiza la velocidad de escritura en disco al tener que duplicar el trabajo.

Crear un RAID 0 en Linux mediante mdadm

El otro día hablamos sobre la existencia de mdadm y cómo instalarlo en nuestra distribución Linux. Hoy vamos a ver cómo usarlo para crear un RAID 0.

En fin, os vais a las instrucciones del otro día para instalar mdadm, y cuando lo tengáis instalado comprobáis en /proc/mdstat que no haya ningún array creado (no debería). Para este ejemplo vamos a suponer que tenemos cuatro discos duros: sda1,sdb1,sdc1,sdd1.

El primer paso es editar el archivo /etc/mdadm.conf y añadir los parámetros DEVICE y ARRAY correspondientes:

DEVICE /dev/sd[abcd]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

Una vez configurado el archivo nos toca ejecutar el comando mdadm para crear el array de discos y que se inicie:

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Tras eso nos pedirá permiso para continuar creando el array, así que basta con contestar yes para terminar.

Una vez creado el array de discos podemos consultarlo con el comando mdadm –detail /dev/md0 desde el que podremos ver todos los datos del nuestro RAID.

Definir el ancho y el alto de un iframe con Javascript

Una entrada rápida ¿cómo definimos el alto y el ancho de un iframe con Javascript? Pues sirviéndonos de sus propiedades width y height:

//ejemplo: definimos iFrame con
//600px de alto y 800 de ancho
document.getElementById("miIFrame").height = "600";
document.getElementById("miIFrame").width= "800";

Basta con pasarle el valor en píxeles del tamaño que queremos darle en forma de cadena.

Linux: Instalar mdadm

Multiple Device Administrator, en resumen mdadm, es una solución de software que reúne un conjunto de herramientas para gestionar en una distribución Linux el uso de varios discos duros. Nos permite tener una solución de bajo costo si queremos crear un array de discos, un RAID, sin recurrir a hardware específico para esto. Nos permite utilizar configuraciones RAID 0, RAID 1, RAID4, RAID5, RAID6 y RAID1+0. También nos da la opción de crear arrays de discos «no raid» como una configuracion linear (concatenar unidades de disco para crear una unidad virtual más grande), multipath (en caso de que un disco falle permite el uso de otro, para alta disponibilidad) o container (un contenedor para crear varios dispositivos RAID).

En algunas distribuciones Linux, generalmente las destinadas a servidores como Fedora, CentOS o Red Hat Entrepise Linux, es habitual que mdadm venga preinstalado. En otras distribuciones generalmente podréis descargarlo desde los repositorios:

#En Ubuntu/Debian
apt-get install mdadm

#Red Hat y otras
#distribuciones que usan
#el gestor yum
yum -y install mdadm

#gentoo y otras
#distros con emerge
emerge mdadm

Más adelante hablaremos sobre configuraciones RAID en Linux.

Linux: el comando free

Free, as in freedom. O sea, de libre, no de gratis (tema que ha dado siempre para mucho debate y aclaración en el Software Libre). Pues sí, la consola de Linux tiene un comando que se llama free, y que nos muestra cuánta memoria libre nos queda.

El comando free nos muestra tres líneas, seis columnas y admite varios parámetros. Aquí te pego una captura con un ejemplo y luego vamos explicando:

ejemplo comando free

La línea 1 nos muestra la memoria RAM: en la primera columna la cantidad total del equipo, en la segunda la que está en uso, la tercera la que está libre, la cuarta es un valor en desuso que antaños sería la memoria compartida, la quinta nos muestra la memoria que está siendo usada por el buffer de los programas (es decir, datos que se guardan temporalmente durante la ejecución de un programa para verlos una sola vez) y la sexta lo que hay en la caché de los programas (son datos que los programas dejan cargados para revisarlos regularmente y acelerar su ejecución).

La línea 2 nos muestra un ajuste de cuánta memoria hay en uso y cuánta disponible si no tenemos en cuenta ni el buffer ni la caché.

La línea 3 nos muestra la SWAP, el espacio de disco duro que hemos definido como memoria de intercambio, y sólo nos da tres columnas: total, utilizada y libre.

En la imagen del ejemplo puedes ver que usé free junto al parámetro -m, de esa forma muestra los datos en megas. Si en lugar de -m usáramos -k lo mostraría en kilobytes, con -g en gigabytes y con -b en bytes. Según la precisión necesitada será más recomendable una u otra unidad.

Si no consideras necesaria la segunda fila puedes poner el parámetro -o, que provocará que esta no se incluya, mostrando sólo la memoría física y la SWAP.

Si quieres ver una línea adicional con la suma de la memoria física y la SWAP puedes conseguirlo con el parámetro -t.

Con el parámetro -s la consulta se recargará cada pocos segundos, para permitirnos mantener monitorizado el estado de la memoria.

El comando por defecto hará los redondeos de la memoria en base a potencias de 1024, si quieres que lo haga en base a 1000 tendrás que usar el parámetro –si. Si tienes 8 gigas y sacas la consulta con -g es probable que te salgan 7 por este redondeo, con –si te aparecerían los 8.

Linux AIO: Varias distros en una sola imagen

Más de una vez habrás pensado, seguro, en que sería cómodo llevar varias distribuciones de Linux en un mismo pen, por lo que pueda pasar al ir a realizar una instalación o mantenimiento. Hay muchas formas de hacerlo, pero el proyecto Linux AIO nos ofrece una serie de isos que recopilan varias distribuciones de una misma familia.

Entre las múltiples opciones para descargar nos encontramos con Debian, Mint, Fedora, LMDE, Ubuntu y varias distribuciones menos conocidas como pueden ser Triskel o Point Linux.

Linux AIOPodéis descargar estas distros por vía Torrent o descarga directa, aunque al estar en Sourceforge el tamaño máximo de descarga limitado a 5 gigas os pasará, con algunas familias, que tendréis que bajaros dos archivos. Yo recomiendo usar el torrent siempre que sea posible. Luego creáis un USB arrancable, podéis seguir las instrucciones de la web del proeyecto, y finalmente hacéis que vuestro equipo arranque desde el USB. Debería verse una pantalla así al iniciar (en el ejemplo vemos la pantalla para la familia Ubuntu 16.04):

Linux AIO

Desde ahí podéis elegir qué distro arrancar, ya sea para probarla como LiveCD o para instalarla.

Linux AIO no es el único proyecto de instalador múltiple de Linux, pero sí uno de los más completos e interesantes, que lleva activo desde 2014. Merece que le echéis un vistazo.

Arduino: Recuperar datos guardados en varios bytes de la memoria EEPROM

Seguimos con la memoria EEPROM de Arduino, su memoria no volátil: vimos cómo leer y escribir de forma básica, y vimos cómo guardar un dato mayor de un byte recortándolo y almacenándolo repartido en varias posiciones de memoria. Pero lo que no vimos en ese apartado fue ¿cómo lo recuperamos?

Pues básicamente vamos a hacer lo mismo que en el ejemplo anterior pero al revés, volviendo a tirar de opreaciones de desplazamiento de bit. Declararemos una variable con el tipo de lo que queremos recuperar y junto a ella otra variable contenedor, leo un byte, lo almaceno en la auxiliar, lo desplazo hacia la izquierda para que sea el más significativo y lo anexo al total con una operación OR, y finalmente limpiamos la variable auxiliar.

Enchurrado en código es similar a esto:

   long Numero = 0;
   //Variable contenedor inicializada a 0
   long Contenedor = 0;

  //recorremos el bucle hacia atrás, al revés que en el ejemplo anterior
   for (int i = sizeof(Numero); i > 0 ; i--){

     //Aquí guardamos en el contenedor
     // un byte de datos
     Contenedor = EEPROM.read(i-1);

     //Desplazamos tantos bits como toque
//en esta iteración del bucle.
//El if es porque en la última iteración
//no habría que desplazar.
     if (i != 1){
     Contenedor = Contenedor  << (8*i);
     }

     //Utilizamos la operación a nivel de bit OR para
     //añadir a nuestro resultado final
     //el valor del byte leído.
     Dato = Dato | Contenedor;

    //Reiniciamos la variable
    //auxiliar para evitar problemas
    //con datos leídos previamente
     Contenedor = 0;
   }

Este ejemplo es limitado, ya que sólo te valdría en caso de que hayas guardado un único valor repartido en bytes, como en el ejemplo anterior. En el futuro veremos cómo usar los métodos get() y put() que simplican el tema.

Como en el ejemplo anterior es necesario conocerse las operaciones de desplazamiento de bit y las operaciones lógicas a nivel de bit.

Si tienes interés en Arduino a mi me ha servido de ayuda la wiki de Arduinobot y su manual en PDF.

Tcpxtract: extraer archivos del tráfico de tu red

Supongamos que eres el sheriff de una red, ya sea doméstica o empresarial, y tienes que monitorizar el tráficto de la misma, para lo que estás usando por ejemplo Wireshark. Ahora imagina también que quieres extraer los ficheros que se ocultan en esa comunicación ¿cómo lo hacemos? Bueno, pues para eso está Tcpxtract.

El primer paso es instalarlo. En Windows lo puedes descargar dese Sourceforge, en el caso de Linux puedes instalarlo con apt tal que así:

sudo apt-get install tcpxtract

Y ¿cómo le damos uso? la sintxis sería

tcpxtract [OPTIONS] [[-d ] [-f ]],

permitiéndonos -d capturar desde una interfaz de red y -f hacerlo desde un fichero. Dos ejemplillos en Linux

#extraemos datos directamente
#de la caputra de nuestra tarjeta
#de red
tcpxtract -d eth0

#extraemos datos de un archivo
#de tipo pcap
#generado por Wireshark
tcpxtract -f ejemplo.pcap

Tcpxtract reconoce los archivos que se envían por su firma o huella, estando estas registradas en el archivo tcpxtract.conf, lo que nos permitiría en todo caso poder añadir más editándolo, si conocemos dicha firma.

Se puede añadir una opción -o que permitiría definir en qué carpeta queremos que se extraigan los archivos capturados de nuestro tráfico.

#extraemos datos de un archivo
#de tipo pcap
#generado por Wireshark
#ejemplo definiendo salida
tcpxtract -f ejemplo.pcap -o imagenesExtraidas

Ten en cuenta este tipo de cosas, tanto por los temas de seguridad en las comunicaciones y usar siempre que sea posible la conexión https como si decides colarte en la wifi de tu vecino para usarla de gratis.