miércoles, 17 de febrero de 2010

Obsesiones surtidas: sincronizar la hora de una maquina en una LAN

Versión larga

Hay ocasiones en las que uno se embarca en tareas que (a ojos de terceros) pueden parecer desproporcionadas para su propósito original. Así, hay quienes queman una biblioteca para deshacerse de un libro, o escriben un libro para hacer de marco a un capítulo que ya tienen (la historia de Cortázar y el capítulo de los tablones en Rayuela es probablemente falsa, pero ilustra).

Pongamos como ejemplo un poema reciente, escrito para sacar de mi cabeza el loop de la primera estrofa, robada de "cada loco con su tema".

Sentidos

Por lo general
Me gustan las palabras
mas que los sonidos,
y los sonidos
mas que los colores

Pero claro

El frio del vaso
el sabor de una cerveza
en un dia de calor

El olor a manzana
verde en la cabeza
recien lavada de mis hijas

Tu piel en la yema
de mis dedos
como preámbulo

La obra de arte
de tu cuerpo desnudo

Valen mas que mil volando.




El poema y este blog, como todo lo que escribo, tienen ese defecto.

Hace unos días estuve tratando de resolver un problema: una máquina que no mantiene la fecha, que está atrás de un proxy sin soporte NTP y que no puedo abrir fisicamente. Las búsquedas en google acerca del tema me daban siempre salidas de relojes atómicos, foros con preguntas sin responder, servidores de hora shareware y demás.

Así que de intentar actualizar por internet pase a actualizar por lan, y de intentar instalar un servidor NTP propio a buscar como hacer un script usando los viejos "time" y "date".En algún momento, investigando las opciones del comando NET TIME me encontré este articulo del soporte de Microsoft, que solucionó mi problema.


Versión corta

El comando que hay que usar es:

net time \\maquinaenlaredconlahorabienpuesta /set /y

Conviene ponerlo en un .bat y cargarlo al inicio de la sesión.
Y eso es lo que quería decir!

PD: Tres días, tres entradas. Para mantener mi ritmo de publicacion de los últimos tres meses debería dejar de escribir hasta Agosto!

martes, 16 de febrero de 2010

Obsesiones surtidas: Mejorando la compatibilidad de Grub4dos en el pendrive

Grub4dos es una herramienta increíble: puede bootear directamente linux, xp, vista y seven, puede montar diskettes o imagenes iso, y tiene una linea de comandos poderosa, que nos permite buscar las opciones corectas en vivo.

En mi pendrive de laburo el grub4dos se encarga de bootear un par de mini XP, el Hirens 10, la consola de recuperacion de XP, las ISO de Acronis TrueImage y Puppy 4.21 y el Slitaz, una mini distro que es rápida y maneja bien NTFS.

Lamentablemente para nosotros, los habitantes del subdesarrollo, algunas máquinas de las que son mayoría por estos lares (maquinas con DDR y sin SATA, sin muchas opciones para bootear desde usb) tienen problemas para llegar al menú.

PROBLEMAS Y SOLUCIONES

El primer problema es en el booteo. El síntoma es que al arrancar desde el pendrive el sistema se queda colgado con un cursor parpadeante en la esquina superior izquierda, y es incapaz de cargar el grub. La solución que nos propone la gente del Hirens es cargar grub.exe desde syslinux, que es un arranque mucho más amigable. El archivo que descargamos de la página de hirens no hace mas que instalar el syslinux, copiar a la raiz del pen el grub.exe y el archivo syslinux.cfg, que contiene solo la sentencia “default /grub.exe”. Elegante y conciso. Y funciona. Por supuesto, nosotros no podemos dejar tranquilo ese syslinux.cfg, pero eso es de otros posts que ya pasaron!

El otro problema, con el que me encuentro mas veces de las que quisiera, nos deja en la línea de comandos de grub sin mostrarnos nuestro menú. Esto sucede porque la bios esta reconociendo el pendrive como un diskette, y nuestro grub4dos esta seteado explícitamente para no buscar en floppies.

Cómo sabemos si es esa la causa? Buscando nuestro menu.lst desde la linea de comandos con find /menu.lst el comando nos devuelve un bonito (fd0).

La solución más directa es hacer a mano lo que el grub no quizo hacer automáticamente.

Tipeamos:

find --set-root /menu.lst
configfile /menu.lst


Y tendremos nuestro menú. Hay que tener en cuenta que estamos booteando con fd0 como root, lo cual no suele gustarle al hirens, pero los chainloaders del xp o las iso no tienen mayores problemas para arrancar.

Pero... para los enfermos como yo existe una solucion más permanente, que nos evita el delay de cargar a mano el menú. Podemos modificar las opciones de arranque del grub4dos.

Parte de la magia de este bootloader está en su capacidad de cargar automáticamente el menu.lst. Si lo arrancamos en una máquina lenta, y tocamos las teclas del cursor al iniciar, podemos entrar en un menú intermedio, cuyas entradas buscan al archivo menu.lst en el directorio raiz /, en /grub y en /boot/grub. Al editar estas entradas vemos al culpable de nuestras desdichas. La línea que busca el menu.lst es así:
find --set-root --ignore-floppies --ignore-cd /menu.lst

y la siguiente

configfile /menu.lst

Bien! Ahora sólo nos queda sacar la parte de “ignore floppies” del menú intermedio, para que el boot funcione de primera.

Pero dónde está ese menú? Esta es la parte divertida del procedimiento. El menú está en el archivo grub.exe (y en el grldr, pero como usamos syslinux ese no nos importa), y podemos editarlo directamente con un editor hexadecimal.

Voy a usar el TinyHexer, que es el que llevo en el pendrive. No por nada en particular.

El truco es buscar la cadena de texto “--ignore-floppies --ignore-cd /menu.lst” en el archivo, seleccionar la parte de “--ignore-floppies“ y eliminarla. Acá una muestra de cómo se ve en mi editor:



That´s all folks!

PD: Para los que quieren todo cocinado, aca les dejo mis Grub.exe y grldr modificados.

PD2: Calmadas nuestras obsesiones, ya podemos seguir viendo los capitulos de Fringe que nos quedan. Hasta luego!

lunes, 15 de febrero de 2010

Ingeniería social básica, o el juego de los 3 bits

Ingeniería social es el nombre que los freaks de la informatica como yo le dan al trato con otros seres humanos. A mi en particular siempre me interesó el tema, sea desde el lado oscuro de la fuerza, investigando las formas que los hackers, spammers y creadores de virus usaban para que los usuarios ejecuten sus programas , o desde el otro lado (¿el lado claro?) mirando como los que saben de usabilidad se las arreglaban para que un tipo pudiera manejar algo totalmente nuevo como si ya supiese.

En nuestro trabajo como técnicos hay ocasiones en las que tenemos que usar ingeniería social para sacar información de los usuarios acerca de la falla del equipo. En este caso no se trata de conseguir un dato que el cliente nos quiera ocultar (como una contraseña, por ejemplo), sino de guiarlo para que nos de una informacion que él no sabe que tiene. Las dificultades de la tarea son varias:

a) El tipo cree que no sabe nada, por lo que nuestra investigación le resulta incómoda y/o vergonzante. Cuando le preguntamos que problema tiene solo suele repetir "yo de esto no se nada", y es complicado sacarlo de ahí.
b) El cliente está en shock. La máquina es como una parte de su cuerpo, y verla ahí inerte le provoca pavor, por lo que no atina ni siquiera a apagarla y volverla a prender.
c) Superado cierto número de preguntas, el susodicho empieza a pensar que nosotros no sabemos nada. Y es que nosotros deberíamos saber que le pasa a la máquina por ósmosis o clarividencia.

Lo cierto es que no somos nosotros los que pasamos varias horas por día frente a la máquina, y si lo fuéramos no seríamos capaces de cobrar por ellas. Por lo que muchas veces necesitamos esa información para trabajar.

Hace unos días volví a ver un capítulo de Cosmos (el 11: La persistencia de la memoria), en el que Sagan habla del juego de las 20 preguntas. Así como Akinator, con 20 preguntas bien elegidas contestadas con sí o no se puede identificar cualquier cosa de este mundo. No es poco: 20 bits nos dan (2^20)-1 posibilidades, poco mas de un millón. Con esa cantidad sería sencillo hacer un pre-diagnóstico de la máquina, lo que nos ahorraría tiempo de trabajo.

Pero la vida no es tan sencilla, y mas que Carl Sagan o el genio de la web nuestros clientes son como el genio de la lámpara o el rey de los minisúper: no nos permiten mas de tres preguntas.

Así con esos tres bits, tenemos que tratar de aproximar el diagnóstico.

Dejo un par de ejemplos como muestra:

Atención telefónica

Cliente: La máquina no anda (información=0).
Técnico: 1- ¿Prende alguna luz, o hace algún ruido?
C: Si, pero después no anda (1 bit)
T: 2- ¿Llega a mostrar el fondo de escritorio, y el botón inicio?
C: Si, pero la flechita no se mueve (digamos 2 bit)
T: 3- En su teclado tiene una tecla con el logo de windows. Está entre el control y el alt izquierdo. Si la aprieta: ¿Se ve el menú de inicio?
C: No sé, la compu está en mi casa y yo en el trabajo.(0 bits)

Ya está. Se gastaron las preguntas. Logramos reducir el problema a algunas posibilidades: O hay un programa al inicio que cuelga la PC, o hay un problema de temperatura, o bien el mouse está roto o desconectado. En el caso de que el cliente esté en su casa y comprenda la pregunta 3, la respuesta es la diferencia entre ir a lo del cliente con un mouse nuevo por las dudas o ir a retirar la máquina para ver en el taller.
También nos faltó el famoso “¿Ha probado apagarla y volverla a encender?”, que podría haber sido la tercera pregunta. Pero no hay nada que hacer ahora. Apostamos, y perdimos.

Otro caso similar:

Cliente: La máquina no anda.
Técnico: 1- ¿Prende alguna luz, o hace algún ruido?
C: Si, pero después no anda (1 bit)
T: 2- ¿Llega a mostrar el fondo de escritorio, y el botón inicio?
C: No, se queda la pantalla en negro con letras blancas (1bit).
T: 3- ¿Pasan varias pantallas con letras y después vuelve a empezar?
C (se fija): Sí, eso! (1bit)

En este caso tuvimos éxito. De "no anda" llegamos a "se reinicia continuamente", lo que nos dice que es un laburo real, con urgencia para el cliente y cobrable. Si la respuesta 3 era negativa podía ser un disco roto, o un diskette viejo en la diskettera, con un mensaje de "non system disk...". Por desgracia, para determinar eso nos hubiera faltado una pregunta. O una bola de cristal nueva.

Saludos!
Los dejo con sus clientes. Pregunten bien, y Good Show!

PD: Para aquellos preocupados por cuestiones de género, el post hace referencia a un cliente masculino. Por comodidad en la lectura me abstengo de poner cliente/a, tipo/mina, susodicho/a y demás correcciones.
Por el mismo motivo, el que se sienta mas cómodo podrá reemplazar "cliente" por "usuario". No suelo usar "luser", porque no quiero ofender al que me mantiene. Will you bite the hand that feeds you?