Ну тут в любом случае сеть будет падать секунд на 5-10 при смене шлюза.
route change 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 1
route change 0.0.0.0 mask 0.0.0.0 192.168.0.254 metric 1
On Error Resume Next for a = 1 to 1e15 WScript.Sleep 5000 strComputer = "." strTarget = "192.168.1.101" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colPings = objWMIService.ExecQuery _ ("Select * From Win32_PingStatus where Address = '" & strTarget & "'") If Err = 0 Then Err.Clear For Each objPing in colPings 'избавиться от форича If Err = 0 Then Err.Clear If objPing.StatusCode = 0 Then Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "CMD" WScript.Sleep 1000 oShell.SendKeys "route change 0.0.0.0 mask 0.0.0.0 192.168.1.101 metric 1 " & chr(13) WScript.Sleep 1000 oShell.SendKeys "exit" & chr(13) ' если статус = 0, пустая строка - другое Else Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "CMD" WScript.Sleep 1000 oShell.SendKeys "route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1 " & chr(13) WScript.Sleep 1000 oShell.SendKeys "exit" & chr(13) End If Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Next Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Next
ping 192.168.1.101 if ERRORLEVEL 1 (route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1 ) ELSE (route change 0.0.0.0 mask 0.0.0.0 192.168.1.101 metric 1)
On Error Resume Next Do While a < 3 WScript.Sleep 5000 strComputer = "." strTarget = "192.168.1.101" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colPings = objWMIService.ExecQuery _ ("Select * From Win32_PingStatus where Address = '" & strTarget & "'") If Err = 0 Then Err.Clear For Each objPing in colPings 'избавиться от форича If Err = 0 Then Err.Clear If objPing.StatusCode = 0 Then Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.1.101 metric 1" aa = "192.168.1.101" ' если статус = 0, пустая строка - другое Else Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1" aa = "192.168.1.1" End If Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Next Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Do While b < 3 WScript.Sleep 5000 strComputer2 = "." strTarget2 = "192.168.1.101" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer2 & "\root\cimv2") Set colPings = objWMIService.ExecQuery _ ("Select * From Win32_PingStatus where Address = '" & strTarget2 & "'") If Err = 0 Then Err.Clear For Each objPing in colPings 'избавиться от форича If Err = 0 Then Err.Clear If objPing.StatusCode = 0 And aa="192.168.1.101" Then ' если статус = 0, пустая строка - другое ElseIf objPing.StatusCode <> 0 And aa="192.168.1.1" Then Else b=b+1 End If Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Next Else Err.Clear WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "." End If Loop b=0 Loop
artemka9p писал(а):route change 0.0.0.0 mask 0.0.0.0 192.168.1.101 metric 1
почемуто не меняэт основной шлюз когда прописываю в СМД
после прописи сотрю в настройки сетевой карти нечего неменяетсо(
но в маршрутах изменил и тапать начинает правильно...
Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1"
С помощью Netsh можно изменить текущую сетевую конфигурацию. По команде
netsh interface ip set address «Local Area Connection» static 192.168.0.10 255.255.255.0 192.168.0.254
адрес IP в системной конфигурации устанавливается для Local Area Connection в 192.168.0.10, маска подсети — 255.255.255.0, адрес шлюза — 192.168.0.254. Такой вариант использования команды Netsh применяется в ноутбуках, которые могут при необходимости переключаться между статическими и динамическими сетями.
netsh interface ip set address name="Подключение по локальной сети" static 192.168.0.234 255.255.255.0 192.168.0.1 1 netsh interface ip set dns name="Подключение по локальной сети" static 192.168.0.1 netsh interface ip add dns name="Подключение по локальной сети" addr=192.222.222.111 index=2 netsh interface ip set address name="Local Area Connection" static 192.168.0.234 255.255.255.0 192.168.0.1 1 netsh interface ip set dns name="Local Area Connection" static 192.168.0.1 netsh interface ip add dns name="Local Area Connection" static" addr=192.222.222.111 index=2
@echo off FOR /F "usebackq delims=" %%x IN (`netsh interface ip dump ^| find "1.2.3.4"`) DO ( set V=%%x call set V=%%V:"=µ%% FOR /F "tokens=2 delims=µ" %%G IN ('call echo.%%V%%') DO ( netsh interface ip set address name="%%G" static 192.168.0.234 255.255.255.0 192.168.0.1 1 netsh interface ip set dns name="%%G" static 192.168.0.1 netsh interface ip add dns name="%%G" addr=192.222.222.111 index=2 echo Done. ) ) pause
/ip proxy access> 1 src-address=192.168.0.6 action=deny redirect-to="www.hicom.net/6" hits=1 2 src-address=192.168.0.7 action=deny redirect-to="www.hicom.net/7" hits=3
<? $csv_file = fopen ('ip_change.csv', 'r'); while ( $tmp = rtrim(fgets($csv_file))) { list ($old_ip, $new_ip) = explode (",", $tmp); if ($old_ip == $_SERVER['REMOTE_ADDR']) { print ("@echo off FOR /F \"usebackq delims=\" %%x IN (`netsh interface ip dump ^| find \"$old_ip\"`) DO ( set V=%%x call set V=%%V:\"=µ%% FOR /F \"tokens=2 delims=µ\" %%G IN ('call echo.%%V%%') DO ( netsh interface ip set address name=\"%%G\" static $new_ip 255.255.255.0 192.168.0.1 1 netsh interface ip set dns name=\"%%G\" static 192.168.0.1 netsh interface ip add dns name=\"%%G\" addr=192.222.222.111 index=2 echo Done. ) ) pause" ); } } fclose($csv_file); ?>
192.168.0.1,192.168.1.1 192.168.0.2,192.168.1.2 192.168.0.3,192.168.1.3 192.168.0.4,192.168.1.4 192.168.0.5,192.168.1.5 192.168.0.6,192.168.1.6 192.168.0.7,192.168.1.7 192.168.0.8,192.168.1.8 192.168.0.9,192.168.1.9 192.168.0.10,192.168.1.10
@echo off REM ===Список старых,новых адресов=== echo 192.168.52.1, 192.168.168.168 >> %TEMP%\ips.csv echo 192.168.52.2, 192.168.168.169 >> %TEMP%\ips.csv echo 192.168.52.3, 192.168.168.170 >> %TEMP%\ips.csv REM ===Список статичных сетевых параметров=== set OLDNETADDR=192.168.52 set NEWNETMASK=255.255.255.0 set NEWNETGW=192.168.0.1 set NEWNETDNS1=192.168.0.1 set NEWNETDNS2=192.222.222.111 REM ===Код скрипта=== FOR /F "usebackq delims=" %%x IN (`netsh interface ip dump ^| find "add address" ^| find "%OLDNETADDR%"`) DO ( set V=%%x call set V=%%V:"=µ%% FOR /F "tokens=2,3 delims=µ" %%G IN ('call echo.%%V%%') DO ( FOR /F "tokens=2 delims==" %%K IN ("%%H") DO ( echo Your old IP: %%K FOR /F "tokens=2 delims=, usebackq" %%L IN (`type %TEMP%\ips.csv ^| find "%%K"`) DO ( echo Your new IP: %%L echo Changing network settings... netsh interface ip set address name="%%G" static %%L %NEWNETMASK% %NEWNETGW% 1 netsh interface ip set dns name="%%G" static %NEWNETDNS1% netsh interface ip add dns name="%%G" addr=%NEWNETDNS2% index=2 echo Done. ) ) ) ) del %TEMP%\ips.csv pause
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3