コマンドラインからIPアドレスを見つけるにはどうすればよいですか?


159

できることはわかっていますがifconfig | grep inet、いくつかのIPv4アドレスが表示されます。SSHingなどの特定のものを入手するにはどうすればよいですか?


探しているのは、お使いのMacのIPアドレスではなく、ISPがルーターのインターネットインターフェイスに割り当てたパブリック IPアドレスです。
ダン

回答:


168

ipconfig getifaddr en1ワイヤレスまたはipconfig getifaddr en0イーサネットに使用します。

更新

ipconfig getifaddr en0 wifiインターフェースのデフォルトです。


7
これにより、外部IPアドレスではなく、内部(ルーターの)IPアドレス(192.168.1.xxxなど)が表示されます。(下記の他の回答のほとんどがそうであるように。)
ShreevatsaR

2
私のために働かなかった:(
Naveed Abbas

2
ifconfigすべてのインターフェイスとそのIPを示しています
アララー

4
エコー外部IP:curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
grigb

30
それはipconfigをgetifaddr EN0 '、年間の変化している無線LANインターフェイスのデフォルトである
マレクSzmalc

98

以下は、10.8および10.10 Yosemiteで動作します。

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
これは、有線と無線の仕様を必要としないため、私の意見では受け入れられた答えになるはずです。
エリックノミッチ

それは、この答えを私に2を与える除く@ErikNomitch
ザックLysobey

ああ、私はその後撤回します。@ZachLysobey
エリックノミッチ

これは最良の全体的なアプローチですが、正しい答えを得るためにawkの前にもう少しgrepを実行する必要がある場合があり、正しい答えは異なる場合があります。
空中学校

願わくばこの問題に対処するスクリプトを追加しました。
ブラッドパーク

43

curl ifconfig.meターミナルに入力するだけです。


1
なぜ下票なのですか?外部IPですが、このコマンドは有効であり、私のsshログインに対して機能します。
いとこコカイン14

5
これはパブリックIPアドレスであり、私が探していたものです。 ipconfig getifaddr en0ローカルIP用です。
abriggs

HighSierraでは、これをSUDOとして実行する必要がありました。これに加えて、外部IPアドレスがリストされます。内部IPアドレスについては、Brad Parksの回答を参照してください
ヴィンセント

19

頻繁にIPルックアップするために、これを.aliasesドットファイルに設定しました:

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

17

次のことができます。

ifconfigまたはを入力しifconfig -aます。このコマンドは、IPアドレスとMACアドレス(該当する場合のみ後者)と共に、インターフェイスのリストを表示します。また、特定のインターフェイスのみを入力しifconfig en0たりifconfig en1、構成したりすることもできます(誰かが回答で言ったように、en0は通常有線イーサネットで、en1はWiFiインターフェースです)。

別の方法として、netstat -iすべてのインターフェースをリストし、それぞれに割り当てたIPアドレスを表示します。

通常、SSHデーモンをボックスで実行している場合、利用可能なすべてのインターフェイスでリッスンします。マシンに設定されている任意のIPアドレスを使用して、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コマンドは、OSのプライマリインターフェイスの名前(つまり、これが[システム環境設定] / [ネットワーク設定]ウィンドウのリストの一番上に表示されます)とデフォルトルーターのIPアドレスを示します。2番目のshowコマンドはState:/Network/Interface/<ifname>/IPv4引数(この場合はen0)を受け取り、それに割り当てられたIPアドレスを提供します。Addresses配列でアドレスを探しています。他の2つのエントリは、ブロードキャストアドレスとネットマスクです。

それがお役に立てば幸いですが、何か不明な点がある場合はお知らせください。


1
この答えをありがとう。IPをプライマリインターフェイスにする簡単なスクリプトを書き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

インターネットに面しているコンピューターのIPアドレスを取得するための作業手順は次のとおりです。

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

複数のインターフェイスがアクティブな場合でも、実際にデフォルトゲートウェイであるインターフェイスがわからない場合でも機能するはずです。


これにより、内部ネットワークIPアドレスが取得されます(例:192.168.0.*)インターネットに公開されている外部のIPアドレスではありません。
SimplGy

このフィードバックをありがとう。OSのバージョンを教えてください。の出力を提供してもらえnetstat -nr | grep defaultますか?
ダン

これにより、イン/アウトバウンドトラフィックを処理するインターフェイスのIPが取得されます。NATの背後にいる場合、WANアドレスではなくLANアドレスが提供されます。しかし、それは多くの目的に役立つ可能性があり、ネットワークには届きません。
フォレックス

1

記録のために、外部IPアドレスを提供する次の内容のbashスクリプトを作成できます

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

3
デフォルトでwgetはmacOSの一部ではないため、Apple以外のソースからインストールする必要があります。
user3439894

質問macOS固有ですか?デフォルトでは、多くのLinuxディストリビューションにインストールされます。
user702846

このサイトはAppleのハードウェアとソフトウェアに関するものであるため、macOSとiOSが想定されています。
grg

このため、デフォルトのMacOSのコマンドは、カール使用してだろうcurl -s http://ipecho.net/plain; echo
thibmaek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.