

Ну тут в любом случае сеть будет падать секунд на 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

, не клепать а сделать скрипт. В моём случай на 30 ПК можно и сделать руками.
/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


а так как из-за сложной таблицы рутинга от них берется только ИП-адрес, а шлюз в их сторону вбивается статично, то инет и не работает 


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2