lunes, noviembre 25, 2013

Cómo rescatar archivos desde un correo en .eml (Linux)

Muchas veces recibimos correos con información adjunta, y también muchas veces nuestros remitentes nos reenvían un archivo de extensión .eml que eventualmente trae uno o muchos archivos adjuntos. Aquí una pequeña fórmula de como recuperar estos archivos adjuntos.

  1. Lo primero determinar cuantos adjuntos pueden venir. A veces bastará  con ejecutar un comando como este:
    grep "filename=" archivo.eml
    que nos mostrará el listado de archivos supuestamente incluidos.
  2. Luego ejecutar el siguiente comando:
    munpack archivo.eml 
    Este comando rescatará el listado de archivos que supuestamente vendría codificado dentro del adjunto.
  3. En casos especiales (como el que me sucedió recién), en los cuales el comando no rescata todos los archivos que se supone trae dentro. En ese caso habrá que abrir el archivo .eml con un visor de archivos de texto y buscar la línea donde aparezca el archivo qeu nos interesa rescatar. por ejemplo:
    Control+F filename="archivo.zip"
    Una vez encontrada la línea, se procede a eliminar todo lo anterior, y volvemos al paso 2. Eso debiera funcionar (debiera...). Esto se puede hacer por línea de comando, pero eso lo dejo a la inquietud del lector :)

Ejecutando un proceso en múltiples procesadores (Linux y Windows)

Muchas veces tenemos a nuestra disposición un servidor con múltiples procesadores, y nos interesaría poder aprovecharlos ejecutando algunos procesos de manera que utilicen más de un procesador.

Esto lo aprendí en una capacitación de Bonita BPM, donde el instructor nos señalaba que la licencia dependerá de la cantidad de procesadores qeu se desee utilizar.

Para Windows:

Los procesos deberán iniciarse con el comando:
start /AFFINITY [n] [archivo ejecutable]
donde [n] es un número decimal equivalente al binario que indica que procesadores se van a utilizar (ya lo explicaré), y [archivo ejecutable] es el ejecutable del programa (sea un .exe, un .bat u otro).


Respecto al valor de n:

Supongamos que tenemos 4 procesadores, entonces de izquierda a derecha los tendríamos:
CPU3 CPU2 CPU1 CPU0
1 para encendido y 0 para apagado. Entonces si por ejemplo queremos usar los 2 primeros procesadores (CPU0 y CPU1): 0011 binario cuyo equivalente en decimal es 3.

Para Linux:

De manera equivalente, los procesos deberán ejecutarse con el comando:
taskset [COREMASK] [EXECUTABLE]
donde [COREMASK] es el hexadecimal equivalente al binario que indica que procesadores se van a utilizar, y [EXECUTABLE] como se podrán imaginar, es precisamente el ejecutable del programa (.sh, binario u otro).

La única salvedad es que [COREMASK] se pone en notación hexadecimal, por ejemplo 3 en decimal es 0x3 en hexadecimal.

Para el tema del [n] y del [COREMASK] este enlace les puede servir: http://www.vlsm-calc.net/decbinhex.php
 

Fuente:
Si me preguntan, la verdad es que ignoro que efectos adversos pueda tener ejecutar  un proceso de esta manera. Pero nunca está de más saber como hacerlo.

viernes, noviembre 08, 2013

Clonando máquinas virtuales Linux

Una tarea relativamente habitual cuando se trabaja con entornos de desarrollo virtualizados es tener que agregar máquinas adicionales. Y para "ahorrarnos trabajo" (créanme que es sólo una falsa ilusión), utilizamos como "base" alguna otra máquina que ya tenemos creada y funcionando.
El problema: Hay alguna cosas que no se nos pueden olvidar, sino lo más probable es que nada funcione como esperamos.

Identificación de la máquina

Típicamente vamos a querer que cada nueva máquina tenga un nombre a lo menos descriptivo, que sirva para saber en que proyecto la tenemos.
En clones de máquinas Linux de sabor CentOS, o Red Hat (o similares), el nombre de la máquina está en el archivo /etc/sysconfig/network

En clones de máquinas Linux de sabor Debian, o Ubuntu (o similares), el nombre de la máquina está en el archivo /etc/hostname, pero además será necesario cambiar la referencia en el archivo /etc/hosts de modo que el IP 127.0.1.1 apunte al nuevo nombre.

Para que los cambios sean efectivos será necesario reiniciar la máquina virtual.

Configuración de red

Por una práctica más bien propia (mucho dirán que es de viejo mañoso), me gusta asignarle IPs fijos a las máquinas. Por ello al clonarlas reinicio la MAC de cada máquina virtual (lo que genera una MAC aleatoria), y utilizo una configuración de 2 tarjetas de red, una NAT y la otra virtual.

Lo primero será borrar el archivo /etc/udev/rules.d/70-persistent-net.rules que hace referencia a la MAC de la tarjeta de red de la máquina clonada (original).

En clones de máquinas Linux de sabor CentOS, o Red Hat (o similares),lo siguiente es editar los archivos /etc/sysconfig/networking/devices/ifcfg-eth*  borrando las líneas que hacen referencia a la MAC y la UUID.

Luego deberán reiniciar y sus máquinas virtuales estarán listas para jugar.

Si alguien tiene algún dato adicional o alguna corrección que agregar, pueden hacerlo en los comentarios.