2010-07-21 06:06:13 +0000 2010-07-21 06:06:13 +0000
61
61

返回外部IP的Windows命令

有什么命令可以让我找到我的路由器的外部IP或我的NAT/DSL路由器等,省去了访问whatsmyip.net或类似的东西。

答案 (13)

109
109
109
2014-02-27 14:57:47 +0000

你可以用DNS请求代替HTTP请求来查找你的公共IP:

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

它使用resolver1.opendns.com dns服务器将神奇的myip.opendns.com.主机名解析为yourip地址。(注意:在查询中的尾数.可以防止搜索域被附加,这样可能会产生不正确的结果。)

Unix版本:

$ dig +short myip.opendns.com @resolver1.opendns.com
33
33
33
2010-07-21 08:24:26 +0000

http://curl.haxx.se/download.html 中抓取你自己的副本curlfrom http://curl.haxx.se/download.html ,然后只需

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

,或者使用powershell:

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

(免责声明:[http://myexternalip.com ]&003由我创建)

16
16
16
2010-07-21 06:28:20 +0000

没有内置的命令可以做到这一点。问题的一部分是,当你通过路由器连接到互联网时,你的网络硬件并没有直接连接到互联网,所以你的系统并没有特别指定一个IP。在某些情况下,如果你有一个反向代理,你甚至可能会有多个外部IP,就像许多企业网络的设置一样。你最好的办法是创建一个脚本来查询whatismyip.org,或者试着找一个已经存在的脚本。它比大多数其他的IP检测网站更容易在自定义脚本中使用。)

7
7
7
2015-04-23 08:25:29 +0000

这个很好用,我主要是在检查客户端计算机连接时用它和psexec一起使用。

6
6
6
2011-02-12 01:58:08 +0000

创建一个名为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

执行,正如nhinkle注意到的,最好选择一个只返回IP而不是HTML+广告等的网站。如:

(来源:原http://externip.com/about )

5
5
5
2014-02-16 13:34:55 +0000

使用Powershell 3.0(Windows 7的默认值是2.0),你可以使用 Invoke-WebRequest

For IPv4:*

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

For IPv6:

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

For IPv6:

&001

这将给你一个变量,如果你有什么特定的事情要做,可以用它来做。我实际上是用这个来建立一个脚本,定期上传我的路由器的动态IP,让另一台机器每隔一段时间测试一次,然后用最新的IP来更新DNS,如果它改变了,我就可以通过使用一个名字从任何地方访问我的设备,而不是不断地追寻IP。:)

5
5
5
2011-02-12 04:03:59 +0000

我在几个月前做了这个批处理脚本:

@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 METHOD:

现在,我就用这个来代替:

curl icanhazip.com

或者………..把当前的公共IP地址放到剪贴板中。

3
3
3
2014-01-15 00:48:54 +0000

没有第三方程序在Windows上很难,因为Telnet不是默认提供的,但是,如果有的话(XP)或打开了(Windows Vista以上),只需输入:

telnet curlmyip.com 80

,屏幕上就会闪烁,你会得到一个光标….. 接下来输入:

GET

………..然后你会看到头像,后面是你的IP(很抱歉我把它模糊了,只是显示出它的位置! ):

其他的答案显然也可以用,但是,我只是想把问题放在可以在任何窗口上使用的东西上,不需要第三方程序!

对于Windows Vista及以上的系统,你可以通过Programs and features轻松(安全)地安装telnet,或者使用下面的命令:

pkgmgr /iu:”TelnetClient”
3
3
3
2013-12-05 15:40:30 +0000

试试这个: 不需要安装任何形式的外部软件。

@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));
}
2
2
2
2014-11-28 11:40:53 +0000

你可以使用 ifcfg.me .

1
1
1
2015-10-07 22:09:34 +0000

我希望有一个可以在不安装第三方工具的情况下为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

在任务调度器中,你可以创建一个新的任务。在Trigger中,你可以使用设置每1天每天,在高级选项下,你可以选择每小时立即执行。同时在设置中勾选在错过了预定的启动时间后尽快运行任务。在Action下粘贴上面的执行代码。

这个powershell代码可以优化一下,因为我不是powershell大师(我是第一次使用)。现在我测试一下这个脚本是否每小时调用一次。

1
1
1
2015-03-22 15:25:28 +0000

我是这样想的,可以用内置的命令来获取公共IP地址,但你确实有上网的权限

telnet icanhazip.com

telnet myip.gelma.net
0
0
0
2018-11-08 19:54:03 +0000

ipchicken.com将返回您的表面上的IP地址的文本格式,如果你可以解析返回的HTML,你提取你的路由器的外部IP。另外,你可以安装一个动态DNS代理,更新您的外部IP到FQDN,然后只需做nslookup在您的FQDN上看到您当前的IP号。以前有免费的,比如DynDNS,但现在大多数都需要付费订阅。