首页 > 解决方案 > 如何自动检测连接到互联网的接口

问题描述

所以我有一个带有简单.bat文件的远程机器:

C:\Program Files\Wireshark\tshark.exe -i 1 -w c:\file.pcap

这个command启动Tshark过程并开始嗅探

现在我的问题是我.bat在几台机器上启动这个文件并且在每台机器上正确的接口是不同的所以通过推荐Tshaek -D我可以得到所有带有索引号的接口但是从这里我需要知道哪个接口是连接到的互联网。

当然,我需要在我的.bat文件中执行此操作,这需要是我的接口号(在我的示例中,接口号是硬代码,等于 1)

有什么建议么 ?

标签: batch-filetshark

解决方案


这是非常hacky,但应该这样做。

@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig ^|findstr "IPv4"') do (
    ping -n 1 -S%%i google.com |findstr /i reply
    if not errorlevel 1 for /f %%a in ('ipconfig ^| findstr /I /N "%%i"') do set cnt=%%a
)
set /a cnt-=5
for /f "tokens=1* delims=:" %%i in ('ipconfig ^|more +%cnt%') do set adap=%%i & goto runts
:runts
set adap=%adap:*adapter =%
for /f "usebackq delims=." %%i in (`""C:\Program Files\Wireshark\tshark.exe" -D | findstr /I "%adap%""`) do (
    "C:\Program Files\Wireshark\tshark.exe" -i %%i -w c:\file.pcap
)

我们所做的是,运行ipconfig并获取所有IPv4地址,并将每个地址用作 ping 的源google.com。使用findstr我们然后匹配reply然后errorlevel 0将确定适配器是否是活动的。

现在我们只需向上 5 行获取适配器的描述,然后我们findstr使用该适配器tshark -D并简单地运行完整的tshark命令。

请注意,如果您使用 IPv6,这将完全不同。


推荐阅读