Eth0 के लिए IP पता दिखाने के लिए सेटअप / etc / मुद्दों को कैसे करें


12

मुझे ब्राइडेड इंटरफेस के साथ लाइनक्स वर्चुअल मशीनों की एक जोड़ी मिली है, और मैं मशीन बूट (लॉगिन में, जहां यह आमतौर पर रिलीज और कर्नेल दिखाता है) के बाद दिखाने के लिए मशीन का आईपी पता चाहूंगा।

मैं जो बता सकता हूं वह संदेश / / / मुद्दों से उठाया गया है, लेकिन मुझे यकीन नहीं है कि इसे कैसे और कब लिखना है।


हे ब्रूनो क्या आप पाब्लो के स्वीकृत उत्तर को बदल सकते हैं? उनका जवाब वाकई शानदार है। इसके लिए दस्तावेज खोजना बहुत कठिन है और उसका जवाब बहुत ही पूरा है।
पीटर सेना

जवाबों:


13

यह सिर्फ एक पाठ फ़ाइल है ... आप इसे उसी तरह से लिखते हैं जैसे आप किसी अन्य शेल स्क्रिप्ट के साथ पाठ को फ़ाइल भेजते हैं। कुछ इस तरह से आपके आईपी पते के साथ / etc / समस्या को बदल देगा:

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

जाहिर है आप अपनी /etc/issueफ़ाइल में क्या जानकारी चाहते हैं, इस पर निर्भर करते हुए, आप इसे मनमाने ढंग से अधिक जटिल बना सकते हैं ।

आप इस फाइल को अपने स्थानीय समकक्ष /etc/rc.d/rc.local (जो आमतौर पर अन्य सभी स्टार्टअप स्क्रिप्ट के बाद निष्पादित करते हैं) में लिख सकते हैं।


5
कहने के लिए थोड़ा और अधिक Linuxyip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
सोरपिगल

मुझे यकीन नहीं है कि यह कैसे अधिक चमकदार है, लेकिन हां, यह भी काम करता है।
लार्क्स

1
@larks: यह अधिक चमकदार है क्योंकि लाइनक्स पर ipउपकरण है जिसे आप इस तरह की चीज़ के लिए उपयोग करने वाले हैं। ifconfigतकनीकी रूप से सिर्फ अनुकूलता के लिए है।
सोरपिगल

34

पर CentOS 7 और डेबियन 8 (और शायद अन्य अच्छी तरह के रूप में), बस में निम्नलिखित पंक्ति संलग्न/etc/issue

My IP address: \4

और वह मशीन के IPv4 पते को हल कर देगा। यदि आपके पास कई नेटवर्क इंटरफेस हैं और आप एक विशिष्ट चुनना चाहते हैं, तो आप इसे निर्दिष्ट कर सकते हैं

My IP address: \4{eth0}

man gettyअपने वितरण पर समर्थित बच अनुक्रमों की सूची के लिए जाँच करें ।


इसके अलावा CentOS 8 :)
Orsiris de Jong

यह पूरी तरह से मेरे Centos 7 vm पर काम करता है।
केविन मेसन

6

यह स्क्रिप्ट /etc/issueआवश्यकतानुसार फ़ाइल से / में आईपी पते जोड़ / हटा देगी :

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

यदि आप डेबियन-आधारित डिस्ट्रो का उपयोग कर रहे हैं, तो इन स्थानों पर स्क्रिप्ट रखना सबसे अच्छा है:

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

इस तरह से स्क्रिप्ट को निष्पादित किया जाता है हर बार एक इंटरफ़ेस आता है या नीचे जाता है। इसे रखने से /etc/rc.d/rc.localबूटअप के दौरान केवल एक बार निष्पादित मधुमक्खी के नुकसान का सामना करना पड़ता है।


3
Red Hat / CentOS / etc में खोज करने वाले किसी भी व्यक्ति के लिए यह स्क्रिप्ट होगी /sbin/if{up,down}-local। (यदि यह मौजूद है, तो इसे कहा जाता है /etc/sysconfig/network-scripts/ip{up,down}-post।)
हारून कोपले

@powpow: "स्थानीय आईपी पते" क्यों? --all-ip-addressesआउटपुट भी "सार्वजनिक" आईपी पते। शायद "इस मेजबान के सभी बाहरी इंटरफेस के आईपी पते:" कुछ अधिक समझ में आता है।
22

4

आप इसे एक बार लिख सकते हैं। दुर्भाग्य से eth0 के आईपी पते को दिखाने के लिए कोई गेट्टी एस्केप अनुक्रम नहीं है, लेकिन एक एस्केप अनुक्रम है जिसे आप होस्टनाम दिखाने के लिए / etc / इश्यू में उपयोग कर सकते हैं: \ n

आप हमेशा मशीन के आईपी को / etc / इश्यू में सीधे फ़ाइल में लिखकर सेट कर सकते हैं। सावधान रहें कि फ़ाइल /etc/issue.net का उपयोग दूरस्थ लॉगिन के लिए किया जाता है ताकि आप उसे भी संपादित कर सकें।

वैसे भी, टर्मिनल विंडो में काम करने के बाद आप प्रारंभिक स्क्रीन और इसके साथ आईपी / होस्ट एड्रेस की जानकारी को ढीला कर देंगे। सबसे अच्छा तरीका है कि hostname को प्रॉम्प्ट में सेट करें (सबसे linux distros do) का उपयोग करके \ h या \ H या फिर से, स्टेटिक रूप से आपके द्वारा ज्ञात IP पते को PS1 वैरिएबल में होस्ट पर सेट किया जाता है जिसे आप PS1 वेरिएबल / etc / में सेट कर सकते हैं। अधिकांश linux distros पर प्रोफाइल।


1
यह सिर्फ यह जानना है कि वीएम को बूट करने के बाद किस आईपी से कनेक्ट करना है, इसलिए इसे लार्क्स के रूप में सेट करना पर्याप्त है :)
ब्रूनो लोप्स

1

शुरुआत के लिए @ लार्क्स के लिए बहुत धन्यवाद। मैंने पाया कि मुझे स्क्रिप्ट पूरी करने से पहले परेशानी हो रही थी, इसलिए मेरी जरूरत की फाइल हमेशा खाली थी। इसलिए मैंने 1 सेकंड का ठहराव जोड़ा और लूप किया। मैं वास्तव में बैश नहीं हूं, इसलिए यदि ऐसा करने का कोई बेहतर तरीका है तो कृपया मुझे बताएं। मैंने COUNTयह सुनिश्चित करने के लिए एक जोड़ा कि यह हमेशा के लिए लूप न करे।

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

मैंने इस स्क्रिप्ट को अंदर रखा /etc/network/if-up.d/


1

Systemd इसे अपेक्षाकृत आसान बनाता है। systemctl edit getty@सामग्री की तरह:

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

फिर systemctl daemon-reload && systemctl restart getty@tty1


0

उबंटू 19.04 का उपयोग करने वाले किसी भी व्यक्ति के लिए, मैंने @ powpow के उत्तर को अपनाना समाप्त कर दिया।

मैंने फ़ाइल बनाई: /etc/network/if-up.d/update-issueनिम्नलिखित सामग्री के साथ:

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

मैंने तब फ़ाइल को निष्पादन योग्य के रूप में चिह्नित किया: chmod 0755 /etc/network/if-up.d/update-issue

बहुत अच्छा काम करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.