IP 주소를 얻기위한 쉘 명령?


답변:



25

당신이 사용할 수있는:

/bin/ip addr

3
@opierce mpbloch의 답변을 올바른 것으로 표시했지만 FYI는이 답변을 사용해야합니다. iproute2 제품군의 일부이기 때문입니다. ifconfig지금 단계적으로 진행되고 있습니다.
jwbensley 2016 년

3
당신은 그냥 실행하여 더 짧게 만들 수 있습니다 ip a.
gak

19

내부 주소가 사용중인 경우 확인

curl http://myip.dnsomatic.com

유닉스 쉘에 좋은 아이디어 일 수 있습니다.
또는 해당 URL을 브라우저에 넣습니다.


당신이 "와 다른 답변을 얻을 경우 ifconfig -a"결과를
ifconfig외부 것이다 아마 작업 - 내부 주소를했다.


모든 것이 괜찮아 보이더라도 들어오는 ssh 연결 을 허용하지 않는 방화벽을 설치할 수 있습니다.
다음 시간에 컴퓨터의 브라우저에서 관심있는 포트를 시도해야합니다.

http://www.canyouseeme.org/

연결을 통해

  • 외부 IP 주소 (해당 페이지에 표시)
  • NAT, 포트 포워드
  • 방화벽

사실이지만 ssh를 내부 IP와 일치시키는 NAT / 포트 포워딩 규칙이 없을 수 있습니다.
Kyle Brandt

@Kyle, 추가 가능 ...
nik

3
일에 대한curl http://myip.dnsomatic.com
JatSing

이와 유사하게curl ifconfig.me
jwbensley

19

/bin/hostname -i


3
이 경우을 사용하는 것이 좋습니다 hostname --all-ip-addresses. 호스트의 모든 네트워크 주소를 표시하십시오. 이 옵션은 모든 네트워크 인터페이스에서 구성된 모든 주소를 열거합니다. 루프백 인터페이스 및 IPv6 링크 로컬 주소는 생략되었습니다. 옵션 -i와 달리이 옵션은 이름 확인에 의존하지 않습니다. 출력 순서에 대해 어떤 가정도하지 마십시오.
lrkwz

5
@lrkwz의 의견에 대한 짧은 대안/bin/hostname -I
hanxue

@hanxue에게 감사드립니다-이것은 가장 깨끗한 출력을 가진 가장 짧은 명령입니다. 내 경험 (Ubuntu)에서 /bin/hostname -i그냥 제공합니다 127.0.1.1.
Roger Dueck 2016 년


9
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

내부 주소가 필요한 경우 ifconfig 후에 인터페이스를 추가하십시오 (예 :

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

+1이 정확히 무엇을 내가 문제를 해결해야했습니다. 원 라이너를위한 만세!
J. Polfer

+1 헤드가없는 경우 -1 : / sbin / ifconfig | grep inet | sed 's / \ : / /'| awk 'NR == 1 {print $ 3}'
joeslice

고마워, 데비안에서는 작동하지만 OS X에서는 작동하지 않아 쓰레기가 반환됩니다. 두 가지 모두에서 작동하는 라인을 사용할 수 있다면 좋을 것입니다. OS X에서의 ifconfig 출력은 다음과 같습니다. gist.github.com/ssbarnea/5814657
sorin


3

라우터의 IP 주소를 알아야하는 경우이 명령을 실행할 수 있습니다.

발굴 + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

dns 서버에 OpenDNS를 사용하는 경우 다음과 같이 단축 할 수 있습니다.

발굴 + short myip.opendns.com

이 명령을 사용할 수도 있습니다.

컬 http://myip.dnsomatic.com

3

인터페이스가 여러 개인 경우 IP를 원하는 인터페이스를 지정하는 것이 유용 할 수 있습니다. 'eth0'인터페이스의 IPV4 주소를 원하는 경우 :

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 

'eth0'인터페이스의 IPV6 주소를 원하는 경우 :

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 

랩톱의 두 공통 인터페이스 wlan0과 eth0 사이에서 IP를 검색하려는 경우 :

CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
    if [ -z $CURRENT_IP ]; then
        CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
    fi
done

3

페이지를 말리십시오 .

$ curl wtfismyip.com/text


그리고이 기간 동안 이미 언급 한 유사한 서비스보다이 점이 얼마나 우수합니까?
Esa Jokinen

2

다음은 Linux 및 OS X에서도 작동하는 한 줄이며 로컬이 아닌 첫 번째 주소를 반환합니다.

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

/programming//a/13322549/99834로 크레딧 보내기



1

가장 간단한 방법은 아마도

ifconfig eth0

머신에 기본 유선 인터페이스에 단일 IP 주소가 있다고 가정하면

ifconfig wlan0

Wi-Fi에 있다면


1
ip address show scope link

생활의 IP 주소-링크 있음-인터페이스가 표시됩니다. 그러나 이것은 bash 명령이 아닙니다. Bash는 IP와 네트워크에 대해 전혀 알 수 없습니다.


1

내가 이해하는 것은 동적 IP가있는 원격 우분투 컴퓨터를 연결하고 싶다는 것입니다. dyndns.org 사이트로 이동하여 무료 계정을 만드십시오. 그런 다음 원격 시스템에서 동적 ip 도구를 설치해야합니다.

sudo aptitude install dyndns-client

그래서 당신은 통해 원격 컴퓨터를 ssh 수 있습니다

ssh username@yourdynamicnamealias.dyndns.org

따라서 구성 후에는 원격 시스템 IP 주소가 필요하지 않습니다.


이것은 동적 IP를 처리하기 위해 선호하는 방법입니다. dyndns.org는 환상적인 무료 서비스입니다.
John Barrett

1

여기 내가 사용하는 것이 있습니다 :

LC_ALL=C /sbin/ifconfig | awk '
    /inet addr/ {
        gsub("addr:","");
        if(($2!="127.0.0.1") && ($2!="0.0.0.0") && ($2!=""))
            { print $2 };
    }'

1

주어진 인터페이스의 단일 IP 만 필요한 경우 다음을 수행 할 수 있습니다.

ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2);  print $2 }' 


0

상자퍼블릭 IP 주소를 찾고 있다면 다음을 사용할 수 있습니다.

  • dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"

IPv4 또는 IPv6 주소 dig(1)와 같은 -4또는 -6구체적으로 옵션을 사용할 수 있습니다 . Google은 TXT형식 레코드로 답변을 제공합니다 dig. 이후에 유틸리티와 함께 ​​변수를 사용하려면 tr (1)traceroute 과 같은 것을 사용 하여 따옴표를 제거해야합니다.

다른 옵션으로는 whoami.akamai.netand가 있으며 myip.opendns.com, 위의 예에서와 같이 대답 A하고 AAAA기록 TXT하므로 따옴표를 제거하지 않아도됩니다.

  • dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short

  • dig -4 @resolver1.opendns.com -t any myip.opendns.com +short

  • dig -6 @resolver1.opendns.com -t any myip.opendns.com +short

위의 모든 옵션을 사용하여 변수를 설정하는 샘플 스크립트는 다음과 같습니다.

#!/bin/sh
IPANY="$(dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"

당신이 사설 IP 주소를 찾고 있다면, 또는 상자에 할당 된 모든 IP 주소의 세트, 당신의 조합을 사용할 수 있습니다 ifconfig(BSD와 GNU / 리눅스) ip addr(GNU / 리눅스), hostname(옵션 -i-I에 GNU / Linux) 및 netstat진행 상황을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.