Показать полную графическую версию : запрос на смену ip адреса
konst_vrn@vk
22-07-2014, 17:18
В общем BAT я знаю, а с VBSом только знакомлюсь.
У меня есть некий BAT скрипт, который проверяет наличие процесса *.exe, если процесс есть, то он идет дальше, если нет, меняет ИП-адрес и тоже идет дальше, НО иногда и процесса нет и ИП мне менять не надо. Хочу сделать окошко с вопросом ДА, НЕТ(менять, не менять ИП) при запуске, поэтому у меня несколько вопросов:
1) Можно ли вклеить в батник кусок VBSа или придется написать vbs отдельно и запустить из бат?
2) Если в vbs'е изменять ип-адрес, придется писать все: маску, шлюз и т.д. как в бат. В общем не получится ли так, что заполнится только поле с ИП, а все остальное будет пустым?
3) Можно ли на это окошко добавить таймер, типа не выбрал ответ через Н-время нажмется да или нет?
4) Нигде не могу толком найти, да и реализовать., как присвоить реакцию на нажатие да или нет в MsgBox. Поэтому прошу помощи.
konst_vrn@vk, выложите код Вашего пакетного файла.
konst_vrn@vk
29-07-2014, 16:15
Вот собственно кусок моего бат. Простите, что так долго, не имел доступа к машине.
некий переход "goto TestInternet" проверяет наличие интернета на установленном шлюзе, если его нет, вновь меняет шлюз. Далее цикл работает без этой проверки, т.е. проверка запускается единожды, при запуске бат.
::///////////////////////////////////////////////START\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
:start
@echo off
echo _________________________________________________________
echo START %date% %time% >> %log%
echo START %date% %time%
tasklist | find "%process%"
if errorlevel 1 (goto load) else goto TestInternet
:load
echo _________________________________________________________
echo Wait load CPU - 15sec...
netsh interface ip set address name=%lan% static addr=%ip% mask=255.255.255.0 gateway=%gataway1% gwmetric=1
ping -n 15 127.0.0.1>nul 2>&1
goto TestInternet
:://///////////////////////////////////////////// END START\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
konst_vrn@vk, нужен не кусок кода, а весь код.
konst_vrn@vk
29-07-2014, 22:24
Весь код страницы 3 тут)))
Вот именно моя задача по запуску, проверке и переключению
@echo off
::----------------------/Настройки сети------------------------
set lan="LAN"
::Название подключения по локальной сети
set ip=192.168.0.11
:: наш IP адрес
set gataway1=192.168.0.253
::Основной шлюз
set operator1=TELE 2
::название провайдера основного шлюза
set gataway2=192.168.0.254
::Резервыный шлюз
set operator2= Intercon
::название провайдера резервного шлюза
::----------------------/Настройки сети------------------------
set process=sg.exe
::имя процесса
set log=C:\Users\admin\Desktop\log_checker.txt
::Куда записывать лог работы bat файла?
::///////////////////////////////////////////////START\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
:start
@echo off
echo _________________________________________________________
echo START %date% %time% >> %log%
echo START %date% %time%
tasklist | find "%process%"
if errorlevel 1 (goto load) else goto TestInternet
:load
echo _________________________________________________________
echo Wait load CPU - 15sec...
netsh interface ip set address name=%lan% static addr=%ip% mask=255.255.255.0 gateway=%gataway1% gwmetric=1
ping -n 15 127.0.0.1>nul 2>&1
goto TestInternet
:://///////////////////////////////////////////// END START\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
::////////////////////////////////проверка интернета надо ли переключить шлюз\\\\\\\\\\\\\\\\\\\\\\\\\\\\
:TestInternet
echo _________________________________________________________
echo Test internet...
@echo off
ping -n 5 -l 1 ya.ru|Find /I "TTL="||goto con1_2
echo --- Test is OK
goto checkprogramm
:://////////////////////////////END проверка интернета, надо ли переключить шлюз?\\\\\\\\\\\\\\\\\\\\\\\\\\\\
:://///////////////////////////////////////////// переключение шлюза\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
:con1_1
@echo off
echo NO Internet %date% %time% >> %log%
echo _____ Check %operator1% _____
netsh interface ip set address name=%lan% static addr=%ip% mask=255.255.255.0 gateway=%gataway1% gwmetric=1
ping -n 10 127.0.0.1>nul 2>&1
ping -n 5 ya.ru | find /i "TTL=">nul
if %errorlevel%==0 (
goto whatsGataway
) else (
goto con1_2
)
:con1_2
@echo off
echo _____ Check %operator2% _____
netsh interface ip set address name=%lan% static addr=%ip% mask=255.255.255.0 gateway=%gataway2% gwmetric=1
ping -n 10 127.0.0.1>nul 2>&1
ping -n 5 ya.ru | find /i "TTL=">nul
if %errorlevel%==0 (
goto whatsGataway
) else (
goto con1_1
)
:whatsGataway
@echo off
echo _________________________________________________________
:itsgataway1
ipconfig|Find /I "%gataway1%"||goto whatsGataway2
echo Connect internet - %operator1%
echo Internet Set %operator1% %date% %time% >> %log%
goto checkminer
:whatsGataway2
echo Connect internet - %operator2%
echo Internet Set %operator2% %date% %time% >> %log%
goto checkprogramm
:://////////////////////////////////////////// END переключение шлюза\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
konst_vrn@vk, это шутка такая у Вас, да? Обфускация кода в ручном режиме?! Где метки «checkminer», «checkprogramm»? Метка-«пустышка» «itsgataway1» — зачем? Понять общую логику в этом месиве крайне сложно.
Так что… Всё, что могу:
1) Можно ли вклеить в батник кусок VBSа или придется написать vbs отдельно и запустить из бат? »
Или.
Или перейти целиком на WSH/PoSH.
2) Если в vbs'е изменять ип-адрес, придется писать все: маску, шлюз и т.д. как в бат. В общем не получится ли так, что заполнится только поле с ИП, а все остальное будет пустым? »
Сценарий Assign a Static IP Address (http://gallery.technet.microsoft.com/scriptcenter/8979c752-8288-4a18-b5ed-f3b79f013f4a)
Хочу сделать окошко с вопросом ДА, НЕТ(менять, не менять ИП) »
If MsgBox("Change ip address", vbQuestion + vbYesNo, "Change ip address") = vbYes Then
' Place code for change ip address here
End If
3) Можно ли на это окошко добавить таймер, типа не выбрал ответ через Н-время нажмется да или нет? »
«Нажмётся» «Да» через 5 секунд:
Dim intRetValue
intRetValue = WScript.CreateObject("WScript.Shell").Popup("Change ip address", 5, "Change ip address", vbQuestion + vbYesNo)
If intRetValue = vbYes Or intRetValue = -1 Then
' Place code for change ip address here
End If
4) Нигде не могу толком найти, да и реализовать., как присвоить реакцию на нажатие да или нет в MsgBox. »
См. в выше в этом посте.
konst_vrn@vk
02-08-2014, 04:48
Iska, Я же говорю, выложить весь бат файл будет весьма проблематично, т.к. у меня в нем проверяется время изменения 2-х тексовых файлов, наличие в них записи об ошибках и еще куча всего. Если вывести на печать, 8 листов а4.
В принципе вы мне уже сильно помогли, большое спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.