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”
jajajaja me encanto el post, y estoy muy de acuerdo con el resumen final 😀
Gabriel, me alegro de que te haya gustado. Era una de esas cosas que, o la contaba en voz alta, o reventaba.
Saludos.
Justo hoy desarrollando un pequeño código que necesita saber el nombre y las direcciones IP del equipo descubrí la opción -I de hostname, la cual hasta ahora desconocía. En tu defensa (y la mía) diré que la opción -I no ha estado siempre ahí sino que es relativamente reciente (al parecer se introdujo en Debian sid en 2010 y la primera estable en llevarlo fue Squeeze).
Saludos.
¡Gracias por la defensa! Ya no sabía que pensar… Alguien tiene que habérselo pasado en grande imaginando las caras de tipos como nosotros, al redescubrir esta opción. La mía era un poema.
Saludos
La moraleja es para enmarcar ! De esos posts que hace que pienses en tus procesos y el día a día, muy bueno Diego ;D