Categorías
Linux y Software Libre

Averiguar la dirección IP de un equipo por su hostname.

La situación es un poco complicada, verán, tengo un usuario que ocasionalmente me pide ayuda y para ello me conecto de manera remota a su equipo, le ayudo en lo que necesite y fin de la historia, peeeeroooooo…

Este usuario tiene un pequeño detalle, salta de una dirección IP a otra. Supongo que prende poco su equipo, sólo cuando lo necesita y en cada ocasión el servidor DHCP le asigna una dirección diferente, el problema es saber cuál.

Claro que puedo consultar la lista de préstamos de DHCP de PfSense, pero me ocupa demasiado tiempo. Entonces usé Angry IP Scanner con buenos resultados, un ligero escaneo a mi red local para localizar el equipo, peeeeroooo…

Un buen día Angry IP Scanner (ipscan para los cuates) dejó de funcionar. Supongo que fue un problema durante la actualización de Manjaro, es algo que pasa todo el tiempo, al parecer un problema con Java y con solo mencionar ese nombre me salen ronchas.

Entonces me di a la tarea de buscar alguna alternativa, el objetivo es relativamente simple averiguar la dirección IP de un equipo por su hostname. perooooo …

¿Qué comando usar?

Durante mi investigación surgieron varios nombres, intenté cuanto comando se me puso enfrente. En algunos me acercaba bastante, pero los resultados no eran los que esperaba, probé con:

  • arp
  • ping
  • nslookup
  • nmap
  • samba

Samba fue el ganador

Contra todo pronóstico el ganador fue samba con el comando nmblookup. Este comando hace precisamente lo que estoy necesitando. Como conozco el hostname del equipo que estoy buscando todo se resume a un simple comando.

nmblookup hostname

Y voalá, la IP correspondiente aparece en mi terminal.

[inguanzo]$ nmblookup equipo1
192.168.0.175 equipo1<00>

Ahora se que esto es un poco triki, porque el hostname también es el NetBIOS name (que no es lo mismo, pero es igual). Y como ocurre en muchas de mis investigaciones, una vez que obtengo un resultado satisfactorio, detengo la investigación y sigo con otra cosa.

¿Ustedes saben otra forma de obtener la dirección IP de un equipo de red mediante su hostname? Espero sus comentarios.

Por lo pronto, ¡Feliz fin de semana!.

Imagen principal de Marvin Meyer en Unsplash.

Categorías
Linux y Software Libre

Automatizando la apertura de Tilix al inicio de la sesión.

Tengo que reconocer que he escrito poco últimamente. Las actualizaciones de Manjaro se han completado sin problemas, mi equipo se ejecuta suavemente y de las principales noticias del software libre creo que hay otros sitios que se encargan de eso y lo hacen muy bien.

Es parte de mi rutina abrir una ventana de Tilix y por lo general abro 3 mosaicos, en uno esta htop para monitorear mis procesos, en otra mi herramienta de Python Ping para monitorear el funcionamiento de los equipos de la red y una más vacía para teclear los comandos que necesite.

Tilix con su mosaico de terminales.
Así es más o menos como me gusta el mosaico de terminales en Tilix.

Esto lo hacía todos los días, así que un buen dia, le invertí un poco de tiempo a la apertura de Tilix con esta configuración desde el inicio con aceptables resultados.

Crear un archivo Bash.

Lo primero que se me ocurrió fue hacer un archivo Bash que luego mandaría llamar desde el inicio de sesión de XFCE y así lo hice.

El archivo Bash no es complicado, le agregué algunas pausas, porque noté que si no lo hacía, en lugar de abrir una sola ventana con sus mosaicos correspondientes abría ventanas individuales.

#!/bin/bash
  
tilix -w /home/usuario/scripts/ -e ./python_ping3.py &
sleep 4
tilix -a session-add-right -x "htop" &
sleep 4
tilix -a session-add-down & 
sleep 4

En el código se pueden ver varios parámetros que se pueden utilizar al momento de ejecutar tilix, como establecer su posición o de una vez, ejecutar algún comando o script.

A veces me sigue mostrando un par de ventanas individuales, pero luego lo que hago es arrastrar las ventanas hacía la otra, hasta dejar el arreglo como me gusta.

Ejecutar el script al iniciar la sesión en XFCE.

Con el script listo, lo único que falta es que se ejecute al iniciar la sesión, para eso arrancamos el programa Sesión e inicio y lo agregamos a la lista.

Ejecutar el script en bash al iniciar la sesión.

Y con eso queda automatizada la tarea.

¡Saludos y hasta la próxima!

Categorías
Linux y Software Libre

Buscar y eliminar archivos en una sola línea con find.

find es de esos comandos en linux que demuestran el poder de la terminal de Linux. Se que a veces no parece lo más intuitivo, pero si se domina correctamente, una sola línea en la terminal ahorra mucho tiempo.

Tratando de economizar algo de espacio en varios discos duros me encontré con esos archivitos Thumb.db. Estos archivos generados automáticamente (creo que desde Windows XP) contienen las miniaturas de las imágenes de una carpeta. Entiendo que tienen su propósito, pero en Linux no los ocupo.

Menciono a los archivos Thumb.db como ejemplo, pero este consejo se puede aplicar a cualquier grupo de archivos que pueda encontrar find.

Busca y encuentra.

No es mala idea primero buscar los archivos que se quieren eliminar, digo, solo por seguridad, no vaya a ser que en el primer intento se eliminen archivos que quieres conservar.

Supongamos que quieres buscar en una carpeta con Imágenes todos los archivos Thumbs.db, entonces tecleamos:

find /MiCarpetaConImagenes -name "Thumbs.db"

y te dará como resultado todos los archivos (incluyendo la ruta) que encontró.

/MiCarpetaConImagenes/Carpeta1/Thumbs.db
/MiCarpetaConImagenes/Carpeta2/Thumbs.db
/MiCarpetaConImagenes/Carpeta3/Thumbs.db
.
.
.
/MiCarpetaConImagenes/CarpetaN/Thumbs.db

Si todo parece correcto, entonces pasamos al siguiente paso.

Busca y destruye.

Si quieres eliminar los archivos que encontraste, entonces agrega esto al final de tu comando de búsqueda.

-exec rm -rf {} \;

De esa forma, la instrucción quedaría más o menos así:

find /MiCarpetaConImagenes -name "Thumbs.db" -exec rm -rf {} \;

Y si ejecutan la búsqueda nuevamente, lo más probable es que ya no arroje resultados, pues porque esos archivos ya fueron eliminados.

La opción delete.

En las versiones más modernas de find existe la opción -delete que borra los archivos que encuentra, pero si no funciona, pueden usar el consejo anterior.

Dicho esto, en lugar de agregar la opción -exec con sus argumentos, basta con incluir la opción -delete para borrar los archivos y si quieres ver cuales son los archivos eliminados añade la opción -print.

find /MiCarpetaConImagenes -name "Thumbs.db" -delete -print

Busca y actúa

Como verán find abre un montón de posibilidades. Se pueden buscar archivos para borrarlos, copiarlos, moverlos, jugar con expresiones regulares, bueno, lo que guste y mande. Hay una parte de búsqueda y otra de acción. Lo que quieran hacer con los archivos es posible.

Eliminar archivos de respaldo antiguos

Por ejemplo, se me ocurrió incluir en mi script de respaldos una rutina que elimine los archivos con una antigüedad mayor de 90 días.

find /CarpetaRespaldos/ -type f -mtime +90 -delete -print

El manual de find es muy completo, se los dejo para futuras referencias.

Imagen de David Pennington en Unsplash.