मुझे कमांड लाइन से अपना आईपी पता कैसे पता चलेगा?


159

मुझे पता है कि आप कर सकते हैं ifconfig | grep inet, लेकिन यह आपको कई आईपीवी 4 पते दिखाता है। मैं SSHing एट अल के लिए विशिष्ट एक कैसे प्राप्त करूं?


क्या आप देख रहे हैं अपने मैक आईपी पते नहीं है, लेकिन सार्वजनिक आईपी अपने आईएसपी अपने रूटर की इंटरनेट इंटरफ़ेस के लिए जिम्मेदार ठहराया पता।
dan

जवाबों:


168

ipconfig getifaddr en1वायरलेस के लिए, या ipconfig getifaddr en0ईथरनेट के लिए उपयोग करें ।

अपडेट :

ipconfig getifaddr en0 वाईफ़ाई इंटरफ़ेस के लिए डिफ़ॉल्ट है।


7
यह मेरा आंतरिक (मेरे राउटर को) आईपी एड्रेस (जैसे १ ९ २.१६xx.१. एक्सएक्सएक्स) दिखाता है, न कि बाहरी आईपी एड्रेस। (जैसा कि नीचे दिए गए अन्य जवाबों में से अधिकांश करते हैं।)
श्रीवत्सआर

2
मेरे लिए काम नहीं किया :(
नवीद अब्बास

2
ifconfigइंटरफेस के सभी और उनके आईपी
दिखाता है

4
इको एक्सटर्नल आईपी:curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
grigb

30
यह वर्षों के लिए बदल गया है, 'ipconfig getifaddr en0' वाईफाई इंटरफेस के लिए डिफ़ॉल्ट है
Marek Szmalc

98

निम्नलिखित मेरे लिए 10.8 और 10.10 योसमाइट पर काम करता है।

ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' 

यदि आप पाते हैं कि उपरोक्त आपको एक से अधिक उत्तर देता है, तो निम्नलिखित को एक स्क्रिप्ट में सहेजें, और इसके बजाय इसे चलाएं

ip_address.sh

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

3
मेरी राय में स्वीकृत उत्तर होना चाहिए क्योंकि इसके लिए किसी वायर्ड बनाम वायरलेस विनिर्देश की आवश्यकता नहीं है।
एरिक नोमच

@ ErikNomitch इसके अलावा मुझे 2 इस जवाब के साथ देता है
Zach Lysobey

आह, मैं पीछे हट जाता हूं। @ZachLysobey
एरिक नोमच

यह सबसे अच्छा समग्र दृष्टिकोण है, लेकिन किसी को सही उत्तर पाने के लिए जागने से पहले कभी-कभी थोड़ा और अधिक मनोरंजक करने की आवश्यकता होती है और सही उत्तर भिन्न हो सकते हैं।
uchuugaka

मैंने एक स्क्रिप्ट जोड़ी, जो इस मुद्दे को उम्मीद से संबोधित करना चाहिए .. फ़िजी!
ब्रैड पार्क

43

बस curl ifconfig.meटर्मिनल में टाइप करें ।


1
क्यों होता है पतन? यद्यपि यह एक बाहरी आईपी है, कमांड वैध है और मेरे ssh लॉगिन के लिए काम करता है।
कज़िनकॉकेन

5
यह सार्वजनिक आईपी पता है और मैं क्या देख रहा था। ipconfig getifaddr en0स्थानीय आईपी के लिए है।
एब्रीज

HighSierra पर मुझे इसे SUDO के रूप में चलाना था। इसके अलावा बाहरी आईपी पते को सूचीबद्ध करता है। आंतरिक आईपी पते के लिए ब्रैड पार्क्स
विंसेंट

19

मैंने इसे लगातार आईपी लुकअप के लिए एक .aliases dotfile में स्थापित किया है:

alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"

17

आप निम्न कार्य कर सकते हैं:

टाइप 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) , और आपको इसे निर्दिष्ट आईपी पते देता है। आप पते के सरणी में पते की तलाश कर रहे हैं, अन्य दो प्रविष्टियाँ प्रसारण पते और नेटमाक्स हैं।

आशा है कि मदद करता है, लेकिन अगर कुछ भी स्पष्ट नहीं है, मुझे बताएं।


1
इस उत्तर के लिए धन्यवाद। मैंने आईपी को अपना प्राथमिक इंटरफ़ेस प्राप्त करने के लिए एक त्वरित स्क्रिप्ट लिखी: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})"
DC_

4

इंटरनेट का सामना करने वाले आपके कंप्यूटर का आईपी पता प्राप्त करने के लिए, यहाँ एक कार्य रसीद है:

if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'

यह तब भी काम करता है जब आपके पास कई इंटरफेस सक्रिय होते हैं, तब भी जब आपके पास इंटरफेस होता है तो आपको पता नहीं होता है कि वास्तव में डिफ़ॉल्ट गेटवे कौन सा है।


: यह आंतरिक नेटवर्क आईपी पते जैसे हो जाता है ( 192.168.0.*)इंटरनेट के संपर्क में है, न कि बाहरी एक।
SimplGy

इस प्रतिक्रिया के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि आप OS के किस संस्करण में हैं? क्या आप मुझे इसका आउटपुट प्रदान कर सकते हैं netstat -nr | grep default?
डेन

यह इंटरफ़ेस का आईपी प्राप्त करता है जो / आउटबाउंड ट्रैफ़िक में कार्य करता है। यदि आप NAT के पीछे हैं, तो यह आपके LAN पते को देगा, WAN पते को नहीं। लेकिन यह बहुत सारे उद्देश्यों के लिए उपयोगी हो सकता है, और यह नेटवर्क तक नहीं पहुंचता है।
पूर्वाह्न

1

सिर्फ रिकॉर्ड के लिए, आप निम्नलिखित सामग्री के साथ एक बाश स्क्रिप्ट बना सकते हैं जो आपको अपना बाहरी आईपी पता देती है

#!/bin/bash    
wget -qO - http://ipecho.net/plain; echo

3
डिफ़ॉल्ट रूप wgetसे macOS का हिस्सा नहीं है और इसे गैर-Apple स्रोत से इंस्टॉल करने की आवश्यकता है।
user3439894

क्या प्रश्न macOS विशिष्ट है? यह कई लिनक्स वितरण पर डिफ़ॉल्ट रूप से स्थापित है।
user702846

यह साइट Apple हार्डवेयर और सॉफ्टवेयर के बारे में है, इसलिए macOS और iOS को माना जाता है।
GRG

इसके लिए डिफ़ॉल्ट macOS कमांड कर्ल का उपयोग करके होगा:curl -s http://ipecho.net/plain; echo
thibmaek
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.