Контакти

 Telegram: Magnumv44

 Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.

 GitHub

 Instagram

Иногда приходится искать довольно не тривиальные решения для простых казалось бы задач.

Так вот и в этот раз стал вопрос о том как же управлять двумя сетевыми картами для переключения между сетями. Если вкратце то задача состояла в следующем: есть компьютер с установленными на нем двумя сетевыми картами, нужно сделать так, что бы одна локальная сеть не пересекалась с другой!

Кто то скажет, мол если там разные подсети типа 192.168.1.0-254 и 192.168.10.0-254 то они и так не будут пересекаться, но тут немного все сложнее в плане человеческого фактора. Человек убежден, что есть вероятность взлома и по сути он прав.

По этому самый простой и надежный способ - это отключать одну сеть, когда работаешь с другой. Для этого наверняка уже придумано множество программ, но все же Я и мой сотрудник "rdx__x" решили придумать свое колесо.

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

На вопрос, а зачем это если можно просто сделать ярлыки и вручную отключать и включать сетевые, ответ опять же таки просто - человеческий фактор, юзвери они такие ;-)

Для ее реализации был использован DevCon.

DevCon — это программа с интерфейсом командной строки, которая используется в качестве альтернативы диспетчеру устройств С ее помощью можно включать, выключать, перезапускать, обновлять, удалять и опрашивать отдельные устройства или группы устройств. Программа DevCon также предоставляет необходимые разработчику драйвера сведения, которые недоступны с помощью диспетчера устройств.

С его помощью можно реализовать управление устройством (отключение/включение) из командной строки используя его имя в системе.

Для этого сначала необходимо взять сам файл devcon.exe и скопировать его в папку Windows/system32/

Затем в произвольно месте создать bat файл для его последующего запуска.

Пример кода:

@echo off
set Inet="PCI\VEN_1969&DEV_1048&SUBSYS_82261043&REV_B0\4&625283&0&00E5"
set Local="PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&19ABE7DE&0&08F0"

echo Connection check . . .
:check
ping 192.168.10.1 > nul
if not %errorlevel%==1 goto switch
cls
echo Connecting Inet . . .

devcon disable @%Local%
devcon enable @%Inet%

cls
echo Connected Inet !
goto end

:switch
devcon disable @%Inet%
devcon enable @%Local%

cls
echo Connected Local Network !

:end

Немного объясню суть выше написанного кода:

Сначала берутся два устройства Inet и Local, каждому из них присваивается имя нужного устройства в системе.

Примечание: не путайте название с именем в системе, название может быть "Подключение по локальной сете", а вот имя "PCI\VEN_1969&DEV_1048&SUBSYS_82261043&REV_B0\4&625283&0&00E5". Оно берется в диспетчере устройств "ID оборудования"

ID Оборудования

Затем простой командой ping проверяем доступность сетевого диапазона сети Inet, пингуя например адрес DHCP сервера. Если он не доступен, то вторая сетевая карта с название Local отключается, а первая нужная включается. Если же наоборот, то первая отключается, а вторая включается.

Собственно на этом изобретение очередного колеса и заканчивается! =)

Ссылки по теме:

  1. Описание DevCon на сайте Microsoft
  2. Пример готового bat файла с файлом devcon.exe