A vueltas con el nombre

Quiero suponer que no soy el único que reutiliza código, funciones y scripts para evitar reinventar la rueda una y mil veces. En mi caso, guardo unas cuantas líneas de código de una práctica del siglo pasado, varias funciones de cuando empezaba a conocer el shell bash y una «mecánica de obtener los datos más comunes» que lleva vigente casi dos décadas.

¿A dónde quiero llegar con esto? A que quizá, tal vez, debería revisar esas líneas de código cada cierto tiempo. Más concretamente cada lustro. Os pongo un par de ejemplos que me han hecho ver la importancia de la actualización del código reciclado.

La dirección IP

Un clásico, necesitas conocer la dirección IP de la máquina porque mil posibles motivos. Hasta la fecha, yo utilizaba esta línea:

IPADDR=`ifconfig eth0 |grep "inet addr"|cut -d":" -f2 |cut -d" " -f1`

Sencillo, ¿verdad? Esa línea devuelve la dirección IP y la almacena en una variable. Rápido y limpio.

El nombre y los apellidos

Para el FQDN (Full Qualified Domain Name) y el nombre de la máquina (hostname) tenía las siguientes líneas. Tengo que advertir que la tercera línea no es mía (aunque me gustaría), apareció en mi buscador automágicamente y quedé embelesado de su belleza, así que la uní a la biblioteca de código.

FQDN=`grep ^127 /etc/hosts | grep -v localhost | awk '{print $2}'`
HOST=`echo $FQDN |awk -F. '{ print $1 }'`
DOMAIN=`echo $FQDN |awk -F. '{$1="";OFS="." ; print $0}' | sed 's/^.//' `

Al igual que con la dirección IP resulta sencillo pegarlas en un script y utilizarlas sin más, sin preguntarte si hay una forma mejor de obtener la información.

Nota: estas líneas dependen completamente de un fichero /etc/hosts bien formado. Sino, ni te molestes.

El comando del nombre

De esta forma andaba yo, utilizando viejas líneas de código pasadas de mano en mano desde el inicio de los tiempos, hasta hace un día, que tenía que saber todas las direcciones IP de un determinado equipo. Se me ocurrió buscarlo en vez de modificar la línea porque hay gente mucho más inteligente y elegante que yo y, en un foro, lei:

«mira el comando hostname»

Sólo te dice el nombre, pensé. Por curiosidad le eché un ojo a la ayuda de consola y se me cayó el alma a los pies:

Program options:
    -a, --alias            alias names
    -A, --all-fqdns        all long host names (FQDNs)
    -b, --boot             set default hostname if none available
    -d, --domain           DNS domain name
    -f, --fqdn, --long     long host name (FQDN)
    -F, --file             read host name or NIS domain name from given file
    -i, --ip-address       addresses for the host name
    -I, --all-ip-addresses all addresses for the host
    -s, --short            short host name
    -y, --yp, --nis        NIS/YP domain name

Para saber todas las direcciones IP de un equipo basta con ejecutar hostname -I. Sin más. Sin ser root ni zarandajas y, además, por si quieres procesarlas bien, te las devuelve en una línea y separadas por espacios, envueltas para regalo.

Si quieres saber el FQDN, hostname -f. Para el dominio, hostname -d. No hace falta nada más. Supongo que un buen fichero /etc/hosts ayuda pero estoy por apostar a que sin el también funciona.

¿Esta historieta tiene moraleja? ¡Por supuesto! Si utilizas un sistema operativo basado en el principio KISS debes saber que, por muy bonito que sea tu código, por mucho que lo hayas razonado, pulido, probado y vuelto a pulir, siempre habrá otro (código, programa, aplicación) que hace lo mismo de mejor forma, en menos líneas y más rápido. Y te va a doler en el orgullo ;).

5 ideas sobre “A vueltas con el nombre”

Los comentarios están cerrados.