查找工作站的源 IP

查找工作站的源 IP

我想确定工作站上的主要源 IP 是什么(当连接通过默认网关时使用)

工作站上有许多 IP/接口(许多私有子网、虚拟箱,脚本应该忽略)。

我找到了 %computername%,但它不可靠,因为它经常返回 virtualbox 网络的私有 IP。

我想在“路线打印”上找到它

for /f "tokens=4" %%a in ('route PRINT -4 ^| findstr 0.0.0.0') do set _IPaddr=%%a
echo IP is: %_IPaddr%

但是“findstr 0.0.0.0”还返回其他路线:

>route PRINT -4 | findstr /s /i /m 0.0.0.0
          0.0.0.0          0.0.0.0      10.170.44.1    10.170.44.150      2
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link     192.168.177.1    281
        224.0.0.0        240.0.0.0         On-link     192.168.137.1    311
        224.0.0.0        240.0.0.0         On-link     10.170.44.150    257

如何告诉 findstr 仅返回以空格开头然后是 0.0.0.0 的第一行?(默认路线)?

答案1

首先,你提出了一些多余的论点:

  • /s用于搜索目录和子目录
  • /i不区分大小写,这在搜索数字时没有意义

这应该可以实现你想要的效果:

route PRINT -4 | findstr /c:" 0.0.0.0"

指示按字面/c意思findstr搜索后续字符串,即防止它剥离前导空格。

或者你也可以route自己做更多的工作:

route PRINT 0.0.0.0 | findstr "0.0.0.0"

相关内容