Come posso visualizzare l'indirizzo IP di eth0 nella schermata di accesso su Precise Server?


23

Il server che gestisco, abbastanza inopportuno, ha un indirizzo IP dinamico assegnato da DHCP. Il comodo contrappeso, tuttavia, è che si trova a circa due piedi da dove mi siedo. So come modificare / etc / issue per mostrare valori diversi prima che il prompt di login venga consegnato al display, ma mi piacerebbe sapere se è possibile / etc / issue visualizzare l'attuale indirizzo IP di eth0 (rivalutato al momento dell'avvio) in modo che io possa vederlo e poi ssh in senza dover accedere per eseguire ifconfig.


Conky può essere utilizzato nella schermata di accesso? In tal caso, potresti rendere utili tutte le informazioni.
sal

Risposte:


27

A partire da Debian 8 / jessie puoi usare i caratteri escape \4e \6per generare gli indirizzi IPv4 e IPv6. Quindi il /etc/issuefile:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Avrebbe prodotto qualcosa di simile al seguente nella console di accesso:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Immagino che Ubuntu fornirebbe funzionalità simili (almeno nelle versioni più recenti)


Questo ha funzionato per me in Ubuntu 16.04 LTS, la risposta contrassegnata come corretta no, probabilmente un problema con il commento grep, in ogni caso, grazie per aver pubblicato questo.
Tracker 1

Funziona ancora su Debian 9 :)
borekon

12

/etc/issueè purtroppo un semplice testo, ha alcune opzioni che puoi aggiungere ad esso (vedi man agetty) ma non l'indirizzo IP di eth0.

Se lo metti in /etc/rc.local:

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

Quindi vedrai qualcosa del genere:

eth0: 192.168.0.2
myServer login:

3
Nota per chiunque stia eseguendo questo, questo sovrascriverà il contenuto di / etc / issue. È possibile aggiungere passaggi per estrarre le righe precedenti "eth *" e quindi aggiungerle.
Rebs

1

Basandomi sulla risposta di Alex e sul commento di Rebs, questo è quello che ho per il mio /etc/rc.localfile (solo righe pertinenti):

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"

Il printfcomando fa la magia. Sfortunatamente l'inserimento della stringa di formato '\n'e '\l'all'interno ha finito per sostituire la prima con il carattere di nuova riga e il /etc/issuefile era incasinato.

Per farla breve, queste 4 righe mantengono le informazioni originali visualizzate per /etc/issuefile e aggiungono il Server IP Address:messaggio.

E come ha detto Rebs, tieni presente che ogni volta che riavvii il server, questo script sovrascriverà il /etc/issuefile, quindi forse provalo all'interno di uno script diverso e su un file diverso e una volta che funziona, trasferisci le modifiche su ...

Buona fortuna e felice BASHing :)


0

Con systemd puoi fare systemctl edit getty@qualcosa del tipo:

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

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


0

Per Ubuntu 19.04, ho seguito questi passaggi:

Ho creato il file: /etc/network/if-up.d/update-issuecon i seguenti contenuti:

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

Ho quindi contrassegnato il file come eseguibile: chmod 0755 /etc/network/if-up.d/update-issue

Funziona alla grande!


0

Basandosi su Nurchi, sulle risposte di Alex e Steve e sul commento di Reb,

Di seguito verrà visualizzato il grey out del vecchio IP e verrà aggiunto qualsiasi indirizzo IP non locale (127.). Il mio server è una macchina virtuale e non ha eth0. Test su Ubuntu 18.04

Posizionare in /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

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

L'unica differenza tra la mia risposta e quella di Steve è l'aggiunta delle linee grep per rimuovere la linea IP, acquisire il messaggio e leggerlo insieme al nuovo / aggiornato IP

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.