batch-file - 如何自动检测连接到互联网的接口
问题描述
所以我有一个带有简单.bat
文件的远程机器:
C:\Program Files\Wireshark\tshark.exe -i 1 -w c:\file.pcap
这个command
启动Tshark
过程并开始嗅探
现在我的问题是我.bat
在几台机器上启动这个文件并且在每台机器上正确的接口是不同的所以通过推荐Tshaek -D
我可以得到所有带有索引号的接口但是从这里我需要知道哪个接口是连接到的互联网。
当然,我需要在我的.bat
文件中执行此操作,这需要是我的接口号(在我的示例中,接口号是硬代码,等于 1)
有什么建议么 ?
解决方案
这是非常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,这将完全不同。
推荐阅读
- sql - 在多对多联结表中查找缺失的记录
- typescript - Ionic Native HTTP 客户端(@ionic-native/http)在导入时不工作
- appcelerator - var win = Ti.UI.createWindow({theme: "Theme.MyThemeActionbar",}); 不在本地文件中工作,但在 tiapp.xml 中工作正常
- javascript - 如何根据 reactGridLayout 变化自动渲染表格宽度?
- android - android:button="@null" 不适用于较低的 API <= 19 设备
- qt - 如何从 qtquick 控件 2.3 自定义 ScrollView
- javascript - 我想在javascript中画一个圆圈
- python - 无法在 Windows 上安装正确版本的 mysql(8.0.13)
- laravel - 实时服务器上的 Laravel 队列中断在本地运行良好
- r - 如何根据前一行过滤行并使用 dplyr 保留前一行?