CMD/BAT - Выполнение задачи со сдвигом.

Ответить
Аватара пользователя
krasavchik0

CMD/BAT - Выполнение задачи со сдвигом.

Сообщение krasavchik0 »

Через планировщик запускаю скрипт копирования файлов. Копирование идет через узкий канал. Поэтому хотелось иметь сдвиг по времени. Или возможность запускать скрипт в 50 случаев. Скажем запускаем скрипт получаем переменную рандом и если она меньше Х скрипт запускаем. Если не повезет и скрипт не запустится, то нечего страшного – просто он запустится при старте виндовс и будут тормоза 15-45 мин (чем больше одновременно включат чем дольше). В целом так сейчас и происходит ((. Дабы файлы месятся в источнике раз в 1-2 месяца. Но все ровно не удобно коллапс создается по утрам.





написал тестовый но переменная рандом не меняется((





Код:

Код: Выделить всё

FOR /L %%a IN (0,1,1000) DO (
set /a random10=%random%/3277
If %random% GTR 50 ( echo true2 %random% >>888.txt ) ELSE ( echo false2 %random% >>999.txt )
)
Аватара пользователя
megaloman

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение megaloman »

Цитата krasavchik0:



Через планировщик запускаю скрипт копирования файлов.
CMD/BAT - Выполнение задачи со сдвигом.




Как настроен запуск? При старте windows или по назначенному времени? На чем организован скрипт копирования, cmd? Версия windows?
Аватара пользователя
Iska

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение Iska »

krasavchik0, Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании.
Аватара пользователя
krasavchik0

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение krasavchik0 »

Цитата megaloman:



Как настроен запуск? При старте windows или по назначенному времени? На чем организован скрипт копирования, cmd? Версия windows?
CMD/BAT - Выполнение задачи со сдвигом.




Пока настроен в планировщике задании при включении ПК. Задание с правами система.



Но хочу "дергать" раз в 3 часа по времени. Так как разливаю по АД то индивидуально писать разное время всем не интересно.



Да скрипт в bat банальный это запускает планировщиком "При запуске"



Код:

Код: Выделить всё

robocopy "\\dc\distr\ххх" "C:\Program Files (x86)\хххх" /MIR /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log

А это хочу запускать по времени. Но хотелось иметь сдвиг как он сделать в домены политиках по сути мне нужен аналог GPO

"Случайная величина, добавляемая к интервалу времени обновления во избежание одновременных запросов групповой политики всеми клиентами. "





Код:

Код: Выделить всё

robocopy "\\dom\distr\ххх" "C:\Program Files (x86)\хххх" /E /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log


Цитата Iska:



Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании.
CMD/BAT - Выполнение задачи со сдвигом.




Я синхронизирую папку на ПК. Команды выше. Вот и хочу эту синхронизацию разнести по времени. Ручками это делать не хочу, через планировщик.

Вот и хотел в скрипте делать аналог орла и решки. Орел запускать, решка нет. Путем вероятностей сделать, что бы скорее всего скрипт запустился у 10 (Опять переживу если он запустится всего 5 или 35% ) процентов пользователей. Супер точность не нужна.



При этом я понимаю и допускаю, что могут быть случае когда на одном ПК выпал орел за неделю 10 раз. А у другого не разу... не страшно, ну не повезло пользователю. Будет ждать долго загрузки((.
Аватара пользователя
Iska

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение Iska »

krasavchik0, %RANDOM% здесь точно не пригоден. Он слишком «псевдо» для этого. Возьмите какой-нибудь WSH или PoSH. Например, WSH/vbscript:



Код:

Код: Выделить всё

Option Explicit
Randomize Timer
If Int(101 * Rnd()) <= Int(WScript.Arguments.Item(0)) Then
	WScript.Quit 0
Else
	WScript.Quit 1
End If

И пакетный файл:



Код:

Код: Выделить всё

cscript.exe //nologo "Sample.vbs" 50 && robocopy "\\dc\distr\ххх" "C:\Program Files (x86)\хххх" /MIR /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log

где «50» — значение процента вероятности срабатывания. Например, значение «20» приведёт к тому, что robocopy будет исполняться в одном случае из пяти.
Аватара пользователя
krasavchik0

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение krasavchik0 »

Цитата Iska:



Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании.
CMD/BAT - Выполнение задачи со сдвигом.




кстати вы правы. Как вариант генерировать случайное время и таймер замедления. Ну в челом все это грабли пока остановлюсь на вероятностях.
Аватара пользователя
megaloman

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение megaloman »

krasavchik0, Ваша задача не очень понятна, но внесение вероятности - угарная идея, которая скорее всего приведёт к головной боли Изображение . Попробую предложить нечто более предсказуемое.



1. В идеале, как я понял, все компьютеры должны обновиться за 10 дней (10%*10дней=100%), то есть каждый компьютер должен обновиться раз в 10 дней (в идеале).

2. Каждый компьютер имеет IP, последняя цифра которого меняется от 0 до 9

3. Каждый день характеризуется датой, вторая цифра в значении дня меняется от 0 до 9


Сравним п.2 и п.3, при равенстве цифры дня и цифры IP запустим что надо.

ИМХО, такой процесс более предсказуем.

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@Echo Off
CLS
Call :IPping "LastIP"
Call :DaySecond "Day2"
If "%LastIP%"=="%Day2%"  (
	Echo: Запускаем синхренезацию :) 
) Else (
	Echo Для этого компа "%LastIP%" сегодня "%Day2%" ничего не запускаем
)
GoTo :Eof
:IPping 
	Set "%~1="
	FOR /F "tokens=2 delims=[]" %%b in ('ping -4 -n 1 %ComputerName%') Do If Not "%%a"=="" (set _IP=%%b &GoTo :Continue)
	GoTo :Eof
	:Continue
	Set "_IP=%_IP: =%"
	Set "%~1=%_IP:~-1%"
GoTo :Eof
:DaySecond
	Set "%~1=%Date:~1,1%
GoTo :Eof





Понятно, это не идеал: кто-то попадёт раз в месяц на выходной, кому-то повезёт 31 и 1 числа.

Сколько машин должны сделать копии? Сколько машин одновременно могут, на Ваш взгляд, это делать? И сколько при этом для них потребуется времени? Как вариант, если компы включаются приблизительно в одно время, делать задержку копирования в часы для групп компов в зависимости от, например, того же IP.
Аватара пользователя
krasavchik0

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение krasavchik0 »

Цитата megaloman:



Сколько машин должны сделать копии?[/post]



30


Цитата megaloman:



Сколько машин одновременно могут, на Ваш взгляд, это делать?

[/post]



Честно сложный вопрос, Машины имеют разную ширину канала от 2 мегабит до 10 мегабит. То есть максимальная скорость у некоторых машин зарезана шереспером, что бы ПО видеонаблюдения не забило канал.




Цитата megaloman:



И сколько при этом для них потребуется времени?

[/post]



Обычно мегабайт 600-800 МБ

От 10 до 50 минут примерно. В зависимости от шейпера.




Цитата megaloman:



Как вариант, если компы включаются приблизительно в одно время, делать задержку копирования в часы для групп компов в зависимости от, например, того же IP.
CMD/BAT - Выполнение задачи со сдвигом.




Не получится при включении я еще удаляю старые версии и если пользователь будет работать в неё, то программа упадет. Хотя и при загрузке программы если пользователь вдруг её случайно закроет и при повторном открытии уже будет ошибка, так как программа увидит свежую версию, но не будет знать, что она не полностью еще скачена.....мда косяк....





Вообщем действую по старинке обновляю папку вечером и все ПК в ребут. К утру будет все ок)).
Аватара пользователя
megaloman

Re: CMD/BAT - Выполнение задачи со сдвигом.

Сообщение megaloman »

krasavchik0,
Цитата krasavchik0:



при включении я еще удаляю старые версии и если пользователь будет работать в неё, то программа упадет.
CMD/BAT - Выполнение задачи со сдвигом.




Качайте обновление в промежуточную папку, при благополучном завершении скачивания скопируйте туда мизерный файлик-флаг. Далее, сделайте запуск софта у пользователя командным файлом, который проверит его наличие, и при наличии этого файла-флага в промежуточной папке сначала переместит всё скачанное в рабочую папку, а затем уж запустит пользовательский софт. Если обновлерие скачано неполностью, флага нет, ничего никуда не перемещаем, запускается имеющийся софт.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»