Jak wyświetlić adres IP eth0 na ekranie logowania na serwerze Precise Server?

23

Serwer, którym administruję, niewygodnie, ma dynamiczny adres IP przypisany przez DHCP. Jednak wygodną przeciwwagą jest to, że zdarza się, że jest ustawiona około dwóch stóp od miejsca, w którym siedzę. Wiem, jak edytować / etc / issue, aby pokazać różne wartości przed wyświetleniem monitu logowania, ale chciałbym wiedzieć, czy jest możliwe, aby / etc / issue wyświetlał bieżący adres IP eth0 (ponownie ocenione w czasie uruchamiania), dzięki czemu mogę to zobaczyć, a następnie ssh się bez konieczności logowania, aby uruchomić ifconfig.

ssonicblue
źródło
Czy można użyć Conky na ekranie logowania? Jeśli tak, możesz zrobić użyteczne informacje.
dibs

Odpowiedzi:

27

Od wersji Debian 8 / jessie możesz używać znaków \4i \6znaków ucieczki do wyświetlania adresów IPv4 i IPv6. Więc w /etc/issuepliku:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

W konsoli logowania wyświetliłby się coś takiego:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Wydaje mi się, że Ubuntu zapewni podobną funkcjonalność (przynajmniej w nowszych wersjach)

jerrykan
źródło
Działa to dla mnie w Ubuntu 16.04 LTS, odpowiedź oznaczona jako poprawna nie, prawdopodobnie problem z komentarzem grep, w każdym razie dzięki za opublikowanie tego.
Tracker1
Nadal działa na Debianie 9 :)
borekon
12

/etc/issuejest niestety zwykłym tekstem, ma kilka opcji, które możesz do niego dodać (patrz man agetty), ale nie ma adresu IP eth0.

Jeśli wstawisz to /etc/rc.local:

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

Wtedy zobaczysz coś takiego:

eth0: 192.168.0.2
myServer login:
Alex R.
źródło
3
Uwaga: dla każdego, kto to uruchomi, spowoduje to zastąpienie zawartości / etc / issue. Możesz dodać kroki, aby wyodrębnić poprzednie wiersze „eth *”, a następnie dołączyć je.
Rebs
1

Opierając się na odpowiedzi Alexa i komentarzu Rebsa, oto, co mam do mojego /etc/rc.localpliku (tylko odpowiednie linie):

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"

printfKomenda robi magię. Niestety wstawienie '\n'i '\l'wewnątrz łańcucha formatu zakończyło się zastąpieniem pierwszego znakiem nowej linii i /etc/issueplik został zawalony.

Krótko mówiąc, te 4 wiersze utrzymują oryginalne informacje wyświetlane w /etc/issuepliku i dodają Server IP Address:wiadomość.

I jak powiedział Rebs, pamiętaj, że za każdym razem, gdy restartujesz serwer, ten skrypt zastąpi /etc/issueplik, więc może wypróbuj go w innym skrypcie i na innym pliku, a gdy już zadziała , przenieś zmiany ...

Powodzenia i szczęśliwego BASHING :)

Nurchi
źródło
0

Z systemd możesz zrobić systemctl edit getty@coś takiego:

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

Następnie systemctl daemon-reload && systemctl restart getty@tty1

h0tw1r3
źródło
0

W przypadku Ubuntu 19.04 wykonałem następujące kroki:

Utworzyłem plik: /etc/network/if-up.d/update-issueo następującej treści:

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

Następnie oznaczyłem plik jako wykonywalny: chmod 0755 /etc/network/if-up.d/update-issue

Działa świetnie!

Steve McDonald
źródło
0

Opierając się na odpowiedziach Nurchi, Alexa i Steve'a oraz komentarzu Reba,

Poniższe polecenie zastąpi stary adres IP i doda wszelkie nielokalne (127.) adresy IP. Mój serwer jest maszyną wirtualną i nie ma eth0. Testowanie na Ubuntu 18.04

Umieścić w /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

Następnie chmod 0755 /etc/network/if-up.d/update-issue

Jedyną różnicą między moją odpowiedzią a odpowiedzią Steve'a jest dodanie linii grep w celu usunięcia linii IP, przechwycenia wiadomości i przeczytania jej wraz z nowym / zaktualizowanym adresem IP

agrath
źródło