Comment puis-je afficher l'adresse IP d'eth0 sur l'écran de connexion sur Precise Server?

23

Le serveur que j'administre, assez gênant, a une adresse IP dynamique attribuée par DHCP. Le contrepoids pratique, cependant, est qu'il se trouve à environ deux pieds de l'endroit où je m'assois. Je sais comment modifier / etc / issue pour afficher différentes valeurs avant que l'invite de connexion ne soit envoyée à l'affichage, mais je voudrais savoir s'il est possible pour / etc / issue d'afficher l'adresse IP actuelle de eth0 (réévaluée au moment du démarrage) pour que je puisse le voir puis ssh sans avoir à me connecter pour exécuter ifconfig.

ssonicblue
la source
Peut-on utiliser conky dans l'écran de connexion? Si c'est le cas, vous pourriez mettre toutes sortes d'informations à portée de main.
dibs

Réponses:

27

Depuis Debian 8 / Jessie, vous pouvez utiliser les caractères d'échappement \4et \6pour sortir les adresses IPv4 et IPv6. Donc le /etc/issuefichier:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Produirait quelque chose comme ce qui suit sur la console de connexion:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

J'imagine qu'Ubuntu fournirait des fonctionnalités similaires (au moins dans les versions plus récentes)

jerrykan
la source
Cela a fonctionné pour moi dans Ubuntu 16.04 LTS, la réponse marquée comme correcte n'a probablement pas posé de problème avec le commentaire grep, en tout cas, merci d'avoir posté cela.
Tracker1
Cela fonctionne toujours sur Debian 9 :)
borekon
12

/etc/issueest malheureusement un texte brut, il a quelques options que vous pouvez y ajouter (voir man agetty) mais pas l'adresse IP de eth0.

Si vous mettez ceci dans /etc/rc.local:

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

Ensuite, vous verrez quelque chose comme ceci:

eth0: 192.168.0.2
myServer login:
Alex R
la source
3
Veuillez noter que pour toute personne exécutant ceci, cela écrasera le contenu de / etc / issue. Vous pouvez ajouter des étapes pour extraire les lignes "eth *" précédentes, puis les ajouter.
Rebs
1

Sur la base de la réponse d'Alex et du commentaire de Rebs, voici ce que j'ai pour mon /etc/rc.localdossier (uniquement les lignes pertinentes):

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"

La printfcommande fait la magie. Malheureusement, mettre le '\n'et '\l'à l'intérieur de la chaîne de format a fini par remplacer le premier par le nouveau caractère de ligne et le /etc/issuefichier a été foiré.

Bref, ces 4 lignes gardent les informations originales affichées par /etc/issuefichier et ajoutent le Server IP Address:message.

Et comme l'a dit Rebs, gardez à l'esprit que chaque fois que vous redémarrez le serveur, ce script remplacera le /etc/issuefichier, alors peut-être essayez-le dans un script différent et sur un fichier différent et une fois qu'il fonctionne, transférez les modifications sur ...

Bonne chance et bonne BASHing :)

nurchi
la source
0

Avec systemd, vous pouvez faire systemctl edit getty@quelque chose comme:

[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'

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

h0tw1r3
la source
0

Pour Ubuntu 19.04, j'ai suivi ces étapes:

J'ai créé le fichier: /etc/network/if-up.d/update-issueavec le contenu suivant:

#!/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

J'ai ensuite marqué le fichier comme exécutable: chmod 0755 /etc/network/if-up.d/update-issue

Fonctionne très bien!

Steve McDonald
la source
0

S'appuyant sur les réponses de Nurchi, Alex et Steve et le commentaire de Reb,

Ce qui suit récupérera l'ancienne adresse IP et ajoutera toutes les adresses IP non locales (127.). Mon serveur est une machine virtuelle et n'a pas eth0. Test sur Ubuntu 18.04

Placer dans /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

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

La seule différence entre ma réponse et celle de Steve est l'ajout des lignes grep pour supprimer la ligne IP, capturer le message et le lire avec l'IP nouvelle / mise à jour

agrath
la source