it-swarm-ko.tech

Shell 스크립트에서 외부 IP 주소를 어떻게 얻을 수 있습니까?

Shell 스크립트에서 외부 IP 주소를 찾아야합니다. 현재이 기능을 사용합니다 :

myip () { 
    lwp-request -o text checkip.dyndns.org | awk '{ print $NF }'
}

하지만 Perl-libwww, Perl-html-format, Perl-html-tree 설치되었습니다. 외부 IP를 얻을 수있는 다른 방법은 무엇입니까?

288
Eugene Yarmash

DNS 서버에서 직접 가져 오는 것이 좋습니다.

아래의 다른 답변의 대부분은 HTTP를 통해 원격 서버로 이동하는 것과 관련이 있습니다. 이들 중 일부는 출력을 구문 분석해야하거나 서버가 일반 텍스트로 응답하도록 User-Agent 헤더에 의존했습니다. 그것들은 아주 자주 바뀝니다 (아래로 내려 가고, 이름을 바꾸고, 광고를 올리거나, 출력 형식을 바꿀 수 있습니다).

  1. DNS 응답 프로토콜은 표준화되어 있습니다 (형식은 계속 호환됩니다).
  2. 역사적으로 DNS 서비스 ( OpenDNS , Google Public DNS , ..)는 훨씬 더 오래 살아남는 경향이 있으며 새로운 것보다 더 안정적이며 확장 가능하며 일반적으로 더 잘 보입니다. hip whatismyip.com HTTP 서비스는 오늘 뜨겁습니다.
  3. 이 방법은 본질적으로 더 빠릅니다 (몇 밀리 초 만 가능합니다).

리졸버로 OpenDNS 와 함께 Dig 사용 :

Dig @resolver1.opendns.com ANY myip.opendns.com +short

아마도 bashrc에서 별칭을 지정하면 기억하기 쉽습니다.

alias wanip='Dig @resolver1.opendns.com ANY myip.opendns.com +short'

일반 IP 주소로 응답합니다.

$ wanip
80.100.192.168 # or, 2606:4700:4700::1111

통사론

( https://ss64.com/bash/Dig.html ) (-에서 줄임) : :

usage:  Dig [@global-dnsserver] [q-type] <hostname> <d-opt> [q-opt]

    q-type   one of (A, ANY, AAAA, TXT, MX, ...). Default: A.

    d-opt    ...
             +[no]short          (Display nothing except short form of answer)
             ...

    q-opt    one of:
             -4                  (use IPv4 query transport only)
             -6                  (use IPv6 query transport only)
             ...

ANY 쿼리 유형은 AAAA 또는 A 레코드를 반환합니다. 특히 IPv4 또는 IPv6 연결을 선호하려면 -4 또는 -6 옵션에 따라.

응답이 IPv4 주소가되도록하려면 ANY를 A; IPv6의 경우 AAAA로 바꾸십시오. 연결에 사용 된 주소 만 반환 할 수 있습니다. 예를 들어, IPv6을 통해 연결하면 A 주소를 반환 할 수 없습니다.

대체 서버 및 예제

OpenDNS 외에도 Akamai와 Google에서 제공하는 유사한 DNS 서비스가 있습니다.

$ Dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short
80.100.192.168

$ Dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
"80.100.192.168"

IPv4 주소를 구체적으로 요청하는 별명 예 :

alias wanip4='Dig @resolver1.opendns.com A myip.opendns.com +short -4'

$ wanip4
80.100.192.168

그리고 IPv6의 경우 :

alias wanip6='Dig @resolver1.opendns.com AAAA myip.opendns.com +short -6'

$ wanip6
2606:4700:4700::1111

문제 해결

어떤 이유로 명령이 작동하지 않으면 업스트림 공급자, 명령 줄 도구 또는 다른 문제에 문제가있을 수 있습니다. 작동하지 않는 이유를 이해하려면 +short 옵션은 DNS 쿼리의 세부 정보를 표시합니다. 예를 들면 다음과 같습니다.

$ Dig @resolver1.opendns.com ANY myip.opendns.com

;; Got answer: ->>HEADER<<- opcode: QUERY, status: NOERROR

;; QUESTION SECTION:
;myip.opendns.com.      IN  ANY

;; ANSWER SECTION:
myip.opendns.com.   0   IN  AAAA    2606:4700:4700::1111

;; Query time: 4 msec
;; WHEN: Fri Apr 11 00:00:01 GMT 2011
465
Timo Tijhof

참고 : 이것은 external IP 주소 (인터넷에 연결된 서버가 연결할 때 표시되는 IP 주소)입니다. internal IP 주소 (컴퓨터가 연결에 사용하는 것과 다를 수 있음) 이 답변 .

TL; DR-2015 년 가장 빠른 방법

DNS를 사용하는 가장 빠른 방법 :

Dig +short myip.opendns.com @resolver1.opendns.com

또는 externalip 사용 :

externalip dns

HTTP를 사용하는 가장 빠른 방법 :

curl -s http://whatismyip.akamai.com/

또는 externalip 사용 :

externalip http

유효한 인증서로 HTTPS를 사용하는 것이 가장 빠릅니다.

curl -s https://4.ifcfg.me/

또는 externalip 사용 :

externalip https

텔넷 사용 :

nc 명령으로 :

nc 4.ifcfg.me 23 | grep IPv4 | cut -d' ' -f4

또는 externalip 사용 :

externalip telnet

telnet 명령으로 :

telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d' ' -f4

FTP 사용 :

echo close | ftp 4.ifcfg.me | awk '{print $4; exit}'

또는 externalip 사용 :

externalip ftp

위의 모든 것은 - externalip 스크립트를 사용하여 실행할 수 있습니다 :

externalip dns
externalip http
externalip https
externalip telnet
externalip ftp

이제 긴 이야기 ...

여기 또는 다른 곳에 게시 된 HTTP를 통해 외부 IP를 제공하는 다양한 서버 옵션이 많이 있습니다.

나는 그들 중 하나가 다른 것보다 나은지 확인하기 위해 벤치 마크를 만들었고 결과에 놀랐습니다. 예 : 가장 널리 권장되는 ifconfig.me 중 하나가 거의 항상 느리게 반응하기까지 몇 초가 걸리기도했습니다. 많은 사람들이 HTTPS를 통해 작동하지 않거나 작동하지만 유효하지 않은 인증서를 가지고 있습니다. 일부 응답 시간이 매우 일치하지 않습니다.

벤치 마크

HTTP와 HTTPS

이것이 내가 사용한 externalip-benchmark 스크립트의 소스입니다.

여기에 언급 된 서비스 중 어떤 서비스를 사용할 가치가 있는지 직접 확인할 수 있습니다.

wget https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
chmod a+x externalip-benchmark
./externalip-benchmark

바르샤바에서 2015-04-03에 얻은 결과-무고한 사람들을 보호하기 위해 주소가 변경되었습니다.

최고의 HTTP 응답 시간 :

0.086s http://ip.tyk.nu/ - answer='172.31.133.7'
0.089s http://whatismyip.akamai.com/ - answer='172.31.133.7'
0.091s http://tnx.nl/ip - answer='172.31.133.7'
0.117s http://ifcfg.me/ - answer='172.31.133.7'
0.156s http://l2.io/ip - answer='172.31.133.7'
0.317s http://ip.appspot.com/ - answer='172.31.133.7'
0.336s http://ident.me/ - answer='172.31.133.7'
0.338s http://ipof.in/txt - answer='172.31.133.7'
0.347s http://icanhazip.com/ - answer='172.31.133.7'
0.496s http://curlmyip.com/ - answer='172.31.133.7'
0.527s http://wgetip.com/ - answer='172.31.133.7'
0.548s http://curlmyip.com/ - answer='172.31.133.7'
0.665s http://bot.whatismyipaddress.com/ - answer='172.31.133.7'
0.665s http://eth0.me/ - answer='172.31.133.7'
1.041s http://ifconfig.me/ - answer='172.31.133.7'
1.049s http://corz.org/ip - answer='172.31.133.7'
1.598s http://ipecho.net/plain - answer='172.31.133.7'

최고의 https 응답 시간 :

0.028s https://curlmyip.com/ - answer=''
0.028s https://curlmyip.com/ - answer=''
0.029s https://l2.io/ip - answer=''
0.029s https://tnx.nl/ip - answer=''
0.072s https://whatismyip.akamai.com/ - answer=''
0.113s https://ipecho.net/plain - answer=''
0.117s https://ident.me/ - answer=''
0.207s https://ip.tyk.nu/ - answer='172.31.133.7'
0.214s https://ipof.in/txt - answer='172.31.133.7'
0.259s https://ifcfg.me/ - answer='172.31.133.7'
0.289s https://corz.org/ip - answer=''
0.436s https://ip.appspot.com/ - answer='172.31.133.7'
0.448s https://bot.whatismyipaddress.com/ - answer=''
0.454s https://eth0.me/ - answer=''
0.673s https://icanhazip.com/ - answer='172.31.133.7'
5.255s https://ifconfig.me/ - answer=''
10.000s https://wgetip.com/ - answer=''

(참고 : 내용이 비어있는 일부 빠른 응답이 있습니다. 잘못된 응답입니다.)

최고의 평균 핑 시간 :

10.210 //whatismyip.akamai.com/
36.820 //tnx.nl/ip
37.169 //ip.tyk.nu/
39.412 //ipof.in/txt
40.967 //ident.me/
41.257 //ipecho.net/plain
43.918 //ifcfg.me/
45.720 //l2.io/ip
64.749 //ip.appspot.com/
123.412 //corz.org/ip
134.245 //wgetip.com/
157.997 //icanhazip.com/
161.613 //curlmyip.com/
162.100 //curlmyip.com/
268.734 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/

다음은 암스테르담에서 2015-04-03에 얻은 결과입니다.

최고의 HTTP 응답 시간 :

0.021s http://ipecho.net/plain - answer='172.31.13.37'
0.027s http://tnx.nl/ip - answer='172.31.13.37'
0.035s http://whatismyip.akamai.com/ - answer='172.31.13.37'
0.039s http://ifcfg.me/ - answer='172.31.13.37'
0.045s http://l2.io/ip - answer='172.31.13.37'
0.142s http://ident.me/ - answer='172.31.13.37'
0.144s http://ipof.in/txt - answer='172.31.13.37'
0.150s http://ip.appspot.com/ - answer='172.31.13.37'
0.150s http://ip.tyk.nu/ - answer='172.31.13.37'
0.170s http://icanhazip.com/ - answer='172.31.13.37'
0.190s http://eth0.me/ - answer='172.31.13.37'
0.191s http://wgetip.com/ - answer='172.31.13.37'
0.301s http://curlmyip.com/ - answer='172.31.13.37'
0.330s http://bot.whatismyipaddress.com/ - answer='172.31.13.37'
0.343s http://curlmyip.com/ - answer='172.31.13.37'
0.485s http://corz.org/ip - answer='172.31.13.37'
3.549s http://ifconfig.me/ - answer='172.31.13.37'

최고의 https 응답 시간 :

0.004s https://curlmyip.com/ - answer=''
0.012s https://curlmyip.com/ - answer=''
0.012s https://tnx.nl/ip - answer=''
0.016s https://ipecho.net/plain - answer=''
0.071s https://whatismyip.akamai.com/ - answer=''
0.096s https://ifcfg.me/ - answer='172.31.13.37'
0.097s https://ident.me/ - answer=''
0.187s https://corz.org/ip - answer=''
0.187s https://ip.appspot.com/ - answer='172.31.13.37'
0.189s https://ip.tyk.nu/ - answer='172.31.13.37'
0.195s https://eth0.me/ - answer=''
0.253s https://l2.io/ip - answer=''
0.300s https://ipof.in/txt - answer='172.31.13.37'
0.324s https://bot.whatismyipaddress.com/ - answer=''
0.512s https://icanhazip.com/ - answer='172.31.13.37'
1.272s https://ifconfig.me/ - answer=''
10.002s https://wgetip.com/ - answer=''

최고의 평균 핑 시간 :

1.020 //ipecho.net/plain
1.087 //whatismyip.akamai.com/
5.011 //ip.appspot.com/
6.942 //ident.me/
7.017 //ipof.in/txt
8.209 //tnx.nl/ip
11.343 //ip.tyk.nu/
12.647 //ifcfg.me/
13.828 //l2.io/ip
81.642 //icanhazip.com/
85.447 //wgetip.com/
91.473 //corz.org/ip
102.569 //curlmyip.com/
102.627 //curlmyip.com/
247.052 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/

999999 핑은 100 % 패킷 손실을 의미합니다.

DNS

비교를 위해 바르샤바와 암스테르담에서 2015-06-16에 테스트 한 다른 방법이 있습니다.

사용 :

time Dig +short myip.opendns.com @resolver1.opendns.com

일반적으로 소요되는 시간 (실시간 시계 시간) :

  • 바르샤바에서 0.035
  • 암스테르담에서 0.015 초

실제로 이런 식으로 사용할 수있는 four 리졸버가 있습니다.

  • resolver1.opendns.com
  • resolver2.opendns.com
  • resolver3.opendns.com
  • resolver4.opendns.com

바르샤바와 암스테르담에서 모두 동일한 응답 시간을 제공하지만 다른 지역에서는 그렇지 않을 수 있습니다.

208.67.222.222 사용-도메인 이름 대신 resolver1.opendns.com의 IP가 더 빠릅니다.

  • 바르샤바에서 0.023
  • 암스테르담에서 0.009 초

그러나 IP가 변경되면 미래에는 작동하지 않을 수 있습니다 (잘 알려진 DNS 해석 프로그램에는 적합하지 않을 수 있습니다-아마도 externalip 스크립트에서 IP를 사용해야합니다-의견을 말하십시오).

텔넷

nc 또는 telnet 명령 (위 참조)을 가진 Telnet은 일반적으로 다음을 수행합니다.

  • 바르샤바에서 0.103
  • 암스테르담에서 0.035s

(nctelnet 명령 사이에는 눈에 띄는 차이가 없습니다.)

FTP

  • 바르샤바에서 0.104s
  • 암스테르담에서 0.036s

도메인 이름

지정된 서비스의 도메인 이름 대신 IP 주소를 사용하면 (특히 처음으로 실행할 때) 모든 방법이 더 빠릅니다 (호스트 기반 가상 서버를 사용할 수 있고 베어 IP에서는 작동하지 않는 HTTP 제외). 서비스가 IP 주소를 변경하면 더 빠르지 만 미래에 대한 증거는 줄어들 수 있습니다.

코멘트

귀하의 위치에서 흥미로운 결과를 보거나 내가 선택한 호스트 대신 다른 호스트를 추천해야한다고 생각되면 의견을 게시하십시오. 중요한 서비스가 누락 된 경우 GitHub에 의견을 보내거나 문제 게시 이 게시물을 최신 성능의 최신 서비스로 업데이트하고 싶습니다.

157
rsp
 curl -s http://whatismijnip.nl |cut -d " " -f 5

네덜란드어가 작동하는 사이트로 교체되었습니다.

83
Maciek Sawicki

whatsmyip.orgifconfig.me 이 이미 언급되었으므로 :

curl -s icanhazip.com
56
joschi

Whatismyip.org의 대안으로 ifconfig.me 를 사용할 수 있습니다.

curl -s http://ifconfig.me

또한 ifconfig.me에는 추가 기능이 있습니다. 다른 정보를 얻으려면 웹 사이트를 방문하십시오.

19
Mr. Deathless

Amazon AWS

curl https://checkip.amazonaws.com

샘플 출력 :

123.123.123.123

난 그게 좋아 왜냐하면:

  • 평문 IP 만 반환합니다.
  • 그것은 곧 오프라인 상태가 될 것 같지 않은 잘 알려진 공급자의 것입니다.
wget -O - -q http://whatismyip.org/
16
ztank1013
curl ident.me

OR

curl ifconfig.me

OR

curl tnx.nl/ip

OR

curl ipecho.net/plain

OR

curl ip.appspot.com

OR

curl whatismyip.akamai.com

OR

curl icanhazip.com

OR

curl wgetip.com

OR

curl ip.tyk.nu

OR

curl curlmyip.com

OR

curl corz.org/ip

OR

curl bot.whatismyipaddress.com

참조

9
Mandar Shinde

Curlmyip.com을 사용하는 것을 선호합니다.

curl curlmyip.com

짧고 기억하기 쉽습니다.

8
Garrett Fogerlie
netcat icanhazip.com 80 <<< $'GET / HTTP/1.1\nHost: icanhazip.com\n\n' | tail -n1
7
Eugene Yarmash

이 모든 제안을 읽은 후에 더 많은 것을 읽고 싶다면 여기에 과도하게 엔지니어링 된 Bash 스크립트가 있습니다.

2017 년 2 월 현재 제대로 작동하는 것으로 보이는 DNS 및 HTTP 서버 목록이 포함되어 있습니다.

Dig가 있으면 먼저 다양한 HTTP 서비스보다 거의 빠른 속도로 DNS를 시도합니다.

첫 번째 응답에서 종료됩니다.

Dig가 없거나 모든 DNS 서버가 실패한 경우 응답을받을 때까지 HTTP 서비스를 시도합니다.

서버는 알파벳순으로 나열되어 있지만 항상 같은 서버를 사용하지 않도록 사용 전에 섞습니다.

#!/bin/bash

## Get my external IP

timeout=2   # seconds to wait for a reply before trying next server
verbose=1   # prints which server was used to STDERR

dnslist=(
    "Dig +short            myip.opendns.com        @resolver1.opendns.com"
    "Dig +short            myip.opendns.com        @resolver2.opendns.com"
    "Dig +short            myip.opendns.com        @resolver3.opendns.com"
    "Dig +short            myip.opendns.com        @resolver4.opendns.com"
    "Dig +short    -t txt  o-o.myaddr.l.google.com @ns1.google.com"
    "Dig +short -4 -t a    whoami.akamai.net       @ns1-1.akamaitech.net"
    "Dig +short            whoami.akamai.net       @ns1-1.akamaitech.net"
)

httplist=(
    4.ifcfg.me
    alma.ch/myip.cgi
    api.infoip.io/ip
    api.ipify.org
    bot.whatismyipaddress.com
    canhazip.com
    checkip.amazonaws.com
    eth0.me
    icanhazip.com
    ident.me
    ipecho.net/plain
    ipinfo.io/ip
    ipof.in/txt
    ip.tyk.nu
    l2.io/ip
    smart-ip.net/myip
    tnx.nl/ip
    wgetip.com
    whatismyip.akamai.com
)



# function to shuffle the global array "array"
shuffle() {
   local i tmp size max Rand
   size=${#array[*]}
   max=$(( 32768 / size * size ))
   for ((i=size-1; i>0; i--)); do
      while (( (Rand=$RANDOM) >= max )); do :; done
      Rand=$(( Rand % (i+1) ))
      tmp=${array[i]} array[i]=${array[Rand]} array[Rand]=$tmp
   done
}


## if we have Dig and a list of dns methods, try that first
if hash Dig 2>/dev/null && [ ${#dnslist[*]} -gt 0 ]; then
    eval array=( \"\${dnslist[@]}\" )
    shuffle

    for cmd in "${array[@]}"; do
        [ "$verbose" == 1 ] && echo Trying: $cmd 1>&2
        ip=$(timeout $timeout $cmd)
        if [ -n "$ip" ]; then
            echo $ip
            exit
        fi
    done
fi


# if we haven't succeeded with DNS, try HTTP

if [ ${#httplist[*]} == 0 ]; then
    echo "No hosts in httplist array!" >&2
    exit 1
fi

# use curl or wget, depending on which one we find
curl_or_wget=$(if hash curl 2>/dev/null; then echo "curl -s"; Elif hash wget 2>/dev/null; then echo "wget -qO-"; fi);

if [ -z "$curl_or_wget" ]; then
    echo "Neither curl nor wget found. Cannot use http method." >&2
    exit 1
fi

eval array=( \"\${httplist[@]}\" )
shuffle

for url in "${array[@]}"; do
    [ "$verbose" == 1 ] && echo Trying: $curl_or_wget  "$url" 1>&2
    ip=$(timeout $timeout $curl_or_wget "$url")
    if [ -n "$ip" ]; then
        echo $ip
        exit
    fi
done

샘플 사용법 (스크립트 myip이라고 함) :

$ myip
Trying: Dig +short -t txt o-o.myaddr.l.google.com @ns1.google.com
"151.101.65.69"

$ ip=$(myip); echo "IP = '$ip'"
Trying: Dig +short myip.opendns.com @resolver1.opendns.com
IP = '151.101.65.69'

사용 된 서버가 인쇄되지 않도록 스크립트 상단에 verbose 변수를 주석 처리하십시오.

업데이트 :이 스크립트는 이제 필요할 때 업데이트 할 수있는 Github에도 있습니다.
https://github.com/mivk/myip

6
mivk

이것은 항상 나를 위해 작동합니다, 나는 내 IP 주소를 얻기 위해 내 conky에서 그것을 사용합니다.

wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'
4
Dai_Trying

ifcfg.me 다음을 지원합니다 :

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me

IPv4 및 IPv6, 컬이 많은 것 : ifcfg.me/?

3
Eun

연결이나 서비스에 의존하지 않기 때문에 다음 코드를 사용합니다.이 코드는 다른 서비스를 사용하여 IP를 가져 오려고 시도합니다 (자유롭게 추가하십시오).

# Get my ip address and put in a file
declare -a arr=("ipecho.net/plain" "ident.me" "tnx.nl/ip" "ip.appspot.com" "https://shtuff.it/myip/short/")
IP=$(curl -s --retry 3 --retry-delay 10 ipecho.net/plain)

while [ -z "$IP" ] # If no IP found yet, keep trying!
do
    sleep 30
    IP=$(curl -s --retry 3 --retry-delay 10 ${arr[$((  RANDOM % ${#arr[@]}  ))]})  
done

echo -n "$IP" >  /root/clientIP.txt #puts ip address in clientIP.txt
echo "Our address is $IP" 

보다 강력한 기능을 추가하려면 (예 : 서비스 중 하나가 형식을 변경하는 경우) $IP는 다음 function 을 사용하는 유효한 IP입니다.

# Verify that the parameter passed is an IP Address:
# http://zindilis.com/blog/2013/05/10/bash-check-that-string-is-ip.html
# @Author: Marios Zindilis
# @License: Creative Commons Attribution-ShareAlike 4.0 International License.
# @Date: 2013-05-10
function is_IP() {
if [ `echo $1 | grep -o '\.' | wc -l` -ne 3 ]; then
        echo "Parameter '$1' does not look like an IP Address (does not contain 3 dots).";
        exit 1;
Elif [ `echo $1 | tr '.' ' ' | wc -w` -ne 4 ]; then
        echo "Parameter '$1' does not look like an IP Address (does not contain 4 octets).";
        exit 1;
else
        for OCTET in `echo $1 | tr '.' ' '`; do
                if ! [[ $OCTET =~ ^[0-9]+$ ]]; then
                        echo "Parameter '$1' does not look like in IP Address (octet '$OCTET' is not numeric).";
                        exit 1;
                Elif [[ $OCTET -lt 0 || $OCTET -gt 255 ]]; then
                        echo "Parameter '$1' does not look like in IP Address (octet '$OCTET' in not in range 0-255).";
                        exit 1;
                fi
        done
fi

return 0;
}
3
Franck Dernoncourt

잠재적 인 함정을 피하기 위해 HTTPS를 사용하려는 경우 :

_result=$(wget -qO- https://ipcheckit.com/)
_result="${_result##*Your IP address is<br><b>}"
printf '%s\n' "${_result%%</b></p>*}"
3
Chris Down

비즈니스가 동적 IP 관리를 해결하는 호스트에 의존하는 또 다른 대안은 다음과 같습니다. "공공 서비스"사이트가 사라지거나 형식이 변경 될 수 있습니다.

  1. 많은 무료 동적 DNS 서비스 중 하나에 서버를 등록하십시오 (예 : no-ip.com) xxx.no-ip.org와 같은 DNS 항목을 제공합니다.
  2. 서비스의 동적 업데이트 도구를 설치합니다 (IP 변경 사항을 서비스에보고).

스크립트에서 IP 주소를 얻으려면 다음을 수행하십시오.

external_ip=`Dig +short xxx.no-ip.org`

Cron 작업에서 동적 IP가 변경되었고 일부 구성 항목을 변경해야하는지 확인하는 데 유용합니다.

3
cgmonroe

팝업 창에 현재 IP 주소가 표시됩니다.

zenity --info --text "$(curl -s icanhazip.com)"
2
basic6

저는 가족을 위해 클라우드 서비스를 운영하고 있으며이 빠른 스크립트를 작성하여 매일 오전 5시에 cron에서 실행합니다. 저렴한 IP를 구입하지 않기 때문에 정적 IP를 구입하지 않기 때문입니다.

공개 IP를 가져 와서 내 사용자에게 이메일로 보냅니다. 엄마가 포트 나 다른 것을 입력 할 필요가 없도록 하이퍼 링크 형식으로 이메일을 보냈습니다. 다른 사람이 사용할 수 있습니다.

#!/bin/bash
ipvariable=$(wget http://ipecho.net/plain -O - -q);

echo "Today the location is http://$ipvariable:123456/foldertheyreach" | mail -s   "From your friendly cloud service provider" [email protected], [email protected]
2
Will

IP 주소를 JSON/XML 또는 일반 텍스트로 반환하는 서비스를 설정했습니다. 여기에서 찾을 수 있습니다

http://ipof.in/txt

/ json 및/xml과 동일한 URL은 다른 형식도 제공합니다.

HTTPS를 원할 경우 https 접두사와 동일한 URL을 사용할 수 있습니다. Wi-Fi를 사용하더라도 공개 주소를 얻을 수 있다는 장점이 있습니다.

따라서 간단한 별칭 myip = "curl https://ipof.in/txt "는 IP를 얻습니다

1
vivekv

DNS 주소를 번역하는 NAT 라우터 뒤에서도 DNS 요청을 사용하면 다음과 같이 작동합니다.

$ Dig +short -t txt o-o.myaddr.l.google.com @ns1.google.com | cut -d'"' -f2
x.y.z.t

또는 대신 HTTP 요청 메소드를 사용할 수 있습니다.

$ curl -s ipinfo.io/ip
x.y.z.t
0
SebMa

Curl을 사용하여 shtuff.it의 IP 서비스를 누르십시오.

curl -s https://shtuff.it/myip/short
0
Chris Montanaro

다른 방법으로 STUN 을 사용하면 자동으로이 질문에 대답하기 위해 발명되었으며 인터넷 통신에 광범위하게 사용됩니다. SIP WebRTC .

Stunclient 사용 (debian/ubuntu에서 apt-get install stuntman-client) 간단히 :

$ stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541

어디 A.B.C.D은 (는) 로컬 네트워크에있는 시스템의 IP 주소이고 W.X.Y.Z는 웹 사이트와 같은 IP 주소 서버 (외부에서 찾고있는 서버)입니다. sed를 사용하면 위의 출력을 IP 주소로만 줄일 수 있습니다.

stunclient stun.services.mozilla.com |
    sed -ne "s/^Mapped address: \(.*\):.*$/\1/p"

기본 명령 줄 도구 만 사용하는 다른 STUN 조회의 경우 AskUbuntu에 대한 내 대답 (생산 용도가 아닌 재미있는 연습용)을 참조하십시오.

0
Victor Klos

W3m Plaintext-Browser는 bash에 좋습니다. greptail을 사용하여 다음과 같이 회신을 줄일 수 있습니다.

w3m -no-cookie -dump "http://www.whatismyip.com/" | grep -A 1 -m 1 "Your IP:" | tail -n 1
0
McPeppr