Mam kilka maszyn wirtualnych z systemem Linux z mostkowanymi interfejsami i chciałbym, aby adres IP maszyny pojawiał się po uruchomieniu komputera (podczas logowania, gdzie zwykle pokazuje wydanie i jądro).
Z tego, co mogę powiedzieć, wiadomość została odebrana z / etc / Issues, ale nie jestem pewien, jak i kiedy do niej napisać.
linux
centos
virtual-machines
Bruno Lopes
źródło
źródło
Odpowiedzi:
To tylko plik tekstowy ... piszesz do niego w taki sam sposób, jak wysyłasz tekst do pliku za pomocą dowolnego innego skryptu powłoki. Coś takiego zastąpiłoby problem / etc / tylko twoim adresem IP:
Oczywiście możesz uczynić to arbitralnie bardziej złożonym, w zależności od tego, jakie informacje chcesz w swoim
/etc/issue
pliku.Możesz zapisać do tego pliku w lokalnym odpowiedniku /etc/rc.d/rc.local (który zwykle wykonuje się po wszystkich innych skryptach startowych).
źródło
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
jest narzędziem, którego powinieneś używać do tego rodzaju rzeczy.ifconfig
jest technicznie tylko dla kompatybilności.W CentOS 7 i Debian 8 (i może także w innych), wystarczy dołączyć następującą linię do
/etc/issue
i to rozwiąże adres IPv4 urządzenia. Jeśli masz wiele interfejsów sieciowych i chcesz wybrać jeden konkretny, możesz go określić za pomocą
Sprawdź
man getty
listę obsługiwanych sekwencji specjalnych w twojej dystrybucji.źródło
Ten skrypt doda / usunie adresy IP do / z
/etc/issue
pliku w razie potrzeby:Jeśli używasz dystrybucji opartej na Debianie, najlepiej umieścić skrypt w następujących lokalizacjach:
W ten sposób skrypty są wykonywane za każdym razem, gdy pojawia się lub znika interfejs. Umieszczenie go
/etc/rc.d/rc.local
ma tę wadę, że zostanie wykonane tylko raz podczas uruchamiania.źródło
/sbin/if{up,down}-local
. (Jeśli istnieje, jest nazywany przez/etc/sysconfig/network-scripts/ip{up,down}-post
.)--all-ip-addresses
wyprowadza również „publiczne” adresy IP. Może coś w rodzaju „adresów IP wszystkich zewnętrznych interfejsów tego hosta:” ma większy sens.możesz to napisać raz. niestety nie ma sekwencji getty, aby pokazać adres IP eth0, ale istnieje sekwencja ucieczki, której można użyć w / etc / issue, aby wyświetlić nazwę hosta: \ n
zawsze możesz statycznie ustawić adres IP komputera w / etc / issue, pisząc go bezpośrednio do pliku. strzeż się, że plik /etc/issue.net jest używany do zdalnego logowania, więc możesz go również edytować.
tak czy inaczej, po pracy w oknie terminala stracisz ekran początkowy i informacje o adresie IP / hosta. najlepszym sposobem jest ustawienie nazwy hosta w wierszu polecenia (większość dystrybucji Linuksa robi to) za pomocą \ h lub \ H lub ponownie, statycznie ustawiając adres IP, o którym wiesz, że jest ustawiony na hoście w zmiennej PS1, możesz ustawić zmienną PS1 w / etc / profil w większości dystrybucji Linuksa.
źródło
Ogromne podziękowania dla @larsks za rozpoczęcie pracy. Odkryłem, że miałem problem z ukończeniem skryptu, zanim był potrzebny, więc mój plik problemu był zawsze pusty. Dodałem więc 1-sekundową pauzę i zapętliłem. Tak naprawdę nie jestem skrypciarzem, więc jeśli jest na to lepszy sposób, proszę dać mi znać. Dodałem a,
COUNT
aby upewnić się, że nie zapętli się wiecznie.Umieściłem ten skrypt w
/etc/network/if-up.d/
.źródło
Systemd sprawia, że jest to stosunkowo łatwe.
systemctl edit getty@
z treściami takimi jak:Następnie
systemctl daemon-reload && systemctl restart getty@tty1
źródło
Dla każdego lądującego tutaj, który używa Ubuntu 19.04, skończyłem z odpowiedzią @ powpow.
Utworzyłem plik:
/etc/network/if-up.d/update-issue
o następującej treści:Następnie oznaczyłem plik jako wykonywalny:
chmod 0755 /etc/network/if-up.d/update-issue
Działa świetnie!
źródło