如何从Windows命令行获取我的外部IP地址(通过NAT)?[重复]


13

Windows的“ ipconfig”命令只能向我显示来自本机的以太网接口的ipconfig /all参数(甚至带有参数)。它可以显示有关该接口的详细信息,但是它永远不会显示我在NAT网络上的外部IP地址。

ipconfig / all-Windows屏幕截图

但是,有几个网站可以获取并显示我的外部IP地址,例如“我的IP地址是什么”。所以我想知道,是否可以从外部获得此值?我是否应该期望有某种方法可以从本地计算机上的命令行获取此信息...

我需要获取此值才能登录使用VBScript执行的应用程序。有没有办法从cmdWindows上执行此操作?


请注意,基于HTTP的what-is-my-IP服务可能会为您提供代理服务器的IP。(在有人指出HTTPS代理存在之前,您不能透明地代理HTTPS。如果有HTTPS代理,您将知道它。)
billpg 2012年

Answers:


11

现在,使用提供的网站Oliver,可以在VBScript中完成此操作。

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

PowerShell有类似的方法。


很好,很有效。我将其插入程序中。这是解决我的问题的好方法。谢谢。
Diogo 2012年

嗯,它在此脚本的第4行字符1处返回“拒绝访问”。甚至从管理员权限命令行运行它...您知道为什么吗?
Diogo 2012年

@DiogoRocha我不知道为什么。惨败的那辆可能更可靠。您也可能有防火墙或阻止wscript/的Internet访问的工具cscript
鲍勃

10

问题是,这不是您的IP地址。这是您路由器的IP地址。

因此,如果不通过路由器,将永远无法检索它。最简单的方法是使路由器轻松为您检索一个网站(您已经注意到)。因为路由器将使用其IP地址来检索该站点。

话虽如此,通过使用ifconfig.me/ip,您可以轻松自如。现在,如果您有curl,那么您已经完成了,如果还没有完成:Windows的Wget / cURL替代品?


1
ifconfig.me/ip需要很长时间才能加载。whatismyip.org为您提供了相同的纯文本IP,并且速度更快。
nhinkle 2012年

1
@nhinkle,但这可能取决于您的位置。它们对我来说似乎具有相同的加载时间,但是来自ifconfig.me的ping响应时间仅为一半(139ms与250ms)。可能更重要的是,该服务将保持尽可能长的时间,但是我们真的没有办法知道。
鲍勃

考虑端口转发规则和IPv4,路由器的外部IP地址没有问题。
mbx

5

创建一个VB脚本以随意运行。

将此输入txt文件:

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

关闭txt文件并将其重命名为ip.vbs(对于本示例,将其保存为C :)

在Windows中打开一个dos窗口(运行cmd)(哈!我只是意识到,如果您将其交换为运行dmc!

确保您在c:/中(如果不是,请输入c:并按Enter,然后按cd ..并输入几次,直到看到C:>)

在dos提示符下键入:

cscript ip.vbs

您将立即看到您的外部IP。

如果将vbs文件放在usb密钥上或其他东西上(并且记得在dos提示符下运行cscript ip.vbs-但请确保与ip.vbs文件位于同一目录中),则可以随身携带此文件无论您身在何处,都可以在任何计算机上运行.vbs文件以查看其外部IP。

另外请注意,可以将地址为icanhazip.com的行更改为以下任意一项:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

编辑后,您也可以在Windows中运行ip.vbs文件,而无需进入dos窗口,它只会显示在一个小的弹出窗口中。


icanhazip.com的响应时间非常短,比欧洲中部的ipconfig.me/ip要好。
Martin Braun


3

要获取外部IP地址,您需要询问网络外部的某些内容,并让其报告您的IP地址“显示”的名称。这可以通过脚本编写来完成,方法是查询易于解析结果的页面并从中获取IP地址,但是Windows内置的工具无法告诉您外部IP地址是什么。您将需要自己写一个或找到一个并下载。


2

使用DynDNS之类的方法为您的DHCP IP地址分配一个域名,然后,您可以对域名进行域名解析nslookup或ping(如果路由器配置为响应),然后从中提取IP地址。

唯一的其他Windows实用程序是traceroute,但它只会显示您连接到的出站网关,而不显示正在连接到该网关的路由器的IP地址。

编辑: 由于上面需要一些解析来提取IP地址字符串并ifconfig.me具有良好的稀疏响应,因此这是Bob脚本的一个变体,该函数可以测试无响应并返回良好的干净IP服务器启动时在脚本中使用的地址。

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function

1

如果您的路由器支持通用即插即用(UPnP),则可以查询其IP地址。

在Windows上,您可以使用WMI或从命令行使用WMIC工具查询此类信息。


2
你能举个例子吗?我对此非常感兴趣。
Der Hochstapler,2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.