Archivo

Archivo para la categoría ‘linux’

Mañana es Sun CommunityOne East

Martes, 17 de marzo de 2009

Bueno, ya quedan sólo horas para el Sun CommunityOne East. Yo ando imprimiendo mis entradas, preparando mi camara y sobre todo abriendo el cerebro para todo lo que voy a aprender el día de mañana.

Ya les contaré como me fué, esten pendientes por este espacio. También puede seguir el progreso del evento en Twitter y Facebook.

Blogalaxia: , , , ,

To2blogs: , , , ,

Technorati: , , , ,

Del.icio.us: , , , ,

java, linux, opensource, programación, ruby , , ,

Construyendo un servidor de logs usando Netcat, tail y Bash

Sábado, 14 de marzo de 2009

Me toco entre estos días escribir un hack (no por lo malo sino por lo rápido que tenia que hacerlo) un servidor que debía proporcional el contenido de una bitacora la cual crece de manera continua durante el día. El grupo que nos pidio esto es de auditoria, lo cual implica que no debe perderse información.

Primero les muestro el código del programa y explico como funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# author: josevnz@kodegeek.com
#
set -o monitor
declare -a pids
declare -r SCRIPT=${0##*/}
declare -r FIFO="/tmp/$SCRIPT-$$.fifo"
 
if [ -z "$1" ]; then
        echo "Please provide the file to tail and try again"
        exit 192
fi
 
if [ -z "$2" ]; then
        echo "Please provide port and try again"
        exit 192
fi
 
trap cleanup exit INT TERM
 
if [ ! -e "$FIFO" ]; then
        mkfifo "$FIFO"
        if [ $? != 0 ]; then
                exit $?
        fi
fi
 
tail -F "$1" > "$FIFO" &
trap "test -e $FIFO && rm -f $FIFO" exit INT TERM
while true; do
        test -e "$FIFO" && netcat -v -v -v -l -p $2 < "$FIFO"
done
trap "kill -9 $! $$" exit INT TERM

La idea es revisar los contenidos del archivo usando ‘tail -F’. La opción ‘-F’ le dice a tail que reintente si tiene problemas eyendo el archivo; De allí redirigimos los contenidos a una cola (FIFO, first in first out) en Unix la cual garantiza que aunque el servidor TCP muera los datos estaran allí listos para ser enviados al cliente. Dejamos a tail corriendo en segundo plano…

El siguiente paso es arrancar nuestro servidor TCP. Netcat recibe los contenidos de la cola que creamos en el paso anterior. Fijense como lo encerramos en un ciclo infinito ya que si el cliente se muere (o desconecta por otra razón) Netcat cerrará la conexión.

Finalmente le decimos al script que mate todos los procesos hijos o el mismo programa si decidimos matar al servidor o nos matan el proceso.

Bueno, aqui les muestro como correr el servidor:

auyan:~ josevnz$ ./nettail fakelog.log 9000
Listening on any address 9000 (cslistener)
Connection from 127.0.0.1:50754
Total received bytes: 0
Total sent bytes: 432
Listening on any address 9000 (cslistener)
Connection from 127.0.0.1:50819

Y un ejemplo de como conectarse:

auyan:~ josevnz$ nc -v -v -v localhost 9000
nc: connect to localhost port 9000 (tcp) failed: Connection refused
Connection to localhost 9000 port [tcp/cslistener] succeeded!
This is a kodegeek test: Sat Mar 14 00:02:15 EDT 2009
This is a kodegeek test: Sat Mar 14 00:02:45 EDT 2009
This is a kodegeek test: Sat Mar 14 00:03:15 EDT 2009
This is a kodegeek test: Sat Mar 14 00:03:45 EDT 2009
This is a kodegeek test: Sat Mar 14 00:04:15 EDT 2009
This is a kodegeek test: Sat Mar 14 00:04:45 EDT 2009
This is a kodegeek test: Sat Mar 14 00:05:15 EDT 2009
This is a kodegeek test: Sat Mar 14 00:05:45 EDT 2009
This is a kodegeek test: Sat Mar 14 00:06:15 EDT 2009

Espero les guste esta solución de 5 minutos :)

Veneblogs: , , , ,

Blogalaxia: , , , ,

To2blogs: , , , ,

Technorati: , , , ,

Del.icio.us: , , , ,

java, linux, opensource, ruby, venezuela

Vamonos al CommunityOne East

Miércoles, 25 de febrero de 2009

Este año se celebra en New York City por primera vez el CommunityOne East, patrocinado por Sun Microsystems. En este evento se van a tratar diversos tópicos sobre tecnología OpenSource como Java, Ruby Rails y MySQL.

Yo ya me inscribí para el 18 y el 19 de Marzo, si alguno de ustedes piensa ir al evento gratis del 18 y quiere ganarse una franela avisenme para darles el código de inscripción para que participen.

Nos vemos allí.

Nota: No creo que vaya al JavaOne del 2009 año. Los temas se parecen mucho a los del año pasado, voy a esperar a que haya más variedad.
Veneblogs: , , , ,

Blogalaxia: , , , ,

To2blogs: , , , ,

Technorati: , , , ,

Del.icio.us: , , , ,

java, linux, opensource, programación, ruby , , , , ,

Optimizando la copia de archivos con scp (II)

Sábado, 21 de febrero de 2009

En la entrega anterior les mostraba como acelerar la copia de archivos grandes cambiando el algoritmo de cifrado y la compresión en scp; Estos resultados se pueden mejorar un poco más utilizando un algoritmo de compresión mejor que Gzip.

En este caso utilizamos LZMA, con una implementación específica, LZMA Utils.

¿Que tan buena es la compresión por omisión (nivel 7)?

auyan:Downloads josevnz$ time tar -cf – SentillaWork-1.1.1.tar |/usr/local/bin/lzma -c | ssh 10.0.1.198 -c arcfour “cd /Users/josevnz/Downloads && /usr/local/bin/lzma -dc|tar -xvf -”
./._SentillaWork-1.1.1.tar
SentillaWork-1.1.1.tar

real    9m16.777s
user    9m15.030s
sys    0m3.709s

Que porquería. No es mejor que Gzip. ¿Pero si utilizamos la compresión rápida, los cuales sólo afectan la velocidad de compresión más no descompresión (nivel 1)?

auyan:Downloads josevnz$ time tar -cf – SentillaWork-1.1.1.tar |/usr/local/bin/lzma -1 -c | ssh 10.0.1.198 -c arcfour “cd /Users/josevnz/Downloads && /usr/local/bin/lzma -dc|tar -xvf -”
./._SentillaWork-1.1.1.tar
SentillaWork-1.1.1.tar

real    4m36.603s
user    1m54.419s
sys    0m3.300s

¡Apenas 30 segundos mejor que Gzip utilizando la compresión por omisión (7) !. Me pico la curiosidad y decidí utilizar de nuevo a gzip pero con nivel de compresión mínima:

auyan:Downloads josevnz$ time tar -cf – SentillaWork-1.1.1.tar |gzip -1 -c | ssh 10.0.1.198 -c arcfour “cd /Users/josevnz/Downloads && gzip -dc|tar -xvf -”
./._SentillaWork-1.1.1.tar
SentillaWork-1.1.1.tar

real    4m21.237s
user    0m15.113s
sys    0m3.679s

Bueno, que sorpresa. Resulta que el venerable Gzip aún le da palo a LZMA :)

Ya les había comentado que estoy jugando con varias herramientas, para quedarme con una de ellas. Les recomiendo que se lean este tutorial del departamento de energía de los Estados Unidos sobre herramientas y mejor utilización del ancho de banda.

Algo que se me olvidaba comentar, en este ejemplo utilize un sólo archivo y tar, lo cual no tiene mucho sentido, sin embargo Tar es mucho más eficiente cuando enviamos varios archivos grandes a la vez.
Veneblogs: , , , , , ,

Blogalaxia: , , , , , ,

To2blogs: , , , , , ,

Technorati: , , , , , ,

Del.icio.us: , , , , , ,

linux, opensource

¿Como encontrar el último día hábil del mes en Java?

Lunes, 26 de enero de 2009

Quizas a usted alguna vez le toco programar como encontrar el último día hábil del mes. La definición:

Es el último día del mes, que no cae un fin de semana y que no es un día feriado.

Para trabajar este ejemplo utilizaremos fechas de los Estados Unidos, mercado de finanzas. En el caso de los días feriados, vamos a utilizar el calendario de OCC (Options Clearing Corporation). Dependiendo del área y país en donde usted trabaje el calendario de las fechas será distinto (por ejemplo Estados Unidos y Venezuela).

La solución en Java es sencilla, usando la clase Calendar. Después de jugar un poco al final terminé escribiendo esta clase que muestra el último día hábil del mes y le dice a usted si la fecha entrada por el teclado es un día hábil o no:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.kodegeek.blog.finance;
 
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.Set;
import java.util.logging.Logger;
 
/**
 * Helper date methods tailored for the financial industry.
 * License: LGPL
 * BLOG: http://kodegeek.com
 * @author josevnz@kodegeek.com
 *
 */
public final class DateHelper {
 
	private final static ResourceBundle BUNDLE;
	private final static Logger log;
	private static final Set holidays;
 
	static {
 
		BUNDLE = ResourceBundle.getBundle(DateHelper.class.getName());
 
		log = Logger.getLogger(DateHelper.class.getName());
 
		// Populate the holidays set
		holidays = new HashSet();
		for (String dateStr: BUNDLE.getString("com.kodegeek.blog.finance.DateHelper.holidays").split(";\\s*", -1)) {
			try {
				holidays.add(DateFormat.getDateInstance(DateFormat.DEFAULT).parse(dateStr));
			} catch (ParseException e) {
				log.warning(String.format(BUNDLE.getString("com.kodegeek.blog.finance.DateHelper.error.badDate"), dateStr));
				continue;
			}
		}
 
	}
 
	/**
	 * Default constructor
	 */
	private DateHelper() {
		// Only static methods go on this class
	}
 
	/**
	 * Check if a given date is the last business day of the month
	 * @param aDate The date to test
	 * @return True if is the last day of the month, false otherwise
	 */
	public final static boolean isLastBusinessDayOfMonth(final Date aDate) {
		boolean isLastBusinessDay = false;
 
		// Can do a comparison?
		if (aDate == null) {
			return isLastBusinessDay;
		}
 
		Calendar calendar = Calendar.getInstance();
 
		// Current date on a weekend
		calendar.setTime(aDate);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		int month = calendar.get(Calendar.MONTH);
		int year =  calendar.get(Calendar.YEAR);
 
		int lastbusinessDayOfMonth = getLastBusinessDayOfMonth(month, year);
		if (lastbusinessDayOfMonth == day) {
			isLastBusinessDay = true;
		}
 
		return isLastBusinessDay;
	}
 
	/**
	 * Get the last business day of the month for a given month / year combination
	 * @param month The month
	 * @param year The year
	 * @return The last business day
	 */
	public static int getLastBusinessDayOfMonth(final int month, final int year) {
		int day = -1;
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.MONTH, month);
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
 
		// Keep looking backwards until the day is not a weekend or a holiday
		while(true) {
			if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
				calendar.add(Calendar.DAY_OF_MONTH, -1);
				continue;
			} else if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
				calendar.add(Calendar.DAY_OF_MONTH, -2);
				continue;
			} else if (holidays.contains(calendar.getTime())) {
				calendar.add(Calendar.DAY_OF_MONTH, -1);
				continue;
			}
			break;
		} // End while
		day = calendar.get(Calendar.DAY_OF_MONTH);
		return day;
	}
 
	/**
	 * Unit test, load today date and check if is a end of the month
	 * @param args The date to test from the command line
	 * @throws Exception If the date is invalid for the given local
	 */
	public static void main(String [] args) throws Exception {
		Scanner scan = new Scanner(System.in);
		do {
			String currDateStr = null;
			SimpleDateFormat format = new SimpleDateFormat("yy-M-d");
			try {
				System.out.println("Please enter a date to check (YYYY-MM-DD, Ctrl-C to exit):");
				currDateStr = scan.nextLine();
				Date date = format.parse(currDateStr);
 
				if (date != null) {
					Calendar calendar = Calendar.getInstance();
					calendar.setTime(date);
					int month = calendar.get(Calendar.MONTH);
					int year =  calendar.get(Calendar.YEAR);
					System.out.println(String.format("Last business day of the month: %d", getLastBusinessDayOfMonth(month, year)));
					System.out.println(String.format("%s %s", currDateStr,isLastBusinessDayOfMonth(date) == true? "Is the last business day": "Is not the last business day"));
				}
			} catch (ParseException pExp) {
				System.err.println(String.format("Ignoring bad date: '%s'", currDateStr));
			}
		} while (true);
	}
 
}

El resource bundle lo único que contiene son los días feriados:

1
2
3
# Bank holidays per OCC calendar 2009 - http://www.optionsclearing.com/market/infomemos/2008/oct/24961.pdf
com.kodegeek.blog.finance.DateHelper.holidays=Jan 01, 2009;January 19, 2009; Feb 26, 2009;Apr 10, 2009;May 25, 2009;July 3, 2009; Sep 7, 2009; Nov 26, 2009; Dec 25, 2009; Oct 12, 2009; Nov 11, 2009
com.kodegeek.blog.finance.DateHelper.error.badDate=Got bad date '%s' from property

La idea es buscar el último día del mes y de allí contar hacia atrás, esquivando fines de semana y días feriados.

Please enter a date to check (YYYY-MM-DD, Ctrl-C to exit):
2009-02-27
Last business day of the month: 27
2009-02-27 Is the last business day

En una siguiente entrega les mostraré como hacer lo mismo en Ruby.

Blogalaxia:, , ,
Technorati:, , ,
To2blogs:, , ,
Del.icio.us:, , ,

java, linux, programación, ruby , , ,

Opiniones de Linus sobre Git, KDE y el Kernel

Domingo, 25 de enero de 2009

Siguiendole la pista a un enlace desde Slashdot, Computer World publicó una breve entrevista sobre Linus hablando sobre cosas como Git contra Subversion, el Kernel y su desencanto con KDE.

En particular no veo con importancia que Linus se haya cambiado de KDE a Gnome. Una cosa que mucha gente no se da cuenta es que la interfaz gráfica es algo que tiene que funcionar tan bien que uno no se da cuenta que está allí. En Linux, independientemente si es Gnome o KDE es una vaina que no tiene el nivel de refinamiento de (preparense) Windows ni mucho menos OSX.

Es hora de que Linux cuente con un sólo frente de desarrollo, ya sea KDE o Gnome. El hecho de que hayan dos grupos de desarrolladores jugando a mejorar dos entornos es un desperdicio. La mayoría de los usuarios de Linux como yo nos vale un bledo que es lo que estamos usando, sólo nos interesa que funcione.

O como decía Linux refieriendose al estado programas como CVS o Subversion:

I want all my code to be open source, but I will use the best tool for the job and BitKeeper was the best tool and at the time the alternatives sucked so bad they were shit. When the alternatives are so bad I will take proprietary code. Proprietary was a downside, but what choice did I have? Hey, I usually do my presentation slides in PowerPoint.

Ahh, pragmatico Linus. Por eso es que Linus llegó tan lejos, imaginense si Richard Stallman la hubiera pegado con Hurd :) (Si, ya escucho a la orda de pendejos rasgandose las vestiduras por este tipo de comentarios)

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

linux, opensource , , , , ,

Kodegeek ahora en Facebook

Sábado, 17 de enero de 2009

El grupo Kodegeek fué creado en Facebook. La idea es que participar y escribir en temas relacionados con programación, Internet, informática. Todo entre amigos.

¿Porqué este grupo y no otro grupo? Bueno, la idea es que solamente gente que se conozca integre este grupo. Eso hace el grupo más personal, nada de “trolls” o sabelotodos. También tienen mi garantia que de las direcciones de correo o información de los integrantes no va a ser explotada de manera comercial.

Lo invito entonces a que se una al grupo.

Por cierto, ¿les comente que estoy buscando moderadores?

Blogalaxia:,
Technorati:,
To2blogs:,
Del.icio.us:,

kodegeek, linux, programación , ,

Instalando Fedora Core 10 en mi laptop, algo me dice que este no es el año de Linux en el escritorio

Sábado, 10 de enero de 2009

En este momento estoy trabajando en un proyecto personal con Veronica, tal y como se los comentaba en una entrada anterior. Si bien la máquina que tengo corriendo OS X es muy poderosa, prefiero utilizar Linux para correr ciertos procesos ya que está mejor equipado para tareas en el lado del servidor (paquetes preparados, es un sistema operativo robusto, etc).

Sin embargo Fedora Core 10 me ha dado dolores de cabeza en su configuración; El primero de ellos es la configuración automática del entorno gráfico, el cual acepta la resolución correcta pero congela (literalmente) todo la laptop cuando termina de cargar. Es un error increíblemente bizarro, el cual no tiene trazas de error y que no ocurre por ejemplo si instaló Ubuntu 7 (si, es la versión que tenia a la mano). Sin embargo para lo que yo necesito no requiero X Windows en la laptop (de hecho ahorro memoria matando al servidor X) así que durante la instalación le dije al instalador que usara el modo de texto:

image=vmlinuz.initrd text

La instalación transcurrió sin problemas, hasta que llegó el momento de detectar mis dispositivos de red: La tarjeta de red inalámbrica (modelo Linksys Wireless-G WPC54G) fué reconocida, pero el firwmare no cargó, ya que no viene distribuido con ninguna distribución de Linux (la tarjeta de red usa un manejador de Broadcom el cual es propietario y posiblemente nunca será abierto).

La tarjeta PCI fué reconocida

[root@hplaptop ~]# lspci|grep -i wire
02:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
07:00.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
[root@hplaptop ~]#

Esto es básico, no está tan mal. Pero hubo un problema en la inicialización del dispositivo:

Jan  7 19:27:40 localhost kernel: firmware: requesting b43/ucode5.fw
Jan  7 19:27:40 localhost kernel: b43-phy0 ERROR: Firmware file “b43/ucode5.fw” not found
Jan  7 19:27:40 localhost kernel: b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Dr
ivers/b43#devicefirmware
and download the latest firmware (version 4).Jan  7 19:27:40 localhost firmware.sh[2051]: Cannot find  firmware file ‘b43/ucode5.fw’

Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): carrier now OFF (device state 3)Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): device state change: 3 -> 2
Jan  7 19:27:40 localhost NetworkManager: <info>  (eth0): deactivating device (reason: 40).

Ni corto ni perezoso me dirigí al sitio web, tal y siguiendo las instrucciones para la versión del kernel de Fedora Core 10 copié los archivos a la laptop (recuerden, la laptop funcionaba sin problemas con el cliente DHCP usando ethernet con cable). Del log /var/log/messages:

Jan 10 17:02:38 localhost avahi-daemon[2027]: Loading service file /services/ssh.service.
Jan 10 17:02:38 localhost kernel: firmware: requesting b43/pcm5.fwJan 10 17:02:38 localhost kernel: firmware: requesting b43/b0g0initvals5.fw
Jan 10 17:02:38 localhost kernel: firmware: requesting b43/b0g0bsinitvals5.fwJan 10 17:02:38 localhost kernel: b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
Jan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::txJan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::rx
Jan 10 17:02:38 localhost kernel: Registered led device: b43-phy0::radioJan 10 17:02:38 localhost avahi-daemon[2027]: Network interface enumeration completed.

¡Muy bien! Ahora sólo tengo que revisar si la interfaz inalámbrica funciona bien. Lo primero es ver si puede detectar las redes vecinas:

[root@hplaptop ~]# iwlist wlan0 scan
wlan0     Scan completed :
Cell 01 – Address: 00:1F:F3:C4:CC:C4
ESSID:”tepuyes2″
Mode:Master
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=78/100  Signal level:-52 dBm  Noise level=-66 dBm
Encryption key:on
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: Unknown: 2D1A2C0217FFFF000000000000000000000000000000000000000000
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=000000010a58699c
Extra: Last beacon: 656ms ago

Cell 02 – Address: 00:1E:52:79:34:74
ESSID:”Botart’s Network”
Mode:Master
Channel:3
Frequency:2.422 GHz (Channel 3)
Quality=71/100  Signal level:-58 dBm  Noise level=-66 dBm
Encryption key:on
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: Unknown: 2D1A4C101BFFFF000000000000000000000000000000000000000000
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=000000001bbc0180
Extra: Last beacon: 518ms ago

Nada mal, mi red sale en la lista.  ¿Y que tal el estado de la interfaz wlan0?

No está conectada aún. Bueno, hay que configurarla a mano asegurándonos de que pueda ver la red inalámbrica con el SSID adecuado:

[root@hplaptop ~]# cat /etc/sysconfig/network-scripts/ifcfg-wlan0
# Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller
DEVICE=wlan0
HWADDR=00:0c:41:2e:b2:18
USERCTL=yes
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Wireless
MODE=Managed
#ESSID=tepuyes2
RATE=54Mb/s

En mi caso utilizo WPA, y así que tengo que configurarlo para que la comunicación de los certificados digitales trabaje bien:

[root@hplaptop ~]# cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid=”tepuyes2″
psk=”XXXX”
}
[root@hplaptop ~]#

Después de reiniciar un par de veces, volví a revisar la configuración básica:

[root@hplaptop ~]# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:”NETGEAR”
Mode:Managed  Frequency:2.462 GHz  Access Point: 00:09:5B:C2:F6:5A

Bit Rate=2 Mb/s   Tx-Power=27 dBm
Retry min limit:7   RTS thr:off   Fragment thr=2352 B
Encryption key:off
Power Management:off
Link Quality=63/100  Signal level:-65 dBm  Noise level=-66 dBm
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

pan0      no wireless extensions.

¿Ya tengo dirección IP?

root@hplaptop ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:02:3F:2F:38:D2
inet addr:10.0.1.194  Bcast:10.0.1.255  Mask:255.255.255.0
inet6 addr: 2002:4577:929d:0:202:3fff:fe2f:38d2/64 Scope:Global
inet6 addr: fe80::202:3fff:fe2f:38d2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:382 errors:0 dropped:0 overruns:0 frame:0
TX packets:196 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38391 (37.4 KiB)  TX bytes:38171 (37.2 KiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

pan0      Link encap:Ethernet  HWaddr 56:58:74:F3:A2:B1
BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:0C:41:2E:B2:18
inet6 addr: fe80::20c:41ff:fe2e:b218/64 Scope:Link
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:108 (108.0 b)

wmaster0  Link encap:UNSPEC  HWaddr 00-0C-41-2E-B2-18-F4-EF-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@hplaptop ~]#

Aún no :( . También hay varios indicadores de la tarjeta inalambrica los cuales me hacen pensar que hace falta algo más:

[root@hplaptop ~]# iwlist wlan0 power
wlan0     Current mode:off

[root@hplaptop ~]# iwlist rate
lo        no bit-rate information.

eth0      no bit-rate information.

wmaster0  no bit-rate information.

wlan0     unknown bit-rate information.
Current Bit Rate=2 Mb/s

pan0      no bit-rate information.

[root@hplaptop ~]# iwlist key
lo        no encryption keys information.

eth0      no encryption keys information.

wmaster0  no encryption keys information.

wlan0     2 key sizes : 40, 104bits
4 keys available :
[1]: off
[2]: off
[3]: off
[4]: off
Current Transmit Key: [1]

pan0      no encryption keys information.

Mucho se ha escrito sobre lo difiicil que es configurar una tarjeta de red en Linux usando manejadores propietarios, y hay mucha información en la red sobre como configurar y resolver problemas de instalación.

Mis recomendaciones por ahora:

  • No compre tarjetas que no funcionan con manejadores nativos de Linux. NDIS y otros proyectos son un parche encima de la incompetencia de los vendedores en proveer manejadores abiertos. En particular la tarjeta que compré fué un gasto de $20 (yo me confié pensando que Linksys por hacer otros productos OpenSource seguro haría lo mismo con la tarjeta de red. Tremendo error).
  • No descarte su enlace por Ethernet si está configurando su laptop.
  • Busque ayuda en la red usando Google y otros buscadores. Avance lo más que pueda y después pida ayuda (eso le permitirá entender mejor el problema, a la vez que aprende).

Por ahora sólo me queda pedir ayuda en la lista de Fedora Core en laptops, para tratar de resolver mi problema de la tarjeta de video y la conexión inalambrica. Mientras sigo intentando tengo conectada la laptop al puerto Ethernet de mi Time Capsule de Apple, con lo cual me puedo concentrar en instalar las aplicaciones que quería montar desde el principio y sobre todo en trabajar en mi proyecto.

¿Y usted que opina, tiene algún consejo que quiere compartir?

Blogalaxia:, ,
Technorati:, ,
To2blogs:, ,
Del.icio.us:, ,

kodegeek, linux, opensource , ,