Ver MAC de interfaz de red en Linux

Existe una forma interesante para poder sacar la MAC asociada a una interfaz de RED. Hay un fichero que tiene almacenada la MAC de la interfaz de Red, y existen tantos ficheros de este estilo, como interfaces de red tenga la máquina.

El fichero en cuestión es: /sys/class/net/eth0/address, donde eth0, identifica la interfaz de red.

Ejemplo:

[10:47:19 root@coloso01:~]# cat  /sys/class/net/eth0/address
00:14:5e:2a:55:c0

Setencias MySQL directamente desde la terminal

Hoy he descubierto un modo interesante, y sobretodo ágil para ejecutar sentencias de MySQL directamente en la terminal de comandos del SSOO, sin tener que estar dentro del propio sistemas de gestión de BBDD.

La sentencia en concreto sería:

[root@host01:~]# mysql -umiusuario -pmipassword -e 'select * from mi_tabla where fecha > "2009-09-17 17:00:00";' mi_base_de_datos

donde:

  • -u: indica el usuario de acceso a la BBDD.
  • -p: indica la password de acceso a la BBDD.

El único problema que le veo a esto, es que en el histórico se quedan almacenados tanto el usuario como la password de la BBDD, lo cuál puede ser un agujero de seguridad…

Para evitar que en el histórico se quede almacenada la password de la BBDD, es posible no indicar la password en el propio comando y que el propio MySQL la pida posteriormente de esta forma:

[root@host01:~]# mysql -umiusuario -p -e 'select * from mi_tabla where fecha > "2009-09-17 17:00:00";' mi_base_de_datos

El problema es que este comando no nos valdrá para usarlo en scripts.

Logear mensajes personales en el /var/log/messages

Para logear mensajes personales en el fichero /var/log/messages puedes usar la herramienta logger de unix.

Un ejemplo sencillo sería:

logger Esto es una prueba cutrecilla

y podrías observar el resultado así:

tail -20 /var/log/messages

Puedes incluso poner más información (Esto tiene que ser incluído en el código de un bash script):

logger -t `basename $0` i am still testing

Fuente

ngrep (Network GREP)

Ngrep es un grep para el tráfico de red, es una utilidad que puede ser usada para encontrar los patrones de búsqueda en la capa de red.

Para instalarla:

  1. Ir a http://ngrep.sourceforge.net/ y descargar los binarios del programa.
  2. Descomprimimos: bzip2 -cd ngrep-1.45.tar.bz2 | tar -xv
  3. configuramos el ejecutable: ./configure
  4. make
  5. Instalamos: make install (Para ejecutar este paso tienes que ser usuario root). El programa se habrá instalado en el directorio /usr/local/bin y el manual en el directorio/usr/local/man.

Ejemplos:

ngrep '' udp (print all UDP packets)
ngrep '' icmp (print all ICMP packets)
ngrep '' port 53 (print TCP or UDP port 53 packets)
ngrep '' tcp port 23 (print TCP port 23 packets)
ngrep 'LILWORD' port 138 (print Microsoft browsing traffic for NT domain LILWORLD)
ngrep -iq 'rcpt to|mail from' tcp port 25 (monitor current delivery and print sender and recipients)
ngrep 'user' port 110 (monitor POP3)
ngrep -q 'abcd' icmp (Microsoft operating systems fill the ICMP payload with the alphabet; is the "pinging" host running a Microsoft operating system?)
ngrep -iq 'user-agent' tcp port 80 (determine client application that client host is running)
ngrep '220' port 21 (determine version of FTP server)
ngrep 'SSH' port 22 (investigate Secure Shell)
ngrep -v '' port 23 (see all traffic but telnet)
ngrep -d le0 '' (listen to le0)
ngrep -x ssword
ngrep -e -x host 192.168.1.10
ngrep -d wlan0 -n 3
ngrep -wi -d wlan0 'user|pass' port 6667
ngrep -q -wi 'user|pass'
ngrep -q -W byline port 8000 -n 5

Fuente en InformIT.

Aprendiendo a usar rsync

rsync es una aplicación del mundo Unix que permite sincronizar ficheros entre máquinas.

Un ejemplo de su uso sería el siguiente:

rsync -avrP --times --perms --links --exclude "*~" /ruta/a/documentos usuario@servidor:documentos

donde:

  • rsync: el programa que va a hacerse cargo del respaldo.
  • avrP: son las opciones: a significa “modo de archivo”, v por “verbose” (o sea, que verás en la terminal toda la información relevante sobre el proceso), r es por “recursivo” (respaldará el directorio ~/documentos y todo lo que esté dentro de él, incluyendo directorios) y P es para permitir la transfrerencia parcial de archivos (muy útil si se transfieren archivos muy grandes; si se llegara a cortar la conexión, retomará donde quedó, no desde el principio).
  • –times: Indica a rsync que envíe la fecha de modificación del fichero, de modo que se detecten actual¡zaciones de éstos y se sincronicen correctamente.
  • –perms: Para que se sincronicen también los permisos.
  • –links: Para que se sincronicen los links.
  • –exclude «*~»: con esto conseguimos que no sincronice los ficheros de backup.
  • /ruta/a/documentos es el directorio local que quieres sincronizar.
  • usuario@servidor:documentos es la información del servidor remoto donde se sincronizarán los ficheros.

Para poder utilizar esto de forma automática, sería necesario tener las llaves de SSH preparados para un login automático.

Comprimir/Descomprimir ficheros en entornos UNIX

A veces es complicado saber tódos los comandos que existen para comprimir/descomprimir ficheros en entorno UNIX.

Ficheros .tar

Tar es un formato que sólo empaqueta múltiples ficheros en uno sólo, pero no comprime.

  • Empaquetar: # tar -cvf  fichero.tar ficheros
  • Desempaquetar: # tar -xvf fichero.tar
  • Ver contenido: # tar -tf fichero.tar

Ficheros .gz

  • Comprimir: # gzip -9 ficheros
  • Descomprmir: # gzip -d ficheros.gz

Ficheros .bz2

  • Comprimir: # bzip2 ficheros
  • Descomprmir: # bzip2 -d ficheros.bz2

Ficheros .tgz (ó .tar.gz) -> tar+gzip

  • Empaquetar/Comprimir: # tar -czf fichero.tgz ficheros
  • Desempaquetar/Descomprimir: # tar -xvzf fichero.tgz
  • Ver contenido: # tar -tzf fichero.tgz

Ficheros tar.bz2 -> tar+bzip

  • Empaquetar/Comprimir: # tar -c ficheros | bzip2 > fichero.tar.bz2
  • Desempaquetar/Descomprimir: # bzip2 -cd fichero.tar.bz2 | tar -xv
  • Ver contenido: # bzip2 -cd nombre.tar.bz2 | tar -t

Ficheros .zip

  • Empaquetar/Comprimir: # zip fichero.zip ficheros
  • Desempaquetar/Descomprimir: # unzip fichero.zip

Ficheros .rar

  • Empaquetar/Comprimir: # rar -a fichero.rar fichero
  • Desempaquetar/Descomprimir: # rar -x fichero.rar
  • Ver contenido: # rar -l fichero.rar
  • Ver contenido: # rar -v fichero.rar

HOWTO comunicarse entre terminales Linux

A veces es interesante el hecho de poder comunicarte con los usuarios logeados en una máquina. En el mundo Unix existen varios modos de poder hacer esto:

Método 1

Primero, tenemos que averiguar qué usuarios hay conectados en el sistema. Para ello podemos utilizar el comando who.

[00:27:51] yvoictra@goloso:~$ who
yvoictra pts/0        2008-12-31 00:17 (154.pool85-53-191.dynamic.orange.es)
yvoictra pts/1        2008-12-31 00:20 (154.pool85-53-191.dynamic.orange.es)
yvoictra pts/2        2008-12-31 00:20 (154.pool85-53-191.dynamic.orange.es)
yvoictra pts/3        2008-12-31 00:27 (154.pool85-53-191.dynamic.orange.es)

Una vez que hemos localizada la terminal a la que queremos enviar un mensaje, ejecutamos el siguiente comando:

echo "Hola!! Esto es una prueba xD" >> /dev/pts/1

de este modo, la terminal definida por /dev/pts/1 habrá recibido el mensaje en cuestión.

Método 2

Consiste en utilizar el comando write. Con el comando who podemos ver qué usuarios están conectados, y enviar un mensaje.

Por ejemplo:

echo "Hola!! Esto es una prueba xD" | write yvoictra

ó

write yvoictra
Hola
Control+C

Así, el usuario yvoictra habrá recibido el mensaje correspondiente.

Método 3

Envío Masivo de mensajes. Esta vez utilizaremos el comando wall. Con él, conseguiremos enviar a todas las sesiones abiertas un mensaje (Broadcast).

Ejemplo:

echo "Hola!! Esto es una prueba xD" | wall

También podemos combinar estos comandos para conseguir enviar palabras en ASCII:

figlet "Prueba" | wall

Que generaría la siguiente salida en todas las terminales:

Broadcast message from yvoictra (Wed Dec 31 00:44:20 2008):
 _ __  _ __ _   _  ___| |__   __ _ 
| '_ \| '__| | | |/ _ \ '_ \ / _` |
| |_) | |  | |_| |  __/ |_) | (_| |
| .__/|_|   \__,_|\___|_.__/ \__,_|
|_|                                

También podéis probar el siguiente comando:

banner "Prueba" | wall

Y para los que se arriesgan, pueden probar este comando divertido:

yes | write yvoictra

Conectar a una VPN con vpnc

vpnc es un cliente libre de redes VPN para Unix, que se usa a través de la consola. Existen otros clientes de este estilo que incluso utilizan la interfaz gráfica.

Para instalarlo utilizaremos lo siguiente:

sudo apt-get install vpnc

Que tendrá en cuenta que todas las dependencias con otras librerias están correctamente instaladas.

vpnc buscará los ficheros /etc/vpnc.conf o /etc/vpnc/default.conf, si ninguno de estos ficheros existe, al ejecutar vpnc pedirá por consola los parámetros necesarios.

Para que vpnc utilize un fichero de configuración distinto a los anteriores, tiene que utilizar se puede utilizar la siguiente orden:

sudo vpnc miconfiguracion

o

sudo vpnc miconfiguracion.conf

cuyo fichero tiene que estar en el directorio /etc/vpnc/ y necesita la extensión .conf.

El aspecto de este fichero es el siguiente:

IPSec gateway gateway
IPSec ID nombre_del_grupo
IPSec secret contraseña_del_grupo
Xauth username mi_usuario
Xauth password mi_contraseña

Para desconectar de la VPN, se usa el siguiente comando:

sudo vpnc-disconnect

Fuente.