쉘 스크립트에서 외부 IP 주소를 찾아야합니다. 현재이 기능을 사용합니다 :
myip () {
lwp-request -o text checkip.dyndns.org | awk '{ print $NF }'
}
그러나이에 따라 perl-libwww
, perl-html-format
, perl-html-tree
설치. 외부 IP를 얻을 수있는 다른 방법은 무엇입니까?
쉘 스크립트에서 외부 IP 주소를 찾아야합니다. 현재이 기능을 사용합니다 :
myip () {
lwp-request -o text checkip.dyndns.org | awk '{ print $NF }'
}
그러나이에 따라 perl-libwww
, perl-html-format
, perl-html-tree
설치. 외부 IP를 얻을 수있는 다른 방법은 무엇입니까?
답변:
DNS 서버에서 직접 가져 오는 것이 좋습니다.
아래의 다른 답변의 대부분은 HTTP를 통해 원격 서버로 이동하는 것과 관련이 있습니다. 이들 중 일부는 출력을 구문 분석해야하거나 서버가 일반 텍스트로 응답하도록 User-Agent 헤더에 의존했습니다. 그것들은 아주 자주 바뀝니다 (아래로 내려 가고, 이름을 바꾸고, 광고를 올리거나, 출력 형식을 바꿀 수 있습니다).
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
myip.opendns.com
구글의 공공 DNS에이?
curl http://canhazip.com
. 참조 askubuntu.com/a/427092/2273
참고 : 이것은 외부 IP 주소 (인터넷에있는 서버가 서버를 연결할 때 표시되는 주소)에 대한 것입니다. 내부 IP 주소 를 원할 경우 (자체 컴퓨터가 연결에 사용하는 것과 다를 수 있음)이를 참조 하십시오. 대답 .
dig +short myip.opendns.com @resolver1.opendns.com
또는 externalip 사용 :
externalip dns
curl -s http://whatismyip.akamai.com/
또는 externalip 사용 :
externalip http
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
echo close | ftp 4.ifcfg.me | awk '{print $4; exit}'
또는 externalip 사용 :
externalip ftp
externalip dns
externalip http
externalip https
externalip telnet
externalip ftp
특히 여기 또는 다른 곳에 게시 된 HTTP를 통해 외부 IP를 제공하는 다양한 서버 옵션이 많이 있습니다.
나는 그들 중 하나가 다른 것보다 더 나은지 확인하기 위해 벤치 마크를 만들었고 결과에 놀랐습니다. 예를 들어 가장 널리 권장되는 ifconfig.me 중 하나가 거의 항상 느리게 반응하기까지 몇 초가 걸리기도했습니다. 많은 사람들이 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 % 패킷 손실을 의미합니다.
비교를 위해 바르샤바와 암스테르담에서 2015-06-16에 테스트 한 다른 방법이 있습니다.
사용 :
time dig +short myip.opendns.com @resolver1.opendns.com
일반적으로 소요되는 시간 (실시간 시계 시간) :
실제로있다 네 이 방법을 사용할 수 있습니다 리졸버는 :
바르샤바와 암스테르담에서 모두 동일한 응답 시간을 제공하지만 다른 지역에서는 그렇지 않을 수 있습니다.
208.67.222.222 사용-도메인 이름 대신 resolver1.opendns.com의 IP가 더 빠릅니다.
그러나 IP가 변경되면 향후에는 작동하지 않을 수 있습니다 (잘 알려진 DNS 해석 프로그램에는 적합하지 않을 수 있습니다-아마도 외부 IP 스크립트 에서 IP를 사용해야합니다 -의견을 보내 주십시오).
텔넷 nc
또는 telnet
명령 (위 참조)은 일반적으로 다음을 수행합니다.
( nc
와 telnet
명령 사이에는 눈에 띄는 차이가 없습니다 .)
주어진 서비스의 도메인 이름 대신 IP 주소가 사용될 때 (특히 처음으로 실행될 때) 모든 방법이 더 빠릅니다 (호스트 기반 가상 서버를 사용할 수 있고 베어 IP에서는 작동하지 않는 HTTP 제외)- 서비스가 IP 주소를 변경하면 더 빠르지 만 미래에 대한 증거는 줄어들 수 있습니다.
귀하의 위치에서 흥미로운 결과를 보거나 내가 선택한 호스트 대신 다른 호스트를 추천해야한다고 생각되면 의견을 게시하십시오. 중요한 서비스가 누락 된 경우 GitHub에 의견을 게시하거나 문제 를 게시하십시오. 이 게시물을 최신 성능의 최신 서비스로 업데이트하고 싶습니다.
myip.opendns.com
에서와 같이 DNS 방법 을 벤치마킹 했습니까 ? 현재이 방법에 대한 다른 공급자를 모르기 때문에 기본적으로 승자가되는 것처럼 보이지만 다른 방법과 비교하는 것이 여전히 유용합니다.
dig +short myip.opendns.com @resolver1.opendns.com
(36.86.63.180), dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
(118.98.115.34) 및 curl http://canhazip.com
(36.71.64.71)을 사용하여 다른 결과를 얻습니다 . 어느 것이 올바른지 어떻게 알 수 있습니까?
curl -s http://whatismijnip.nl |cut -d " " -f 5
네덜란드 작업 사이트로 교체되었습니다.
-s
옵션이 정말로 필요한가요? 나는 내 페도라 15-bash 4.2.10 (1)에서 /없이 시도했지만 두 가지 방식으로 작동했습니다.
이후 whatsmyip.org 및 ifconfig.me은 이미 언급되었다 :
curl -s icanhazip.com
curl
솔루션 (유효하지만)은 여전히 외부 라이브러리 ( libcurl
) 에 의존합니다 .
whatismyip.org의 대안으로 ifconfig.me 를 사용할 수 있습니다 .
curl -s http://ifconfig.me
또한 ifconfig.me에는 추가 기능이 있습니다. 다른 정보를 얻으려면 웹 사이트를 방문하십시오.
아마존 AWS
curl https://checkip.amazonaws.com
샘플 출력 :
123.123.123.123
난 그게 좋아 왜냐하면:
curlmyip.com을 사용하는 것을 선호합니다.
curl curlmyip.com
짧고 기억하기 쉽습니다.
bash
OP의 목적으로 사용하기 위해 -s
다른 답변에서 언급 한 옵션 없이는 사용할 수 없습니다 .
-s
스위치는 자동 모드로 실행합니다. 오류 메시지가 표시되지 않습니다. 따라서 스크립트가 오류를 처리하기를 원하는 방식으로 이어집니다. 명령 자체는를 사용하는 것처럼 IP 주소를 안정적으로 반환합니다 -s
.
netcat icanhazip.com 80 <<< $'GET / HTTP/1.1\nHost: icanhazip.com\n\n' | tail -n1
wget icanhazip.com
작동합니다.
| tail -n1
부분 을 생략하고 당신이 프록시에서 무엇을 참조하십시오
netcat icanhazip.com 80
. $http_proxy
프록시와 포트를 지정하면 -x
프로세스가 중단 되었기 때문에 무시 하고 친구 처럼 보입니다 .
netcat proxy 3128 <<<$'GET http://icanhazip.com/ HTTP/1.0\n\n' | tail -n 1
기본 HTTP 프록시의 경우 (포트 3128에서 실행 중이라고 가정). 그래도 프록시의 IP 주소를 다시 얻을 수 있습니다.
Host:
요청 헤더 가 없습니다. 이름 기반 가상 호스팅은 HTTP 1.1의 주요 개선 사항 중 하나였습니다. HTTP / 1.1을 지정하도록 요청을 변경하거나 호스트 헤더를 제거하십시오 (이를 권장합니다).
이 모든 제안을 읽은 후에 더 많은 것을 읽고 싶다면, 과도하게 엔지니어링 된 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
잠재적 인 함정을 피하기 위해 HTTPS를 사용하려는 경우 :
_result=$(wget -qO- https://ipcheckit.com/)
_result="${_result##*Your IP address is<br><b>}"
printf '%s\n' "${_result%%</b></p>*}"
비즈니스가 동적 IP 관리를 해결하는 호스트에 의존하는 또 다른 대안은 다음과 같습니다. "공공 서비스"사이트가 사라지거나 형식이 변경 될 수 있습니다.
스크립트에서 IP 주소를 얻으려면 다음을 수행하십시오.
external_ip=`dig +short xxx.no-ip.org`
cron 작업에서 동적 IP가 변경되었고 일부 구성 항목을 변경해야하는지 확인하는 데 유용합니다.
이것은 항상 나를 위해 작동합니다, 나는 내 IP 주소를 얻기 위해 내 conky에서 사용합니다.
wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'
amazonaws
. 즉, 구글에 대한 방법이 없다면. (조차도 lynx
).
연결이나 서비스에 의존하지 않기 때문에 다음 코드를 사용합니다.이 코드는 다른 서비스를 사용하여 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
하는 경우) 다음 기능을 사용하여 유효한 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;
}
ifcfg.me 는 다음을 지원합니다.
curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
curl : ifcfg.me/?
nslookup
이 dig
방법은 Krinkle의 답변 에 있는 방법과 어떤 관련이 있습니까? 둘 다 DNS를 사용합니다. 여기에서 수행 dig
하는 것과 동일한 DNS 레코드를 검색하도록 옵션을 전달할 수 nslookup
있습니까?
dig +short . @ifcfg.me
원한다면 사용할 수 있어요
나는 가족을 위해 클라우드 서비스를 운영하고 cron
있으며 정적 IP를 구입하지 않을 것이기 때문에 매일 아침 5시에 실행하는이 빠른 스크립트를 만들었습니다 .
공개 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" user1@someemail.com, user2@ect.com
IP 주소를 JSON / XML 또는 일반 텍스트로 반환하는 서비스를 설정했습니다. 여기에서 찾을 수 있습니다
/ json 및 / xml과 동일한 URL은 다른 형식도 제공합니다.
HTTPS를 원할 경우 https 접두사와 동일한 URL을 사용할 수 있습니다. Wi-Fi를 사용하더라도 공개 주소를 얻을 수 있다는 장점이 있습니다.
따라서 간단한 별칭 myip = "curl https://ipof.in/txt "는 IP를 얻습니다.
또는 STUN 을 사용 하여 자동화 된 방식으로이 질문에 대답하고 SIP 및 WebRTC 와 같은 인터넷 통신에 광범위하게 사용됩니다 .
stunclient (debian / ubuntu do에서 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
로컬 네트워크에있는 컴퓨터 W.X.Y.Z
의 IP 주소는 외부 (및 원하는 서버)에서 볼 수있는 웹 사이트와 같은 IP 주소 서버입니다. 를 사용 sed
하면 위의 출력을 IP 주소로만 줄일 수 있습니다.
stunclient stun.services.mozilla.com |
sed -ne "s/^Mapped address: \(.*\):.*$/\1/p"
기본 명령 줄 도구 만 사용하는 대안 STUN 조회 는 AskUbuntu에 대한 내 대답을 참조하십시오 (생산 용도가 아닌 재미있는 연습으로 의도 됨).