¿Cómo puedo mostrar la dirección IP de eth0 en la pantalla de inicio de sesión en Precise Server?

23

El servidor que administro, lo suficientemente inconveniente, tiene una dirección IP dinámica asignada por DHCP. Sin embargo, el contrapeso conveniente es que está configurado a unos dos pies de donde estoy sentado. Sé cómo editar / etc / issue para mostrar diferentes valores antes de que la solicitud de inicio de sesión se entregue a la pantalla, pero me gustaría saber si es posible que / etc / issue muestre la dirección IP actual de eth0 (reevaluado en el momento del arranque) para que pueda verlo y luego iniciar sesión sin tener que iniciar sesión para ejecutar ifconfig.

ssonicblue
fuente
¿Se puede usar conky en la pantalla de inicio de sesión? Si es así, podría tener a mano todo tipo de información.
dibs

Respuestas:

27

A partir de Debian 8 / jessie, puede usar los caracteres \4y \6escape para generar las direcciones IPv4 e IPv6. Entonces el /etc/issuearchivo:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Saldría algo como lo siguiente en la consola de inicio de sesión:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Me imagino que Ubuntu proporcionaría una funcionalidad similar (al menos en versiones más recientes)

jerrykan
fuente
Esto funcionó para mí en Ubuntu 16.04 LTS, la respuesta marcada como correcta no lo hizo, probablemente un problema con el comentario grep, en cualquier caso, gracias por publicar esto.
Rastreador1
Todavía funciona en Debian 9 :)
borekon
12

/etc/issuedesafortunadamente es un texto plano, tiene algunas opciones que puede agregar (ver man agetty) pero no la dirección IP de eth0.

Si pones esto en /etc/rc.local:

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP" > /etc/issue

Entonces verás algo como esto:

eth0: 192.168.0.2
myServer login:
Alex R
fuente
3
Tenga en cuenta que cualquier persona que ejecute esto, sobrescribirá el contenido de / etc / issue. Puede agregar pasos para seleccionar las líneas "eth *" anteriores y luego agregarlas.
Rebs
1

Sobre la base de la respuesta de Alex y el comentario de Rebs, esto es lo que tengo para mi /etc/rc.localarchivo (solo líneas relevantes):

PRE_MSG="Ubuntu 14.04.3 LTS" # this is from the original /etc/issue

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

IP_MSG="Server IP Address:"

printf "%s %s %s\n\n%s %s\n\n" "$PRE_MSG" '\n' '\l' "$IP_MSG" "$IP" > "/etc/issue"

El printfcomando hace la magia. Desafortunadamente, poner el '\n'y '\l'dentro de la cadena de formato terminó reemplazando el primero con el nuevo carácter de línea y el /etc/issuearchivo estaba en mal estado.

En resumen, estas 4 líneas mantienen la información original mostrada por /etc/issuearchivo y agregan el Server IP Address:mensaje.

Y como dijo Rebs, tenga en cuenta que cada vez que reinicie el servidor, este script anulará el /etc/issuearchivo, así que tal vez intente dentro de un script diferente y en un archivo diferente y una vez que esté funcionando, transfiera los cambios ...

Buena suerte y feliz BASHing :)

nurchi
fuente
0

Con systemd puedes hacer systemctl edit getty@algo como:

[Service]
ExecStartPre=-/bin/bash -c '[ ! -f /etc/.issue.orig ] && cp /etc/issue /etc/.issue.orig; int=`ls /sys/class/net|grep enp|head -1`; sed -r "s/\\\\\\n/[\\\\\\4\{$$int\}]/" < /etc/.issue.orig > /etc/issue'

Luego systemctl daemon-reload && systemctl restart getty@tty1

h0tw1r3
fuente
0

Para Ubuntu 19.04, seguí estos pasos:

Creé el archivo: /etc/network/if-up.d/update-issuecon los siguientes contenidos:

#!/bin/sh
PREFIX="Ubuntu 19.04 - dev"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n | head -1 | tr "\n" " ")
echo "$PREFIX\n\nIP: $IPADDRS\n" > /etc/issue

Luego marqué el archivo como ejecutable: chmod 0755 /etc/network/if-up.d/update-issue

¡Funciona genial!

Steve McDonald
fuente
0

Sobre la base de las respuestas de Nurchi, Alex y Steve y el comentario de Reb,

Lo siguiente eliminará la antigua IP y agregará cualquier dirección IP no local (127). Mi servidor es una VM y no tiene eth0. Prueba en Ubuntu 18.04

Colocar en /etc/network/if-up.d/update-issue

#!/bin/sh
MSG=$(cat /etc/issue | grep -v IP)
IP=$(/sbin/ifconfig | grep 'inet' | grep -v '127' | cut -d: -f2 | awk '{ print $2 }')
printf "%s\n%s\n\n" "$MSG" "IP: $IP" > /etc/issue

Luego chmod 0755 /etc/network/if-up.d/update-issue

La única diferencia entre mi respuesta y la de Steve es la adición de las líneas grep para eliminar la línea IP, capturar el mensaje y leerlo junto con la IP nueva / actualizada

agrath
fuente