외부 IP를 반환하는 Windows 명령


답변:


14

이를위한 기본 제공 명령이 없습니다. 문제는 라우터를 통해 인터넷에 연결되어있을 때 네트워크 하드웨어가 인터넷에 직접 연결되어 있지 않기 때문에 시스템에 IP가 특별히 할당되어 있지 않다는 것입니다. 많은 회사 네트워크가 설정되어 있기 때문에 리버스 프록시 뒤에있는 경우 경우에 따라 여러 개의 외부 IP를 가질 수도 있습니다. 가장 좋은 방법은 whatismyip.org 를 쿼리 하거나 이미 존재하는지 확인 하는 스크립트를 만드는 것입니다.

(팁으로 whatismyip.org는 IP를 일반 텍스트로 반환하기 때문에 대부분의 다른 솔루션보다 선호됩니다. 불필요한 텍스트, 링크, 이미지 또는 기타 가비지가 없습니다. 대부분의 경우보다 사용자 정의 스크립트에서 사용하는 것이 훨씬 쉽습니다 다른 IP 탐지 사이트.)


6
불행히도 그들은 whatismyip.org를 바꿨습니다. IP 주소는 이제 이미지 로 반환되어 스크립팅에 거의 쓸모가 없습니다. 아래에 언급 된 "icanhazip.com"웹 사이트 작동합니다.
onnodb

Yandex가 작동 중입니다. 아래에 게시 된 스크립트를 확인하십시오.
Filipe YaBa Polido


107

HTTP 요청 대신 DNS 요청을 사용하여 퍼블릭 IP를 찾을 수 있습니다.

C:\> nslookup myip.opendns.com. resolver1.opendns.com

그것은 사용하는 resolver1.opendns.com마법 해결하기 위해 DNS 서버 myip.opendns.com.에 호스트 이름 당신의 IP 주소를. (참고 : .조회 의 후행 은 검색 도메인이 추가되지 않도록하여 잘못된 결과를 생성 할 수 있습니다.)

유닉스 버전 :

$ dig +short myip.opendns.com @resolver1.opendns.com

1
매력처럼 일했다.
BK

화려한, 아무것도 설치하지 않고 작동합니다.
ericosg

2017 년 11 월 Windows 10에서 더 이상 작동하지 않았습니다. Bradley Forney의 PowerShell 답변이 작동합니다.
Jason

여전히 나를 위해 일했습니다 (Windows 10, 2017 년 12 월). 매우 영리한 @jfs, OpenDNS에서 어떻게 발견했는지 문서화 했습니까?
Alex KeySmith

4
실제 명령을 제공하고 작동하기 때문에 이것이 정답입니다. 수락 된 대답은 명령이 없다는 것을 알리며 (거짓으로 판명 됨) 실제로 방향을 제시하지 않고 스크립트 사용을 제안합니다.
CyberClaw

30

http://curl.haxx.se/download.htmlcurl 에서 자신의 사본을 가져온 다음

curl "http://myexternalip.com/raw"

또는 powershell을 사용하십시오.

$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")

(면책 조항 : http://myexternalip.com 은 내가 만든 것입니다)


IPv6 주소 만 제공합니다. IPv4 주소를 얻는 방법이 있습니까?
tim11g

나는 계속 읽고 Powershell에 대한 IPv4 / IPv6 예를 찾았습니다. 이 같은 컬의 IPv4를 얻을 수 있습니다 "C :> 컬" myip.dnsomatic.com "
tim11g

7

이것은 잘 작동합니다. 클라이언트 컴퓨터 연결을 검사 할 때 주로 psexec와 함께 사용합니다.

nslookup myip.opendns.com resolver1.opendns.com

6

이름이 지정된 파일을 작성하고 다음에 파일 ip.vbs을 복사하십시오.

Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
http.Open "GET", "http://icanhazip.com", False
http.Send
Wscript.Echo http.responseText   'or do whatever you want with it
Set http = Nothing

를 사용하여 실행

C:\>cscript ip.vbs

Nhinkle이 지적했듯이 HTML + 광고 등이 아닌 IP 만 반환하는 사이트를 선택하는 것이 가장 좋습니다.

(출처 : 이전 http://externip.com/about )


5

이 배치 스크립트를 몇 달 전에 수행했습니다.

@echo off

:: WhatIsMyIP.cmd - returns public IP address
:: requires: wget.exe

if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP

wget -q -O %temp%\MyIP http://www.whatismyip.com/automation/n09230945.asp
for /f "delims= " %%G in (%temp%\myip) do set PublicIP=%%G & del %temp%\MyIP
echo. & echo Your public IP address is %PublicIP% & echo.
if [%1]==[--clip] echo %PublicIP% | clip
goto :EOF

:HELP
echo. & echo Usage: whatismyip [--clip] & echo.
goto :EOF

:EOF

IP 주소를 클립 보드에 넣는 옵션을 제공하고 환경 변수를 설정합니다 %PublicIP%.


SIMPLER 방법 :

이제, 나는 대신에 이것을한다 :

curl icanhazip.com

또는...

curl icanhazip.com | clip

... 현재 공개 IP 주소를 클립 보드로 가져옵니다.

cURL 이 필요합니다 .


1
paradroid의 스크립트는 정상적으로 작동했지만 whatsmyip은 웹 페이지를 automation.whatismyip.com/n09230945.asp 로 옮겼습니다.이 페이지로 변경하면 완벽하게 작동합니다.

5

Powershell 3.0 (Windows 7 기본값은 2.0)을 사용하면 Invoke-WebRequest

IPv4의 경우 :

$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content

IPv6의 경우 :

$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content

이렇게하면 특정 작업을 수행 할 수있는 변수가 제공됩니다. 실제로 이것을 사용하여 라우터의 동적 IP를 주기적으로 업로드하고 정기적으로 다른 컴퓨터 테스트 통신을 수행 한 다음 최신 IP로 DNS를 업데이트하여 스크립트를 작성하여 어디서나 장비에 액세스 할 수 있습니다. 끊임없이 IP를 쫓아내는 대신 이름을 사용합니다.

물론 사이트가 변경되거나 출력이 변경되면 이에 따라 업데이트해야합니다. :)


이 접근법은 Windows 10에서 저에게 효과적이었습니다. 한 줄 명령이 필요했기 때문에 위의 따옴표를 따옴표로 묶었습니다 powershell.exe -noprofile -command "". 줄 바꿈을 세미콜론으로 구분하십시오.
Jason

1
짧막 한 농담? 방금 실행(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
merosss

3

시도해보십시오 :
어떤 종류의 외부 소프트웨어도 설치할 필요가 없습니다.

@set @script=0 /*
  @echo off
    set @script=
    cscript //nologo //e:jscript "%~dpnx0"
  exit /b
*/

with (new ActiveXObject('Microsoft.XMLHTTP')) {
   open('GET', 'http://internet.yandex.ru/', false);
   send();

   WScript.echo(responseText.match(/IPv4:\s(\d+\.){3}\d+/g));
}

3

Telnet이 기본적으로 제공되지 않기 때문에 Windows에 타사 프로그램이 없으면 어렵지만, XP가 있거나 켜져 있으면 (Windows Vista 이상) 다음을 입력하십시오.

telnet curlmyip.com 80

화면이 깜박이고 커서가 나타납니다 ... 다음 유형 :

GET

대문자로 표시하면 헤더가 표시되고 IP가 표시됩니다 (죄송합니다)

여기에 이미지 설명을 입력하십시오

여기에 다른 답변은 분명히 작동하지만 타사 프로그램없이 모든 창에서 사용할 수있는 것에 대한 질문을 계속하려고합니다!

Windows Vista 이상의 경우을 통해 텔넷을 쉽고 안전하게 설치 Programs and features하거나 다음 명령을 사용할 수 있습니다.

pkgmgr /iu:”TelnetClient”

그것은 (그리고 대부분의 답변!) 소스 웹 사이트가 귀하의 IP 주소를 정확하게 선택한다고 가정합니다-일부 프록시 유형은 이것을 엉망으로 만듭니다. 내 라우터에서 IP 주소를 긁어 내고 있습니다. 흥미롭게도 이러한 경우 비표준 포트를 사용하는 웹 사이트가 제대로 작동 할 수 있습니다.
Journeyman Geek

로 작업하지 않았지만로 작업을 curlmyip.com테스트했습니다 checkip.dyndns.org.
Sopalajo de Arrierez

2

ifcfg.me 를 사용할 수 있습니다 . 기본적으로 창과 함께 제공되는 일부 내부 명령을 지원합니다.

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

1

타사 도구를 설치하지 않고 Windows에서 작동하는 솔루션을 원했습니다 . 그래서 나는 매시간마다 스크립트를 실행 해야하는 powershell 옵션을 사용했습니다.

메모장으로이 스크립트를 작성합니다

$wc = new-object System.Net.WebClient
$ip = $wc.DownloadString("http://myexternalip.com/raw")
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $LogTime
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $ip
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"

getIP.ps1어딘가에 저장하십시오 . 이 스크립트를 powershell에서 직접 호출하거나 작업 플래너를 사용하여 수행 할 수 있습니다. 다음을 실행하는 명령입니다.

powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1

작업 스케줄러에서 새 작업을 만듭니다. 에서 트리거 당신은 설정을 사용하는 모든 1 일 매일 고급 옵션에서 당신이 선택하는 즉시 기간 동안 매 시간마다 . 설정 에서 예약 된 시작이 누락후 가능한 빨리 작업 실행을 확인 하십시오 . 아래 작업 당신은 위의 실행 코드를 붙여 넣습니다.

Powershell 코드가 최적화되어 있지 않습니다. Powershell 전문가가 아니기 때문입니다 (처음으로 처음 사용). 이제 스크립트가 매시간 호출되는지 테스트하고 있습니다.


1

여기 내가 알아 낸 것이 있습니다. 내장 명령을 사용하여 공개 IP 주소를 얻을 수는 있지만 인터넷에 액세스 할 수 있습니다

telnet icanhazip.com

또는

telnet myip.gelma.net

잘 잡아! 하지만이 icanhazip.com나를 위해 작동하지 않을 것이며, 다른 하나는 IPv6의를 제대로하지 않습니다. :)
Daniel B

0

ipchicken.com은 라우터의 외부 IP를 추출하는 반환 HTML을 구문 분석 할 수 있으면 텍스트 형식으로 IP 주소를 반환합니다. 또는 명백한 외부 IP를 FQDN으로 업데이트하는 동적 DNS 에이전트 중 하나를 설치 한 다음 FQDN에서 nslookup을 수행하여 현재 IP 번호를 확인할 수 있습니다. 예전에는 DynDNS와 같은 무료 제품이 있었지만 대부분 유료 구독 계정이 필요합니다.

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