Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   запрос на смену ip адреса (http://forum.oszone.net/showthread.php?t=285440)

konst_vrn@vk 22-07-2014 17:18 2379807

запрос на смену ip адреса
 
В общем BAT я знаю, а с VBSом только знакомлюсь.
У меня есть некий BAT скрипт, который проверяет наличие процесса *.exe, если процесс есть, то он идет дальше, если нет, меняет ИП-адрес и тоже идет дальше, НО иногда и процесса нет и ИП мне менять не надо. Хочу сделать окошко с вопросом ДА, НЕТ(менять, не менять ИП) при запуске, поэтому у меня несколько вопросов:

1) Можно ли вклеить в батник кусок VBSа или придется написать vbs отдельно и запустить из бат?
2) Если в vbs'е изменять ип-адрес, придется писать все: маску, шлюз и т.д. как в бат. В общем не получится ли так, что заполнится только поле с ИП, а все остальное будет пустым?
3) Можно ли на это окошко добавить таймер, типа не выбрал ответ через Н-время нажмется да или нет?
4) Нигде не могу толком найти, да и реализовать., как присвоить реакцию на нажатие да или нет в MsgBox. Поэтому прошу помощи.

Iska 22-07-2014 21:40 2379968

konst_vrn@vk, выложите код Вашего пакетного файла.

konst_vrn@vk 29-07-2014 16:15 2382819

Вот собственно кусок моего бат. Простите, что так долго, не имел доступа к машине.

некий переход "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\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Iska 29-07-2014 16:25 2382826

konst_vrn@vk, нужен не кусок кода, а весь код.

konst_vrn@vk 29-07-2014 22:24 2382973

Весь код страницы 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 переключение шлюза\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Iska 01-08-2014 06:36 2383944

konst_vrn@vk, это шутка такая у Вас, да? Обфускация кода в ручном режиме?! Где метки «checkminer», «checkprogramm»? Метка-«пустышка» «itsgataway1» — зачем? Понять общую логику в этом месиве крайне сложно.

Так что… Всё, что могу:


читать дальше »
Цитата:

Цитата konst_vrn@vk
1) Можно ли вклеить в батник кусок VBSа или придется написать vbs отдельно и запустить из бат? »

Или.

Или перейти целиком на WSH/PoSH.
Цитата:

Цитата konst_vrn@vk
2) Если в vbs'е изменять ип-адрес, придется писать все: маску, шлюз и т.д. как в бат. В общем не получится ли так, что заполнится только поле с ИП, а все остальное будет пустым? »

Сценарий Assign a Static IP Address

Цитата:

Цитата konst_vrn@vk
Хочу сделать окошко с вопросом ДА, НЕТ(менять, не менять ИП) »

Код:

If MsgBox("Change ip address", vbQuestion + vbYesNo, "Change ip address") = vbYes Then
        ' Place code for change ip address here
End If

Цитата:

Цитата konst_vrn@vk
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

Цитата:

Цитата konst_vrn@vk
4) Нигде не могу толком найти, да и реализовать., как присвоить реакцию на нажатие да или нет в MsgBox. »

См. в выше в этом посте.

konst_vrn@vk 02-08-2014 04:48 2384334

Iska, Я же говорю, выложить весь бат файл будет весьма проблематично, т.к. у меня в нем проверяется время изменения 2-х тексовых файлов, наличие в них записи об ошибках и еще куча всего. Если вывести на печать, 8 листов а4.
В принципе вы мне уже сильно помогли, большое спасибо.


Время: 11:35.

Время: 11:35.
© OSzone.net 2001-