/ Etc / sorunları eth0 için IP adresini gösterecek şekilde nasıl kurulur


12

Köprülü arayüzlere sahip birkaç linux sanal makinem var ve makinenin IP adresinin makine önyüklemesinden sonra görünmesini istiyorum (girişte, genellikle sürüm ve çekirdeği gösterir).

Ne söyleyebilirim mesaj / etc / konularından alınır, ama nasıl ve ne zaman yazmak için emin değilim.


Hey Bruno PabloC'nun kabul ettiği cevabı değiştirebilir misin? Cevabı gerçekten harika. Bunun için belgeleri bulmak çok zor ve cevabı çok eksiksiz.
Peter Senna

Yanıtlar:


13

Bu sadece bir metin dosyası ... başka bir kabuk komut dosyasıyla bir dosyaya metin gönderir gibi yazıyorsunuz. Böyle bir şey / etc / problemini sadece ip adresinizle değiştirir:

ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue

Açıkçası bunu, /etc/issuedosyanızda istediğiniz bilgiye bağlı olarak, keyfi olarak daha karmaşık hale getirebilirsiniz .

Bu dosyaya yerel /etc/rc.d/rc.local eşdeğerinde yazabilirsiniz (genellikle diğer tüm başlangıç ​​komut dosyalarından sonra yürütülür).


5
Biraz daha söylemek ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
Linuxy

Bunun nasıl daha linuxy olduğundan emin değilim, ama evet, bu da işe yarıyor.
larsks

1
@larks: Daha linuxy çünkü linux'da ipbu tür şeyler için kullanmanız gereken araç. ifconfigteknik olarak sadece uyumluluk içindir.
Sorpigal

34

On CentOS 7 ve Debian 8 (ve belki diğer sıra), sadece aşağıdaki satırı ekleyin/etc/issue

My IP address: \4

ve bu makinenin IPv4 adresine çözümlenecektir. Birden fazla ağ arabiriminiz varsa ve belirli bir ağ arabirimi seçmek istiyorsanız,

My IP address: \4{eth0}

man gettyDağıtımınızda desteklenen kaçış dizilerinin listesini kontrol edin .


Ayrıca CentOS 8 üzerinde çalışıyor :)
Orsiris de Jong

Bu benim Centos 7 vm mükemmel çalıştı.
Kevin Mason

6

Bu komut dosyası, /etc/issuedosyaya IP adreslerini gerektiği gibi ekler / kaldırır :

#!/bin/sh
PREFIX="Local IP addresses:"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tr "\n" " ")

perl -i -p -0777 -e "s/^$PREFIX[^\n]*\n\n//m; s/$/\n$PREFIX $IPADDRS\n/ if length('$IPADDRS')>6" /etc/issue

Debian tabanlı bir dağıtım kullanıyorsanız, komut dosyasını şu konumlara yerleştirmek en iyisidir:

/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue

Bu şekilde, bir arayüz her çıktığında veya kaybolduğunda komut dosyaları yürütülür. Onu yerleştirme /etc/rc.d/rc.localdezavantajı, açılış sırasında sadece bir kez yürütülür.


3
Arama yapan herkes için Red Hat / CentOS / etc'de bu komut dosyası olurdu /sbin/if{up,down}-local. (Varsa, denir /etc/sysconfig/network-scripts/ip{up,down}-post.)
Aaron Copley

@powpow: Neden "Yerel IP adresleri"? --all-ip-addressesçıktılar ayrıca "genel" IP adresleri. Belki de "bu ana bilgisayarın tüm harici arayüzlerinin IP adresleri" gibi bir şey daha mantıklıdır.
ypid

4

bir kez yazabilirsiniz. ne yazık ki eth0'ın ip adresini göstermek için getty kaçış sırası yok ancak ana bilgisayar adını göstermek için / etc / issue içinde kullanabileceğiniz bir kaçış sırası var: \ n

Makinenin ipini her zaman doğrudan / etc / issue içinde statik olarak doğrudan dosyaya yazarak ayarlayabilirsiniz. /etc/issue.net dosyasının uzak girişler için kullanıldığından emin olun, böylece bunu da düzenlemek isteyebilirsiniz.

her neyse, terminal penceresinde çalıştıktan sonra ilk ekranı ve ip / host adres bilgilerini onunla kaybedeceksiniz. En iyi yol, \ h veya \ H veya tekrar kullanarak bilgi isteminde ana bilgisayar adını ayarlamaktır (çoğu linux dağıtımları) veya PS1 değişkeninde ana bilgisayarda ayarlanmış olduğunu bildiğiniz ip adresini / etc / profil çoğu linux dağıtımında.


1
Bu sadece vm önyükleme sonra hangi IP bağlanacağını bilmek, bu yüzden larsks diyor gibi kurmak yeterlidir :)
Bruno Lopes

1

Başlamanız için @larsks'e çok teşekkürler. Sorun dosyamın her zaman boş olması için komut dosyasının gerekmeden önce tamamlanmasında sorun yaşadığımı fark ettim. Bu yüzden 1 saniyelik bir duraklama ekledim ve döngüye girdim. Gerçekten bir bash scripter değilim, bu yüzden bunu yapmanın daha iyi bir yolu varsa lütfen bana bildirin. COUNTSonsuza kadar dönmediğinden emin olmak için bir ekledim .

#!/bin/sh

COUNT=1

while [ $COUNT -lt 10 ]
do
  echo $COUNT

  COUNT=$((COUNT + 1))
  IP=`ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: `
  if [ -n "$IP" ]; then
    break
  fi 
  sleep 1
done


echo "IP: " $IP | cat > /etc/issue

Bu betiği yerleştirdim /etc/network/if-up.d/.


1

Systemd bunu nispeten kolaylaştırır. systemctl edit getty@içeriği gibi:

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

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


0

Ubuntu 19.04 kullanan buraya inen herkes için @ powpow'un cevabını benimsedim.

Dosyayı /etc/network/if-up.d/update-issueşu içerikle oluşturdum:

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

Daha sonra dosyayı yürütülebilir olarak işaretledim: chmod 0755 /etc/network/if-up.d/update-issue

Harika çalışıyor!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.