lunes, 5 de septiembre de 2011

Se acerca el equipo de 25 US$

Buenas!

Durante los últimos dos años he estado bastante interesado en seguir los acontecimientos relacionados con ARM. Hace aproximadamente dos años parecía que en cualquier momento iban a comenzar a aparecer netbooks basados en esta arquitectura. Dado que esta arquitectura es utilizada en equipos móviles, hay dos ventajas que saltan a la vista:
- Bajo consumo energético
- Bajo precio
Éstas, a su vez, comparadas con x86.

Durante estos dos años muy poco ha sucedido con respecto a hacer equipos accesibles basados en ARM, aunque con ciertas notables excepciones (XO2 le suena a alguien? Ya está disponible?) . Aunque efectivamente no han aparecidos netbooks basados en ARM (que cumplan por lo menos con la ventaja del bajo precio), se han popularizado (relativamente) conceptos como el Plug Server. Equipos que aunque no son portátiles y tampoco se pueden utilizar como escritorio (se podría, aunque la experiencia no sea la más grata), se pueden utlilizar con facilidad para ciertas tareas dedicadas. Yo personalmente tuve una experiencia con unos DreamPlugs recientemente controlando unas impreroras Samsung baratísimas (pueden ver información al respecto aquí).


Desde hace unos meses hay bastante ruido con respecto a Raspberry Pi, unos equipos basados en ARM que se están terminando de desarrollar en este momento (con expectativas de comenzar a venderlos a finales de año o principios de 2012) a un precio que creo que estoy seguro de que va a lograr captar la atención de mucha gente: aproximadamente 25 US$.



Esperemos que todo le vaya muy bien al proyecto y que no se trate al final de nada más que aire caliente.

viernes, 26 de agosto de 2011

Ventas de servidores GNU/Linux explotan en el Q2 2011

Hola!

Según números publicados por IDC, las ventas de servidores GNU/Linux explotaron en el Q2 de 2011 con un incremento del 47.5% en ingresos creen comparación con el mismo cuarto del año pasado para llegar a un total de 2.7 miles de millones de US$ y tomando un 20.5% de los ingresos totales. Los servidores Windows en comparación incrementaron un 12.4% en comparación con el cuarto del año pasado para llegar a 5.9 miles de millones de US$ y tomando un 45.5% de los ingresos totales. Estos números a su vez en un cuarto bastante saludable en términos generales para todos los segmentos de servidores.

Al sacar la calculadora veremos que hubo un incremento neto de aprox. 870 millones de dólares por parte de los servidores GNU/Linux y de unos 650 millones por parte de los servidores Windows.

Si desea ver el reporte completo, mire aquí.

jueves, 26 de mayo de 2011

Como cambiar un texto en muchos archivos

Hola!

Mientras más trabajo con GNU/Linux (y la consola) más me impresiona su poder y flexibilidad al mismo tiempo que se mantiene la elegancia.

Una necesidad que se presenta con cierta recurrencia es la de cambiar un texto que aparece en muchos archivos por otro texto. Decidí crear un script para las personas que tengan la misma necesidad y que no lo tengan que hacer desde 0.

El script es así:

#!/bin/bash

# copyright 2011 Edmundo Carmona
# Released under the terms of Affero GPLv3

REPLACED="$1"
REPLACEMENT="$2"
FILTER="$3"
TEMP_FILE="$4"

echo Will replace "$REPLACED" with "$REPLACEMENT" on files named "$FILTER" \
    using "$TEMP_FILE" as the temporary file

find ./ -iname "$FILTER" -exec grep -Hi "$REPLACED" {} ';' | sed 's/:.*//' \
    | uniq | while read filename; do
    echo replacing on $filename
    sed "s/$REPLACED/$REPLACEMENT/g" < "$filename" > "$TEMP_FILE"
    mv "$TEMP_FILE" "$filename"
done


La forma de llamarlo es la siguiente:
- 1er parámetro: Texto que va a ser reemplazado.
- 2do parámetro: Texto que va a entrar a reemplazar.
- 3er parámetro: Filtro de archivos a buscar. Por favor, encerrarlo en comillas simples o dobles, de lo contrario bash lo va a reemplazar.
- 4to parámetro: Archivo temporal a utilizar. La sustitución se hace utilizando un archivo temporal intermedio que al final desaparece.

Por ejemplo, para reemplazar el texto Linux por GNU-Linux en los archivos .txt y utilizando el archivo temp.txt como el temporal, la llamada se haría de esta forma:

./text_change Linux "GNU-Linux" '*.txt' temp.txt

Nota: Tener cuidado de no utilizar caracteres especiales para reemplazar porque esto va a ser hecho utilizando sed. Caracteres como \ deben ser especificados con sumo cuidado. Adicionalmente, como pueden ver en el script, la búsqueda de los archivos involucrados se hace con find así que la búsqueda va a ser recursiva pasando por los subdirectorios del directorio actual.

Ventas de servidores GNU/Linux alcanzan US$ 2 mil millones

Buenos días

Por informaciones de IDC se sabe que las ventas de servidores aumentaron un saludable 12.1% en el Q1 de 2011 comparado con el mismo periodo del año pasado. Todos los segmentos de ventas de servidores crecieron. HP se llevó la palma con 31.5% de las ventas con IBM siguiéndoles de cerca con 29.2%.

Si bien un crecimiento del 12.1% es bueno, la ventas de servidores GNU/Linux crecieron aún más con un incremento de 16.9% y alcanzando US$ 2 mil millones para colocarse con un 16.8% de las ventas totales de los servidores. Este es el 6to cuarto consecutivo de crecimiento para el sistema opertativo libre que se sigue posicionando muy bien en los centros de datos del mundo entero.

Con información de serverwatch.

miércoles, 25 de mayo de 2011

Módulo que permite conectar Asterisk con Skype llega a su fin

Luego de decir que no había que tener absolutamente ningún recelo luego de su adquisición de Skype por parte de Microsoft tenemos que Microsoft le notificó a Digium (entidad que subvenciona el desarrollo de Asterisk) que no va a renovar el contrato que permitía que se vendiera/activara el módulo por el cual los usuarios de Asterisk se podían conectar a Skype.

Si quiere ver el anuncio, mire aquí.Simon Phipps tiene unos buenos comentarios al respecto aquí.

martes, 24 de mayo de 2011

Llega Linux 2.8!

Luego de seguir en la línea 2.6 de Linux por unos 8 años, en los cuales se han introducido muchos cambios radicales en el kernel sin necesidad de romper la arquitectura del mismo, Linus Torvalds piensa que podría estar llegando el momento de crear el kernel 2.8.

Eso significa que ahora va a haber una reingeniería del kernel que va a tomar años sin estabilizarse? No, en lo absoluto. Linus piensa que la numeración del 2.6 ya está muy alta (luego de haber lanzado 2.6.39) y quzás llame al nuevo release del kernel 2.8.0 así que espero que la noticia, si se da, no los vaya a tomar por sorpresa.

Para leer el correo completo mire aquí.

Hasta luego!

domingo, 22 de mayo de 2011

Como ejecutar acciones automáticamente luego de establecer una conexión con wvdial/ppp

Buenos días.

Estoy utilizando Kubuntu Natty y estoy bastante satisfecho con la distro aunque tengo un par de bugs que me fastidian con relativa frecuencia.

Uno de ellos es que cuando conecto mi modem GSM a internet, squid3 no logra salir a través de esta nueva conexión (no se por qué). La forma de resolverlo es bastante sencilla. Solo hay que reiniciar el servicio de squid y con eso ya puedo navegar normalmente (tengo las aplicaciones configuradas para utilizar squid).

Pero eso implica que cada vez que se establece la conexión (yo lo hago ejecutando wvdial normalmente) tengo que esperar a que se establezca la conexión para luego ejecutar el comando para reiniciar el proceso de squid. Decidí resolver esta situación y no es complicado.

pppd (en ubuntu... supongo que en debian también.. no podría garantizar en otras distros) ofrece un directorio donde se pueden colocar scripts que serán ejecutados cuando se establezca una conexión o cuando se caiga. En este caso como es una acción que se hace al establecer la conexión, creé un script en el directorio /etc/ppp/ip-up.d:

$ cat /etc/ppp/ip-up.d/9999squid #!/bin/bash

/etc/init.d/squid3 restart

Muy directo. Aseguúrese de tener la bandera de ejecutable del script habilitada y con eso está resuelto.

Adicionalmente, al ejecutar el script se reciben los siguientes parámetros (en el orden en el que se van recibiendo):
Interfaz
TTY
Velocidad
Dirección IP Local
Dirección IP del par
Un parámetro adicional opcional (recibido en la ejecución de pppd)

Supondría que también estarían disponibles las variables de entorno PPP_IFACE, PPP_TTY, PPP_SPEED, PPP_LOCAL, PPP_REMOTE, PPP_IPPARAM pero no he hecho la prueba.

Nota: Dado que el hack está emplementado en pppd, también debería funcionar con conexiones configuradas en NetworkManager que utilicen ppp (como las que son de banda ancha telefónica).

miércoles, 18 de mayo de 2011

Emulador de un PC basado en Javascript permite ejecutar linux en un browser

Hola!

De la mano de Fabrice Bellard nos llega el desarrollo de un emulador basado en Javascript que puede ejecutar linux.


Qué tal? Para entrar al emulador, hacer click aquí.

martes, 10 de mayo de 2011

Como instalar/utilizar django sin privilegios de administrador

Hola!

Estoy tumbando mis primeros pinitos con Django y con solo bajarlo me consigo con el problema de que hay que tener privilegios de administrador para poder hacer la instalación del mismo. La verdad, este tipo de cosas no me gusta hacerlas así que me senté un rato a ver si podía lograr utilizar Django sin necesidad de pasar por un administrador.

Cuando se extrae el contenido del tarball de django, tenemos algo como esto:
$ ls -l /home/antoranz/Downloads/Django/Django-1.3
total 72
-rw-r--r--  1 antoranz antoranz 19166 2011-03-21 20:38 AUTHORS
drwxr-xr-x 17 antoranz antoranz  4096 2011-05-09 09:16 django
drwxr-xr-x 14 antoranz antoranz  4096 2011-03-23 00:08 docs
drwxr-xr-x  2 antoranz antoranz  4096 2011-03-23 00:08 extras
-rw-r--r--  1 antoranz antoranz   592 2009-10-30 03:24 INSTALL
-rw-r--r--  1 antoranz antoranz  1558 2008-08-09 09:40 LICENSE
-rw-r--r--  1 antoranz antoranz  1494 2011-03-16 14:02 MANIFEST.in
-rw-r--r--  1 antoranz antoranz  1228 2011-03-23 00:08 PKG-INFO
-rw-r--r--  1 antoranz antoranz  1786 2011-01-28 17:07 README
drwxr-xr-x  2 antoranz antoranz  4096 2011-03-23 00:08 scripts
-rw-r--r--  1 antoranz antoranz   108 2010-08-05 08:00 setup.cfg
-rw-r--r--  1 antoranz antoranz  4325 2011-03-23 00:06 setup.py
drwxr-xr-x  5 antoranz antoranz  4096 2011-03-23 00:08 tests

Desde este directorio el administrador debe ejecutar el setup.py para hacer la instalación, pero evitemos hacer este paso.

Si tratamos de utilizar django en este punto con una aplicación ya comenzada:


$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 2, in
    from django.core.management import execute_manager
ImportError: No module named django.core.management
Qué tendremos que hacer  entonces para lograr que django sea "visible" para python? Debemos exportar la ruta del directorio incluido en el tarball dentro de la variable PYTHONPATH:

$ export PYTHONPATH=/home/antoranz/Downloads/Django/Django-1.3/
$ python manage.py runserver

Validating models...

0 errors found
Django version 1.3, using settings 'django1.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
De esa forma no se necesita la asistencia de un administrador para poder utilizar django.

PS Si se necesita ejecutar algunos de los otros scripts de administración de python (django-admin.py por ejemplo), incluir el directorio donde están estos scripts en el PATH y con eso queda resuelto.

jueves, 14 de abril de 2011

Como conectarse con un modem USB (GSM) con wvdial

Qué tal!

Hoy estoy teniendo problemas oara conectarme a internet con mi modem USB (GSM) a través del NetworkManager.

Yo había tenido la previsión de instalar wvdial en mi equipo por si algún día tenía problemas establecindo la conexión con el NetworkManager.... parece que llegó ese día. El detalle es que las aplicaciones de consola tienden a dar mucha más información acerca de lo que les está pasando que las aplicaciones visuales.

El primer paso es preparar un archivo de texto con la configuración que nos atañe. Como estoy utilizando COMCEL en Colombia, el archivo tiene esto:

[Dialer Defaults]
        Modem = /dev/ttyUSB0
        Phone = *99#
        Username = COMCELWEB
        Password = COMCELWEB

Según su proveedor y país, la configuración variará en lo respectivo al teléfono, usuario y contraseña.

Digamos que el archivo se llama comcel.txt

A continuación llamamos wvdial:

sudo wvdial -C comcel.txt

Y a continuación habrá información indicando la razón del problema o si nos conectamos... en mi caso, me pude conectar, así que esta fue la salida:

--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected.  Waiting for prompt.
--> Don't know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Thu Apr 14 21:46:29 2011
--> Pid of pppd: 2594
--> Using interface ppp0
--> local  IP address x.x.x.x
--> remote IP address y.y.y.y
--> primary   DNS address z.z.z.z
--> secondary DNS address w.w.w.w

Y de esta forma estoy escribiendo este artículo. Espero les sea de ayuda. También utiliza wvdial para conectarse por un modem usb (GSM)? Quiere compartir su archivo de configuración? Podría actualizar el post con la información que utiliza.

miércoles, 23 de marzo de 2011

Túneles con SSH

Qué tal?

Quiero comentar sobre una de las herramientas más poderosas que me he encontrado en mis años de administración de sistemas GNU/Linux. Los túneles SSH.

SSH por sí misma es una excelente herramienta (seguridad, ligereza) para poder administrar equipos de forma remota. Virtualmente no hay equipo *NIX que no tenga un servicio de SSH instalado para administrarlo. Pero adicionalmente SSH tiene una serie de facilidades que le dan una flexibilidad tremenda para resolver otros tipos de problemas no necesariamente relativos a administración de equipos per se. Una de esas facilidades son los túneles.

Imaginemos la situación en la cual tenemos que acceder a un puerto de un equipo, para los efectos de un ejemplo digamos que es VNC, que está en una red remota y no hay acceso directo hacia el puerto porque hay un firewall que está filtrando el acceso. Sin embargo tenemos acceso (en la misma red del equipo objetivo de nuestro experimento) a un servidor con un servicio de SSH que si tiene acceso a dicho puerto del equipo que nos quita el sueño. En ese caso, el problema está resuelto. Primero explicaré lo que haremos para luego explicar la lógica de la solución.

Creamos la sesión de ssh agregando un túnel local (hay 3 tipos de túneles SSH, básicamente) que abra un puerto en nuestro equipo indicándole al servidor SSH intermedio que conecte con el servidor destino al puerto de VNC:

ssh -nNT -L 5900:servidorvnc:5900 usuario@servidorssh

Ahora vienen las explicaciones:

-nNT
lo utilizo para no crear una sesión de terminal sino solamente el tunel que necesito.

-L 5900:servidorvnc:5900 indica que es un túnel local (es decir, abre el puerto donde se van a esperar conexiones en el equipo local). La especificación del túnel tiene 2 partes, la primera (5900) es el puerto donde se van a esperar las conexiones en el lado que escucha (como es un túnel local, eso implica en nuestro equipo). La siguiente parte (servidorvpn:5900) indica hacia donde se van a pasar las conexiones del lado del servidor ssh (en este caso que es un túnel local) cuando un cliente se conecte en nuestro puerto 5900. Es importante hacer notar que la resolución del nombre/ip se dará del lado del servidor ssh por ser éste un túnel local.

A continuación la información para autenticar contra el servidor ssh.

Ahora cómo nos conectamos al servicio de VNC del equipo remoto que nos interesa? Utilizamos un cliente VNC para conectarnos a localhost. Nuestro cliente ssh es el encargado de abrir el puerto 5900 en el equipo local. Cuando un cliente se conecte a dicho puerto, el tráfico será enviado por el túnel SSH (lo cual implica que va encriptado) y será enviado a su vez desde el servidor SSH hacia el equipo servidorvnc y hacia su puerto 5900. Y con eso habremos logrado conectarnos con el equipo que nos interesa.

Importante: Los números de los puertos indicados en el túnel no necesariamente tienen que ser iguales. Solo recuerden que un puerto se abre bien en el cliente (si es local) o en el servidor SSH (remoto) y que en el otro lado de la conexión SSH se hará la resolución de nombre/ip.

Como dije en un principio, hay 3 tipos de túneles:
- Locales (como el que acabamos de ver en nuestro ejemplo)
- Remotos (puerto que se abre para escuchar conexiones en el servidor SSH y conexión que se establece a un equipo desde nuestro equipo por el cliente SSH)
- Dinámicos Este tipo de túnel abre un puerto en nuestro equipo que funciona como un proxy socks. Este tipo de proxies puede ser utilizado, entre otras, para poder navegar con un browser evitando filtrados de un firewall. El tráfico estaría saliendo desde el servidor SSH al que nos conectamos.

Para mayor información, mirar el man page de ssh.

Espero que haya sido instructiva la explicación y que disfruten haciendo túneles a medida de sus necesidades.