Español English

Thursday 6 June 2013

Diferentes tipos de redes para VirtualBox

La aplicación VirtualBox nos proporciona diferentes opciones para conectar las máquinas virtuales que hemos creado entre ellas o a diferentes redes. En esta entrada quiero mostraros las opciones que nos proporciona VirtualBox y que características y ventajas nos proporcionan.

Los tipos de conexión que hay disponibles en VirtualBox:
  • NAT (Network Address Translation).
  • Bridged.
  • Red interna.
  • Red sólo anfitrión.
Supongo que la mayoría estáis familiarizados con los dos primeros tipos de conexión, pero los otros dos os pueden resultar confusos. Por eso paso a explicar un poco que características tienen cada tipo y la forma de utilizarlas en el VirtualBox.

NAT:

El NAT (Network Address Translation) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que asignan mutuamente direcciones incompatibles. En este caso el router es el sistema anfitrión que hace el trabajo de traducción entre las dos redes (la privada de las máquinas virtuales y a la que está conectado el sistema anfitrión). 

VBoxManage modifyvm "Nombre Máquina Virtual" --natpf1 "<Nombre de la regla>,tcp|udp,<IP destino>,<Puerto de escucha>,<IP máquina virtual>,<Puerto de la máquina virtual>"

por ejemplo, vamos a crear una regla que nos permita conectarnos por SSH a la máquina virtual ArchLinux, con cualquier IP y desde cualquier IP. Para ello vamos a dejar en blanco el apartado de las IP.

VBoxManage modifyvm "ArchLinux" --natpf1 "ConexionSSH,tcp,,2222,,22"

Bridged:

El Puente conecta segmentos de red formando una sola subred. Para nosotros tenemos dos segmentos de red, uno es el que forman las máquinas virtuales y el otro es la red a la que está conectado el sistema anfitrión. 


VBoxManage modifyvm "Nombre Máquina Virtual" --nic1 bridged --bridgeadapter1 <Adaptador de red adaptador>

Utilizamos la máquina virtual ArchLinux para que se conecte a una red puente.

VBoxManage modifyvm "ArchLinux" --nic1 bridged --bridgeadapter1 eth0

Red interna:

La red interna es similar a la puente en que la máquina virtual se puede comunicar directamente con “el mundo exterior”. Sin embargo, el “el mundo exterior” está limitado a las otras máquinas virtuales en el mismo anfitrión que estén conectadas a la misma red interna. 

Para utilizar este tipo de conexión debemos tener un servidor DHCP primero, para ello ejecutamos la siguiente orden:

VBoxManage dhcpserver add --netname intnet --ip 192.168.2.100 --netmask 255.255.255.0 --lowerip 192.168.2.101 --upperip 192.168.2.254 --enable

Ahora debemos decirle a la máquina virtual que utilize la red que acabamos de crear. Para ello empleamos esta orden:

VBoxManage modifyvm "ArchLinux" --nic1 intnet

Red sólo-afitrión:

La red sóloanfitrión es un híbrido entre la red puente y la res interna. Las máquinas virtuales puede
comunicarse entre si y además con el sistema anfitrión. 

Primero debemos activar un servidor DHCP, como en el caso anterior, y después cambiar el tipo de red en la máquina virtual como en la siguiente orden:

VBoxManage modifyvm "ArchLinux" --nic1 hostonly

Como siempre si alguien tiene alguna duda o quiere preguntar algo, que lo escriba en los comentarios y lo intentaré responder ;)

Tuesday 19 March 2013

Kali Linux con Mate

Supongo que todos sabéis ya lo que es Kali Linux, o como lo llaman algunos BackTrack 6. Prefiero llamarla Kali Linux, ya que si los creadores han decidido cambiarle el nombre por algo será.

El objetivo de este post es instalar y hacer funcionar el escritorio Mate en Kali Linux. Personalmente no me gusta el gnome3 y prefiero instalar Mate. Para ello vamos a seguir unos sencillos pasos.

El primero es añadir a los orígenes del software el repositorios de mate para Debian. Para ello editamos el fichero /etc/apt/sources.list como en la figura siguiente.

Fichero /etc/apt/sources.list con el repositorios de Mate para Debian
Ahora debemos hacer un apt-get update, pero nos dará un error. Eso es normal tranquilos, debemos instalar el paquete mate-archive-keyring como se puede ver en la figura siguiente.
Instalando el paquete mate-archive-keyring
Ahora ya podemos realizar el apt-get update e instalar los paquetes: alsa-utils, gamin, mate-core, mate-desktop-environment y synaptic. Para ello podemos realizar los mismo que se puede ver en la siguiente figura.
Instalando paquetes necesarios para Mate
Una vez hecho ésto podemos salir de la sesión y acceder pero cambiando el tipo de escritorio como en la siguiente figura.
Login en el sistema con la opción de Mate
Si hemos seleccionado MATE como escritorio ahora podemos ver que tenemos las herramientas de Kali Linux en el menú, pero no de forma ordenada y bonita como en el gnome. Para ello debemos ir a la carpeta /etc/xdg/menus como en la figura siguiente.
Cambiando de carpeta para ir a los menús
Ahora debemos editar el fichero mate-applications.menu y añadir el apartado Kali Linux que podemos ver en la siguiente figura. Yo lo he añadido entre los apartados Internet y Multimedia como en la versión de gnome.
Edición del manú de Mate
Ahora debemos salir de la sesión y autenticarnos de nuevo para acceder al escritorio Mate como hemos hecho anteriormente y ya tendremos el menú de Kali Linux en Mate. Lo podemos ver en la siguiente figura.
Mate con menú Kali Linux
Si también queremos el fondo de escritorio que trae Kali Linux por defecto podemos pulsar el botón derecho en el escritorio y elegimos "cambiar fondo de escritorio". A continuación pulsamos añadir y buscamos en la carpeta /usr/share/wallpapers/kali/contents/images/ ahí encontraremos diferentes versiones del fondo de escritorio.
Buscando la imagen de fondo de escritorio por defecto en Kali Linux
Elegimos la más adecuada a nuestra resolución y ya tendremos un Kali Linux totalmente funcional con Mate.
Kali Linux con Mate

Thursday 24 January 2013

Gráficas en Python

Otra entrada sobre Python, ésta vez sobre como hacer gráficas muy chulas y de forma sencilla.

Necesitamos tres paquetes para poder hacer las figuras con los ejemplos que voy a describir. Como siempre los pasos a seguir son en Arch Linux aunque deben ser fáciles de reproducir en otros sistemas operativos.



[maitesin@Malesero ~]$ yaourt -S python2-numpy python2-matplotlib
[sudo] password for maitesin:
resolviendo dependencias...
verificando conflictos...

Objetivos (9): python2-dateutil-2.1-6  python2-dbus-1.1.1-2  python2-pyparsing-1.5.7-1  python2-pyqt-4.9.6-1  python2-pytz-2012j-1
               python2-sip-4.14.2-1  python2-six-1.2.0-2  python2-matplotlib-1.2.0-8  python2-numpy-1.7.0-1

Tamaño de descarga:     30,17 MiB
Tamaño instalado:       95,95 MiB

¿Continuar con la instalación? [S/n]



En mi caso yo uso Python 2 si queréis utilizar éstos módulos en Python 3 sólo tenéis que eliminar el 2 del nombre del paquete. Una vez instalado se usa como el en siguiente ejemplo:


#!/usr/bin/env python
#Graficas para los grafos con ciclos

from numpy import *
from pylab import *
from matplotlib import rc, rcParams

#rc('text',usetex=True) #Para habilitar la escritura en Latex en los textos
rc('font',**{'family':'serif','serif':['Computer Modern']})

# Read in data from an ASCII data table
binomial = genfromtxt('../prim/ciclos/final_binomial.txt')
lazy = genfromtxt('../prim/ciclos/final_lazy.txt')
fibonacci = genfromtxt('../prim/ciclos/final_fibonacci.txt')

#Plot results
plot(binomial[:,0], binomial[:,1], 'o-', label='Binomial')
hold(True)
plot(lazy[:,0], lazy[:,1], 'o-', label='Lazy')
plot(fibonacci[:,0], fibonacci[:,1], 'o-', label='Fibonacci')

# Options
xlabel(r'Tamaño grafo')
ylabel(r'Tiempo(ms)')
title(r'Grafos Ciclos')
legend(loc='best')

# Turn on a grid
grid(True)

# Save the figure in a separate file
savefig('ciclos.eps') # soporta diferentes formatos jpg, png, eps...

# Draw the plot to the screen
show()



Creo que no hace falta describir que es cada parte del o como funciona el código. El resultado de la ejecución la podemos ver en la siguiente imagen.

Ya me contáis como os ha ido ;)

Wednesday 23 January 2013

Parsear opciones en Python

A pesar de que después los amigos me pincharán voy a escribir algunas cosillas que he aprendido ha hacer con python :)

Nunca ha sido demasiado de mi agrado, más que nada porque estoy acostumbrado a realizar las cosas como en C/C++ y claro la deformación profesional...

Bueno a lo que íbamos, por un trabajo que he tenido que utilizar python y quería poder dar diferentes opciones al programa. Entonces encontré el siguiente módulo: optparse

Funciona como en el siguiente ejemplo:


#!/usr/bin/python
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-s", "--start", dest="start", help="Ejemplo de opcion", metavar="Start")
parser.add_option("-f", "--finish", dest="finish", help="Otro ejemplo de opcion", metavar="Finish")
(options, args) = parser.parse_args()

if __name__ == "__main__":
    if options.start != None:
        print "Tenemos opcion en Start", options.start
    else:
        print "No hay opcion en Start"
    if options.finish != None:
        print "Tenemos opcion en Finish", options.finish
    else:
        print "No hay opcion en Finish"
    print "En argumentos tenemos", args



Podemos ver en el ejemplo que los parámetros necesarios para añadir una nueva opción son las siguientes:

add_option(opción_corta, opción_larga, atributo_destino, mensaje_de_ayuda, metavar_usado_en_la_ayuda)


Un par de ejecuciones del ejemplo son las siguientes:


[maitesin@Malesero ~]$ ./ejemplo.py -s 12 -f Hola Adios
Tenemos opcion en Start 12
Tenemos opcion en Finish Hola
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py -s 12 Adios
Tenemos opcion en Start 12
No hay opcion en Finish
En argumentos tenemos ['Adios']
[maitesin@Malesero ~]$ ./ejemplo.py
No hay opcion en Start
No hay opcion en Finish
En argumentos tenemos []
[maitesin@Malesero ~]$ ./ejemplo.py --help

Usage: ejemplo.py [options]

Options:
  -h, --help            show this help message and exit
  -s Start, --start=Start
                        Ejemplo de opcion
  -f Finish, --finish=Finish
                        Otro ejemplo de opcion




Espero que os sirva ésto tanto como a mi.

Latex cambiar cuadro por tabla

Me he propuesto escribir más en el blog, así que si no es algo muy especial las entradas serán más seguidas pero con menos contenido.

Ahora pasamos ya al lío. Me he encontrado con que en Latex cuando creamos una tabla nos dice de nombre Cuadro X, en vez de Tabla X.

La solución que he encontrado es editar el fichero de configuración del idioma español en Latex, no os asustéis que es fácil.

Editamos el fichero: /usr/share/texmf-dist/tex/generic/babel/spanish.ldf (en Arch Linux) y en la línea 127 encontramos lo siguiente:

\def\es@tablename{Ccuadro}


Simplemente lo cambiamos por:


\def\es@tablename{Ttabla}


Una vez hecho esto ya os pondrá las tablas como Tabla y no como Cuadro.

Como siempre, cualquier duda a los comentarios ;)