Me gustaría mostrarte un truco de magia. Vaya a su indicador de shell favorito y escriba:
[skipworthy@showme ~]$ hostname
showme
El hostname
El comando se proporciona en Linux para consultar "quién" cree que es la computadora. ¿Cómo sucedió eso? ¿Cómo sabe mi computadora cómo se llama? Te muestro cómo se hace el truco en un momento, pero primero, déjame mostrarte otro:
[root@showme skipworthy]# hostnamectl set-hostname spot
[root@showme skipworthy]# hostname
spot
Gracias una vez más a systemd
(que se implementa en la mayoría, pero no en todas, las distribuciones modernas de GNU/Linux, incluidos los sistemas basados en Red Hat), cambiar el nombre de su computadora con Linux es bastante fácil. (Por cierto, el nombre en el indicador cambiará con el próximo inicio de sesión). He discutido cómo el DNS nos permite identificar una computadora en la red asignando un nombre a una dirección IP. Esto está al otro lado de eso. Aquí está viendo cómo la máquina se identifica a sí misma, lo cual es importante para que cosas como la autenticación funcionen correctamente si la computadora es parte de un dominio.
[ También puede disfrutar leyendo:10 comandos básicos de Linux que debe conocer ]
Después de enumerar el hardware y cargar los controladores en el arranque, en una distribución basada en systemd, el gestor de arranque carga y ejecuta systemd
guiones. Cerca del comienzo de este proceso es cuando se establece el nombre de host:
2.653601] rtc_cmos 00:00: setting system clock to 2020-11-17 19:36:44 UTC (
1605641804)
[ 2.654885] Freeing unused kernel memory: 1980k freed
[ 2.655179] Write protecting the kernel read-only data: 12288k
[ 2.657125] Freeing unused kernel memory: 416k freed
[ 2.658710] Freeing unused kernel memory: 552k freed
[ 2.663220] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663530] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663543] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.667147] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SEL
INUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +
XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 2.667189] systemd[1]: Detected virtualization kvm.
[ 2.667200] systemd[1]: Detected architecture x86-64.
[ 2.667204] systemd[1]: Running in initial RAM disk.
[ 2.667250] systemd[1]: Set hostname to <showme>.
[ 2.701020] random: systemd: uninitialized urandom read (16 bytes read)
Aparte de eso, en sistemas donde systemd
no administra el espacio de usuario, puede configurar el nombre de host en un par de archivos. Estos archivos son en realidad donde systemd
busca esta información y la registra cuando usa el hostnamectl
dominio. El hostname
y hostnamectl
los comandos en realidad usan llamadas al sistema a nivel del kernel llamadas gethostname
, getdomainname
y algunas funciones provistas por el resolver
llamada del sistema. Estos han existido desde muy temprano en la historia del kernel de Linux. Estas son las mismas llamadas al sistema utilizadas por el shell para completar el nombre de la máquina en el aviso, entre otros lugares.
Los dos archivos que verá residen en /etc
, que recordará es la ubicación predeterminada para la mayoría de los archivos utilizados para configurar y administrar un sistema Linux. El primero se llama, apropiadamente, /etc/hostname
:
[root@showme skipworthy]# cat /etc/hostname
showme
Bastante simple:cuando invocas hostname
desde el indicador de shell, Linux mira el /etc/hostname
archivo para la respuesta. También puede usar el hostname
comando para cambiar el nombre de la computadora, pero en los kernels administrados por systemd, generalmente se prefiere usar el hostnamectl
comando en su lugar.
El otro archivo es /etc/hosts
, que es donde Linux busca traducir direcciones IP a nombres antes de verificar /etc/resolv.conf
para información de DNS. Aquí está el /etc/hosts
archivo:
[skipworthy@showme ~]$ cat /etc/hosts
127.0.0.1 showme.forest showme
192.168.11.111 showme.forest showme
192.168.0.200 Jupiter
192.168.0.100 uhura
El primer par de líneas es lo que quieres ver. Tenga en cuenta que el formato es:
ip address fqdn alias
Tienes la dirección IP , luego el hostname.domainname (o Nombre de dominio completamente calificado ), seguido del nombre de host . También puede agregar alias o alias de dominio adicionales si se usan en el entorno.
Usa el -f
cambie cuando invoque el hostname
comando para ver el FQDN de su host:
[skipworthy@showme ~]$ hostname -f
showme.forest
[ Descargar ahora:una guía para administradores de sistemas sobre secuencias de comandos Bash. ]
El hostnamectl
El comando tiene otros interruptores y banderas interesantes y útiles:puede establecer el tipo de entorno (desarrollo frente a producción, por ejemplo) e incluso puede poner notas de ubicación (rack 3, sala 200, por ejemplo). Puede consultarlos y configurarlos de forma remota. Como de costumbre, puedes aprender todo tipo de cosas geniales de las buenas páginas man.