Tengo un par de máquinas virtuales Linux con interfaces en puente, y me gustaría que la dirección IP de la máquina se muestre después del arranque de la máquina (en el inicio de sesión, donde generalmente muestra la versión y el núcleo).
Por lo que puedo decir, el mensaje se extrae de / etc / issues, pero no estoy seguro de cómo y cuándo escribirlo.
linux
centos
virtual-machines
Bruno Lopes
fuente
fuente
Respuestas:
Es solo un archivo de texto ... lo escribes de la misma manera que enviarías texto a un archivo con cualquier otro script de shell. Algo como esto reemplazaría el problema / etc / con solo su dirección IP:
Obviamente, puede hacer esto arbitrariamente más complejo, dependiendo de la información que desee en su
/etc/issue
archivo.Puede escribir en este archivo en su equivalente local de /etc/rc.d/rc.local (que normalmente se ejecuta después de todos los otros scripts de inicio).
fuente
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
es la herramienta que se supone que debes usar para este tipo de cosas.ifconfig
es técnicamente solo por compatibilidad.En CentOS 7 y Debian 8 (y quizás también en otros), solo agregue la siguiente línea a
/etc/issue
y eso se resolverá en la dirección IPv4 de la máquina. Si tiene varias interfaces de red y desea elegir una específica, puede especificarla con
Busque
man getty
una lista de secuencias de escape compatibles en su distribución.fuente
Este script agregará / eliminará direcciones IP al / del
/etc/issue
archivo según sea necesario:Si está utilizando una distribución basada en Debian, es mejor colocar el script en estas ubicaciones:
De esta forma, los scripts se ejecutan cada vez que una interfaz se activa o desactiva. Colocarlo
/etc/rc.d/rc.local
tiene la desventaja de ser ejecutado solo una vez durante el arranque.fuente
/sbin/if{up,down}-local
. (Si existe, se llama por/etc/sysconfig/network-scripts/ip{up,down}-post
.)--all-ip-addresses
también genera direcciones IP "públicas". Tal vez algo como "direcciones IP de todas las interfaces externas de este host" tenga más sentido.Puedes escribirlo una vez. desafortunadamente no hay una secuencia de escape getty para mostrar la dirección IP de eth0 pero hay una secuencia de escape que puede usar en / etc / issue para mostrar el nombre de host: \ n
siempre puede establecer estáticamente la ip de la máquina en / etc / issue escribiéndola directamente en el archivo. tenga en cuenta que el archivo /etc/issue.net se utiliza para inicios de sesión remotos, por lo que es posible que también desee editarlo.
de todos modos, después de trabajar en la ventana del terminal, perderá la pantalla inicial y la información de la dirección IP / host con ella. La mejor manera es establecer el nombre de host en el indicador (la mayoría de las distribuciones de Linux lo hacen) usando \ ho \ H o de nuevo, estableciendo estáticamente la dirección IP que sabes que está configurada en el host en la variable PS1, puedes configurar la variable PS1 en / etc / perfil en la mayoría de las distribuciones de Linux.
fuente
Muchas gracias a @larsks por comenzar. Descubrí que tenía problemas para completar el script antes de que fuera necesario, por lo que mi archivo de problema siempre estaba en blanco. Entonces agregué una pausa de 1 segundo y realicé un bucle. Realmente no soy un bash scripter, así que si hay una mejor manera de hacer esto, hágamelo saber. Agregué una
COUNT
para asegurarme de que no se repitiera para siempre.Puse este script en
/etc/network/if-up.d/
.fuente
Systemd hace esto relativamente fácil.
systemctl edit getty@
con contenido como:Luego
systemctl daemon-reload && systemctl restart getty@tty1
fuente
Para cualquiera que aterrice aquí que use Ubuntu 19.04, terminé adoptando la respuesta de @ powpow.
Creé el archivo:
/etc/network/if-up.d/update-issue
con los siguientes contenidos:Luego marqué el archivo como ejecutable:
chmod 0755 /etc/network/if-up.d/update-issue
¡Funciona genial!
fuente