jueves, junio 25, 2015

Como diagnosticar problemas de red en linux

1. Verificar la conectividad FISICA, generalmente el router tiene un LED y la tarjeta de red de la máquina también, debemos verificar que se encuentren encendidos ambos. A veces hay dos LEDs uno naranja que indica están conectados y uno verde que se prende cuando se están transmitiendo datos.

2. Verificar la configuración de red, es decir tenemos que tener una dirección IP que nos ha sido asignada automaticamente por el router, para ello abrimos una linea de comandos ¿como abrir una línea de comandos? En la linea de comandos usamos el comando ifconfig para ver la configuración de red, puede que en algunos casos no encuentre el comando porque no este en el PATH pero podemos ejecutarlo dando toda la ruta completa /sbin/ifconfig.

A continuación un ejemplo de la salida del comando, lo ejecutamos con el parametro -a para que muestre todas las interfaces de red, aún cuando no estén en uso:

/sbin/ifconfig -a

A primera vista parece algo dificil de descifrar, pero no es así, primero antes que nada hay que entender como se llaman en linux las interfaces de red. Hay de varios tipos:

eth
Esto hace referencia a las tarjetas que se conectan por cable de red ethernet
wlan
Estas hacen referencia a las tarjetas de red inalambricas para conectarnos al wifi
lo
Esta es una interface de red simulada para cuando el sistema hace uso de la red pero se comunica dentro del mismo equipo, consigo mismo
tun
Estas son interfaces para hacer tuneles
tap
Estas son interfaces para hacer puentes

En todos los casos el identificador de la tarjeta esta dado por los nombres anteriores y un número, así la primera tarjeta ethernet es eth0 y la segunda eth1 y si tenemos una tercera eth2 y así sucesivamente.

La primera tarjeta de red inalambrica se llama wlan0

Luego la siguiente información nos muestra:

Como abrir una linea de comandos en linux

Existen varios métodos como los de menu que no voy a explicar ya que son visuales, aquí explico los métodos por teclado.

En primer lugar hay que saber que hay varios emuladores de terminal y que podemos usar cualquiera de ellos indistintamente, todo depende de tus gustos y preferencias, a final de cuenta estamos corriendo un interprete de comandos dentro de esa ventana, del cual también hay varios, pero por lo general estamos corriendo el famoso BASH

Para abrir el programa emulador de terminal en la mayoría de las distrubiciones mediante las teclas Alt+F2 nos muestra una mini linea de ordenes, como se muestra en la foto:

Dentro de las opciones que tenemos se encuentran las siguientes más utilizadas:

xterm
Esta es la más tradicional, fue de las primeras en existir, pero una ventaja es que es bastante ligera, aunque no hace monerias graficas como las más nuevas (fondo transparente o cambiar tipo de letra). Sin embargo si podemos ajustar el tamaño de la letra.
gnome-terminal
Esta es la que hicieron especificamente para el manejador de ventasas gnome, pero se puede usar con cualquier manejador de ventanas.
konsole
Esta se hizo para el manejador de ventanas KDE pero se puede usar en cualquiera
terminator
Esta tiene la particularidad de que podemos dividirla y tener más de un interprete de ordenes en la misma ventana, y mandar comandos a solo uno o varios, útil para cuando tenemos que ejecutar el mismo procedimiento en varios equipos, o para consultar la documentación en una mitad y dar comandos en la otra.

Una vez elegida una, escribimos el nombre y presionames ENTER o el boton EJECUTAR, (puede que no tengamos instaladas todas en nuestro sistema pero se pueden añadir facilmente mediante el gestor de paquetes de linux), podemos probar con cada una para saber cuales tenemos.

Por ejemplo les muestro a continuación una imagen del xterm, mi favorita

lunes, junio 22, 2015

Hide Bash command history

Como controlar el historial de comandos de bash.

Bash guarda la historia de comandos en el archivo .bash_history ubicado en nuestro $HOME, pero ese archivo se escribe hasta el exit del bash.

Es posible mandar a escribir prematuramente el archivo de history mediante

history -w

También es posible limpiar completamente el buffer de comandos en la sesión de bash actual:

history -c

Dentro de bash podemos consultar la historia mediante el comando history la cual incluye tanto los comandos del archivo como los que hemos dado en la sesion actual.

Como corolario de lo anterior si tenemos varias sesiones de bash abiertas la salida del comando history difiere entre ellas

La variable de entorno HISTFILE indica al bash en que archivo guardar el history al salir.

Una forma de evitar se guarden los comandos en el archivo history es cambiar la variable por ejemplo mandarlo al dispositivo nulo o eliminar la variable

HISTFILE=/dev/null

O eliminando la variable

unset HISTFILE

Esto también lo podemos usar cuando queremos realizar un procedimiento especifico y documentar todo lo que hemos hecho, si todo se realiza en una única sesión de bash, entonces podemos mandar los comandos ejecutados a un archivo de registro, esto funcionara bien siempre y cuanto lo hagamos antes del exit del bash:

HISTFILE=comandos_proceso_X

Si lo que deseamos es borrar un comando especifico del history, lo podemos hacer con el número con el que aparece en la salida del comando history por ejemplo borrar el comando 325

history -d 325

El número de lineas que el archivo de historia guarda esta determinado por la variable de entorno HISTFILESIZE

El número de lineas cargadas en el buffer del comando history esta determinado por la variable de entorno HISTSIZE

Para evitar que un comando ingrese en la historia basta con comenzar el comando dejando un caracter de espacio, esto funciona aún cuando la variable de control HISTIGNORE="" (el valor por default), por lo que si no deseamos que el comando se incluya en el history basta empezarlo dejando un espacio:

echo "in history"
 echo "not in history"

miércoles, junio 17, 2015

Monkey see monkey do ...

Cuenta la leyenda que habia un zapatero y su vecino tenía un changuito

y el changuito veia como hacia zapatos con la herramienta

y cuando se iba el zapatero a su casa, se metía el chango y hacia cortes en los zapatos con la herramienta, porque intentaba hacer lo que veia

el zapatero enojado le dijo al vecino que amarrara su chango

pero este le dijo que el chango lo hacía por sí solo, que el no tenía nada que ver

así que el zapatero como sabía que el chango hacía lo que miraba

se puso un cuero grueso en la panza y con la cuchilla se daba tajos sobre la panza como cortando

entonces lo que paso es que el chango, haciendo gala de sus habilidades de repetir lo que observaba, hizo lo mismo y se corto la panza, y se murió

cuando fue a reclamar el vecino al zapatero, este le dijo que el chango lo hizo el solo, por sí mismo, que el no tuvo nada que ver, que el le advirtio que lo amarrara

y tantán este cuento se ha acabado, espero te haya gustado!!!

lunes, junio 15, 2015

Reproducir video en modo texto


Se puede hacer usando mplayer, simplemente basta especificar un driver de salida que convierta la imagen en ascii art.




En escala de grises

mplayer -vo aa video.mp4

si se quiere usar la misma terminal en la que se pone el comando (cuando estamos en modo gráfico X)

mplayer -vo aa:driver=curses x.avi



En tonos de color

mplayer -vo caca video.mp4

y en la misma terminal (en X)

export CACA_DRIVER=curses
mplayer -vo caca video.mp4

jueves, junio 11, 2015

La gente que es la gente en tratar de entenderla ...

Si no eres servil resulta que tienes mala actitud.

Si eres más inteligente que el promedio resulta que te crees mucho.

Si eres honesto resulta que eres un grosero.

No cabe duda que en este mundo la gente esta acostumbrada a los disimulados e hipocritas.

miércoles, junio 10, 2015

Automatización de tareas repetitivas con teclado y mouse en linux

Si trabajas con computadoras seguramente te ha tocado el caso donde tienes que realizar una tarea repetitiva muchas veces, por ejemplo que tienes una hoja de excel donde las celdas vienen como dato textual pero son datos númericos (o sea empiezan con '123 por ejemplo) y al estar como texto, entonces no se puede sumar, en este caso el cambio del dato de texto a número se hace oprimiendo F2 para que la celda entre en modo de edición, seguido de la tecla Home para que el cursor se vaya al principio y luego la tecla supr para borrar el ', acto seguido presionar ENTER para que el cambio sea guardado como contenido de la celda, esto hace que el cursor de la celda se vaya a la celda de abajo.

Supongamos que tienes un documento donde tienes que hacer el procedimiento antes mencionado 500 veces, esto es suficiente para desesperar a personas que no soportan realizar tareas repetitivas (como es mi caso, ya que me genera mucho estrés), así que investigando rapidamente en google, hay alternativas de software para hacer este tipo de automatización, a saber dos principales.

1. Autokeys
2. xmacro

En este post voy a describir como lograr automatizar mediante xmacro y bash.

Antes que nada si no teneis instalado el software ya saben que en ubuntu y derivativos lo pueden hacer facilmente con la orden:

sudo apt-get install xmacro

Lo primero es escribir la secuencia de eventos de teclado y mouse en un archivo de texto, en el caso de lo que se desea hacer para convertir la celda de texto a número, teniendo como precondición tener la hoja de calculo abierta, con el foco, y posicionada en la celda de la columna a procesar:

macro1.txt


KeyStrPress F2
KeyStrRelease F2
KeyStrPress Home
KeyStrRelease Home
KeyStrPress Delete
KeyStrRelease Delete
KeyStrPress Return
KeyStrRelease Return


El macro anterior convierte una celda, para llamarlo un número determinado de veces por ejemplo 125, desde nuestra terminal bash podemos hacer un for que mande llamar 125 veces la macro, y antes de empezar esperar un tiempo para que nos de tiempo de posicionar el cursor sobre la hoja de cálculo y la celda donde se va a empezar.

sleep 3; for i in {1..125}; do cat macro1.txt | xmacroplay -d 1; done

En el ejemplo la opción -d es para indicar cuanto tiempo debe esperar el xmacroplay entre mandar un evento y otro, en este caso 1 milisegundo, lo que sería un superhumano tecleando muy rápido, maybe superman o flash, aunque para la computadora un milisegundo es mucho tiempo.

Otro ejemplo de macro, por ejemplo para abrir el cuadro de dialogo de ejecutar comando en linux y tener listo el comando para ejecutar una terminal, ya solo esperar el enter de confirmación del usuario sería:

macro2.txt

Delay 0
KeyStrPress Alt_L
KeyStrPress F2
KeyStrRelease F2
KeyStrRelease Alt_L
Delay 1
KeystrPress x
KeyStrRelease x
KeystrPress t
KeyStrRelease t
KeystrPress e
KeyStrRelease e
KeystrPress r
KeyStrRelease r
KeystrPress m
KeyStrRelease m


Queda pendiente el uso de eventos del mouse, pero si deseamos saber la sintaxis que va en la macro la podemos grabar con el comando:

xmacrorec2 > macroName.txt

Los eventos de mouse son por ejemplo:

MotionNotify 2730 596
ButtonPress 1
ButtonRelease 1
ButtonPress 3
ButtonRelease 3
ButtonPress 2
ButtonRelease 2

Siendo el boton izquierdo 1, el derecho 3 y el central 2.

Eso es todo por hoy, en otro post algún día hablaremos de Autokeys, que poseé características más sofisticadas y una GUI.

Happy automation!