![如何从 Windows 命令行获取我的外部 IP 地址(通过 NAT)?](https://linux22.com/image/1309257/%E5%A6%82%E4%BD%95%E4%BB%8E%20Windows%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%8E%B7%E5%8F%96%E6%88%91%E7%9A%84%E5%A4%96%E9%83%A8%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%88%E9%80%9A%E8%BF%87%20NAT%EF%BC%89%EF%BC%9F.png)
窗户“ipconfig”命令只能显示我机器的以太网接口的参数(即使有参数ipconfig /all
)。它可以显示有关接口的详细信息,但永远不会显示我的外部 IP 地址NAT网络。
不过,有几个网站,例如“我的 IP 地址是多少”可以获取并显示我的外部 IP 地址。所以我想知道是否有可能从外部获取此值?我是否应该期望有某种方法可以从本地机器的命令行获取此信息...
我需要获取此值来登录我正在使用的应用程序VB脚本cmd
。有没有办法从Windows 上做到这一点?
答案1
现在,使用 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 有类似的方法。
答案2
问题是,这不是你的 IP 地址。这是你的路由器的 IP 地址。
因此,如果不通过路由器,您将永远无法检索它。最简单的方法就是让路由器为您检索一个网站(正如您已经注意到的)。因为路由器将使用其 IP 地址来检索该网站。
话虽如此,你可以使用以下方法让自己轻松一点ifconfig.me/ip。现在,如果您有curl
,那么您已经完成了,如果没有:Windows 原生的 Wget/cURL 替代品?
答案3
创建一个 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 键,然后光盘..& 输入几次直到看到 C:>)
在 dos 提示符下输入:
cscript ip.vbs
您将立即看到您的外部 IP。
如果你把 vbs 文件放到 usb 密钥或类似的东西上(并且记得运行脚本ip.vbs在 dos 提示符下 - 但请确保您与 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 窗口,它只会显示在一个小弹出窗口中。
答案4
要获取外部 IP 地址,您需要询问网络外部的某个东西,并让其报告您的 IP 地址“看起来”是什么。这可以通过脚本来实现,即查询一个易于解析结果的页面并从中获取 IP 地址,但 Windows 中没有内置工具可以告诉您您的外部 IP 地址是什么。您需要自己编写一个或找到一个并下载它。