PDA

Показать полную графическую версию : [решено] Автоматизация запуска на удаленных машинах


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

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

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

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

Iska
30-10-2011, 16:07
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
Начало отличное - стартуют все 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
О! Вот так - работает! Респект!

@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
но как только psexec соеденился и начинается выполнение cmd файлов на самих
серверах, названия окон меняются на \\имя_сервера: путь_к_cmd_файлу, и основной job сразу же стартует (не дождавшись
окончания рабрты cmd-шников на сервере). »
О! Вот так - работает! »
Ну и славненько ;). На самом «PsExec.exe» я не проверял сетевую работу по причине отсутствия на тот момент доступа к самой сети.




© OSzone.net 2001-2012