Как автоматически определить интерфейс, подключенный к Интернету - PullRequest
0 голосов
/ 19 мая 2019

Итак, у меня есть удаленный компьютер с простым .bat файлом:

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

Этот command запускает Tshark процесс и начинает нюхать

Теперь моя проблема в том, что я запускаю этот файл .bat на нескольких машинах, и на каждой машине правильный интерфейс отличается, поэтому с помощью команды Tshaek -D я могу получить все интерфейсы с индексными номерами, но здесь мне нужно знать, какой интерфейс подключен к Интернету.

И, конечно, мне нужно сделать это внутри моего .bat файла, и это должен быть мой номер интерфейса (в моем примере номер интерфейса - жесткий код и равен 1)

Есть предложения?

1 Ответ

0 голосов
/ 19 мая 2019

Это очень хакерский, но стоит сделать.

@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 адреса и используем каждый из них как источник для пинга google.com.Используя findstr, мы затем сопоставим reply, а затем errorlevel 0 определим, был ли адаптер активным.

Теперь мы просто перейдем на 5 строк, чтобы получить описание адаптера, затем мы findstr этот адаптер, используя tshark -D и просто выполните полную команду tshark.

Обратите внимание, что это будет совсем другое, если вы используете IPv6.

...