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.


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)


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:

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 :)


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


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!


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.