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

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

Eug.. 30-10-2011 13:51 1784900

Автоматизация запуска на удаленных машинах
 
На сервере 1 есть 4 bat-файла для серверов 2,3,4,5
которые запускают на них некоторые процедуры с файлами (посредством psexec).

Там же на сервере 1 есть 5-ый bat-файл который нужно запустить только после того как отработают первые 4.

Cейчас приходится запускать первые 4 файла (один за другим) что бы выполнялись параллельно, а затем, визуально убедившись
в том, что они отработали, уже запускать файл 5.

Можно ли все это сделать 1 BAT файлом?

Iska 30-10-2011 16:07 1785026

Eug.., можно попробовать так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

title Waiting child batches...

start "Working with Server 0001..." 0001.cmd ^& exit
start "Working with Server 0002..." 0002.cmd ^& exit
start "Working with Server 0003..." 0003.cmd ^& exit
start "Working with Server 0004..." 0004.cmd ^& exit

:Repeat
        ping.exe -n 2 localhost >nul

        >nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat

title Now this batch working...

echo Здесь Ваш код

pause

endlocal
exit /b 0


Eug.. 01-11-2011 12:13 1786363

Начало отличное - стартуют все 4 cmd-шника оновременно и пока psexec соединяется, окна действительно называются
"Working with ..." и основной job ждет, но как только psexec соеденился и начинается выполнение cmd файлов на самих
серверах, названия окон меняются на \\имя_сервера: путь_к_cmd_файлу, и основной job сразу же стартует (не дождавшись
окончания рабрты cmd-шников на сервере).

Попробовал вставить строку

>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq \\192б168*" | find.exe /i "cmd.exe") && goto :Repeat

- не помогает...

Eug.. 01-11-2011 13:15 1786413

О! Вот так - работает! Респект!

@echo off
setlocal enableextensions enabledelayedexpansion

title Waiting child batches...

start "Working with Server 0001..." 0001.cmd ^& exit
start "Working with Server 0002..." 0002.cmd ^& exit
start "Working with Server 0003..." 0003.cmd ^& exit
start "Working with Server 0004..." 0004.cmd ^& exit

:Repeat
ping.exe -n 2 localhost >nul

>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq Working with Server 000*" | find.exe /i "cmd.exe") && goto :Repeat
>nul (2>nul tasklist.exe /fi "WINDOWTITLE eq \\192.168.*" | find.exe /i "cmd.exe") && goto :Repeat

title Now this batch working...

echo Здесь Ваш код

pause

endlocal
exit /b 0

Iska 01-11-2011 13:49 1786440

Цитата:

Цитата Eug..
но как только psexec соеденился и начинается выполнение cmd файлов на самих
серверах, названия окон меняются на \\имя_сервера: путь_к_cmd_файлу, и основной job сразу же стартует (не дождавшись
окончания рабрты cmd-шников на сервере). »

Цитата:

Цитата Eug..
О! Вот так - работает! »

Ну и славненько ;). На самом «PsExec.exe» я не проверял сетевую работу по причине отсутствия на тот момент доступа к самой сети.


Время: 18:18.

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