मुझे पता है कि आप कर सकते हैं ifconfig | grep inet
, लेकिन यह आपको कई आईपीवी 4 पते दिखाता है। मैं SSHing एट अल के लिए विशिष्ट एक कैसे प्राप्त करूं?
मुझे पता है कि आप कर सकते हैं ifconfig | grep inet
, लेकिन यह आपको कई आईपीवी 4 पते दिखाता है। मैं SSHing एट अल के लिए विशिष्ट एक कैसे प्राप्त करूं?
जवाबों:
ipconfig getifaddr en1
वायरलेस के लिए, या ipconfig getifaddr en0
ईथरनेट के लिए उपयोग करें ।
अपडेट :
ipconfig getifaddr en0
वाईफ़ाई इंटरफ़ेस के लिए डिफ़ॉल्ट है।
ifconfig
इंटरफेस के सभी और उनके आईपी
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
निम्नलिखित मेरे लिए 10.8 और 10.10 योसमाइट पर काम करता है।
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
यदि आप पाते हैं कि उपरोक्त आपको एक से अधिक उत्तर देता है, तो निम्नलिखित को एक स्क्रिप्ट में सहेजें, और इसके बजाय इसे चलाएं
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
बस curl ifconfig.me
टर्मिनल में टाइप करें ।
ipconfig getifaddr en0
स्थानीय आईपी के लिए है।
आप निम्न कार्य कर सकते हैं:
टाइप ifconfig
या ifconfig -a
। यह आदेश आपको उनके आईपी और मैक पते (बाद में केवल लागू होने पर) के साथ इंटरफेस की सूची दिखाता है। आप केवल किसी विशेष इंटरफ़ेस के विन्यास के लिए ifconfig en0
या टाइप कर सकते हैं ifconfig en1
(जैसा कि किसी ने उनके उत्तर में कहा था, en0 आमतौर पर वायर्ड ईथरनेट है जबकि en1 वाईफाई इंटरफ़ेस है)।
एक विकल्प के रूप में, netstat -i
सभी इंटरफेस को सूचीबद्ध करेगा और आपको आईपी पते दिखाएगा जो आपने उनमें से प्रत्येक को सौंपा है।
आमतौर पर, जब आपके पास एक बॉक्स पर एसएसएच डेमॉन चल रहा होता है, तो यह सभी उपलब्ध इंटरफेस पर सुनेंगे, अर्थात। आप SSH के माध्यम से उस मशीन से कनेक्ट करने के लिए अपने मशीन पर कॉन्फ़िगर किए गए किसी भी आईपी पते का उपयोग कर सकते हैं (यह, जाहिर है, फ़ायरवॉल नियमों के अधीन)। यदि आप OS को प्राथमिक इंटरफ़ेस और प्राथमिक IP पता कहते हैं, तो आप scutil
इस तरह से कमांड का उपयोग कर सकते हैं :
MacBook:~ scutil
> show State:/Network/Global/IPv4
<dictionary> {
PrimaryInterface : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 10.103.4.1
}
> show State:/Network/Interface/en0/IPv4
<dictionary> {
Addresses : <array> {
0 : 10.103.4.234
}
BroadcastAddresses : <array> {
0 : 10.103.4.255
}
SubnetMasks : <array> {
0 : 255.255.255.0
}
}
कृपया ध्यान दें, कि ऊपर, भले ही एक कमांड-लाइन कमांड है, इंटरेक्टिव भी है (इसलिए आप चलाते हैं scutil
और फिर उसमें अपनी कमांड दर्ज करते हैं)। पहला show
कमांड आपको ओएस के लिए प्राथमिक इंटरफ़ेस का नाम बताता है (यानी यह आपके सिस्टम वरीयता / नेटवर्क वरीयताएँ विंडो में सूची के शीर्ष पर होगा), साथ ही आपके डिफ़ॉल्ट राउटर का आईपी पता भी। दूसरा show
कमांड State:/Network/Interface/<ifname>/IPv4
तर्क देता है (इस मामले में en0
) , और आपको इसे निर्दिष्ट आईपी पते देता है। आप पते के सरणी में पते की तलाश कर रहे हैं, अन्य दो प्रविष्टियाँ प्रसारण पते और नेटमाक्स हैं।
आशा है कि मदद करता है, लेकिन अगर कुछ भी स्पष्ट नहीं है, मुझे बताएं।
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
इंटरनेट का सामना करने वाले आपके कंप्यूटर का आईपी पता प्राप्त करने के लिए, यहाँ एक कार्य रसीद है:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
यह तब भी काम करता है जब आपके पास कई इंटरफेस सक्रिय होते हैं, तब भी जब आपके पास इंटरफेस होता है तो आपको पता नहीं होता है कि वास्तव में डिफ़ॉल्ट गेटवे कौन सा है।
192.168.0.*)
इंटरनेट के संपर्क में है, न कि बाहरी एक।
netstat -nr | grep default
?
सिर्फ रिकॉर्ड के लिए, आप निम्नलिखित सामग्री के साथ एक बाश स्क्रिप्ट बना सकते हैं जो आपको अपना बाहरी आईपी पता देती है
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
से macOS का हिस्सा नहीं है और इसे गैर-Apple स्रोत से इंस्टॉल करने की आवश्यकता है।
curl -s http://ipecho.net/plain; echo