명령 행에서 내 IP 주소를 어떻게 찾습니까?


159

나는 당신이 할 수 있다는 것을 알고 ifconfig | grep inet있지만, 그것은 당신에게 여러 IPv4 주소를 보여줍니다. SSHing et al에 대한 특정 것을 어떻게 얻습니까?


당신이 찾고있는 것은 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를 보여줍니다
aralar

4
echo 외부 IP :curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
grigb

30
Wi-Fi 인터페이스의 기본값은 '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
유선 및 무선 사양이 필요하지 않기 때문에 내 의견으로는 받아 들일만한 대답이어야합니다.
Erik Nomitch

@ErikNomitch이 답변을 제외하고는 2 점을줍니다
Zach Lysobey

아, 그때 철회합니다. @ZachLysobey
Erik Nomitch

이것은 전체적으로 가장 좋은 접근 방법이지만 정답을 얻으려면 때때로 awk 전에 약간 더 grepping해야하며 정답은 다를 수 있습니다.
uchuugaka

이 문제를 해결하기 위해 스크립트를 추가했습니다 .. fyi!
Brad Parks

43

curl ifconfig.me터미널에 입력 하십시오.


1
왜 공감해야합니까? 외부 IP이지만 명령이 유효하며 내 ssh 로그인에 작동합니다.
CousinCocaine

5
이것은 공개 IP 주소이며 내가 찾고 있던 것입니다. ipconfig getifaddr en0로컬 IP 용입니다.
abriggs

HighSierra에서는 이것을 SUDO로 실행해야했습니다. 이 외에도 외부 IP 주소가 나열됩니다. 내부 IP 주소는 Brad Parks
Vincent

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 데몬을 실행하면 사용 가능한 모든 인터페이스, 즉 수신 대기합니다. SSH를 통해 해당 시스템에 연결하기 위해 시스템에 구성된 모든 IP 주소를 사용할 수 있습니다 (방화벽 규칙에 따라 달라짐). 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명령은 기본 라우터의 IP 주소뿐만 아니라 OS의 기본 인터페이스 이름 (시스템 기본 설정 / 네트워크 기본 설정 창의 목록 맨 위에있는 이름)을 알려줍니다. 두 번째 show명령은 State:/Network/Interface/<ifname>/IPv4인수 (이 경우 en0)를 사용하여 할당 된 IP 주소를 제공합니다. Addresses 배열에서 주소를 찾고 있는데 다른 두 항목은 브로드 캐스트 주소와 넷 마스크입니다.

도움이 되길 바라지 만, 확실하지 않은 경우 알려주세요.


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.*)인터넷에 노출 된 외부 주소가 아님)
SimplGy

이 의견에 감사드립니다. 사용중인 OS의 버전을 알려주시겠습니까? 당신은 나에게 출력을 제공 할 수 netstat -nr | grep default있습니까?
dan

인바운드 / 아웃 바운드 트래픽을 제공하는 인터페이스의 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을 사용하는 것입니다.curl -s http://ipecho.net/plain; echo
thibmaek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.