Контакти

 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
We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.