Синхронизация времени компьютеров локальной сети на основе рабочих групп. Приведенные ниже примеры командных файлов регулярно используются мною в малых сетях без выделенного сервера.
Для работы понадобится утилита PsExec.exe из набора Sysinternals PsTools Марка Руссиновича (англ. Mark Russinovich), она позволяет выполнить команду или запустить программу на удаленном компьютере.
Cобрать текущие показания времени со всех машин сети под управлением Windows XP, Vista, Windows 7.
Поможет нижеприведенный батник, у меня он сохранен под именем DateTimeInMyNetwork.cmd@echo offcls:: считываю букву диска, которую система присвоила Flash-disk,:: с него запускаются эти командные файлы и на нем в каталоге:: x:\tools лежат вспомогательные программы,:: и добавляю к переменной %PATH% путь к этим программамset path=%~d0/tools;%path%:: удаляю старый файл, если он естьdel "%TEMP%\networktime.log" 2>nul
set logfile="%TEMP%\networktime.log"
echo. >>%logfile%echo #-------- %DATE% %TIME% --------# >>%logfile%echo. >>%logfile%:: выполняю команду для локального компьютераEcho %date% %time% %ComputerName% >>%logfile%:: создаю в текущей директории echotime.cmd который будет:: скопирован на удаленный компьютер>echotime.cmd Echo @Echo %%date%% %%time%% %%ComputerName%%:: выполняю команду для всех компьютеров подсетиpsexec \\* -c echotime.cmd >>%logfile%del echotime.cmdtype %logfile% & echo. & pause:: В некоторых сетях для локального компьютера считывать переменные не нужно.:: Если браузинг в подсети работает плохо (net view - список в сети),:: то pcexec с параметром \\* отработает только на тех компьютерах, которые:: видны по net view в момент запуска командного файла содержащего:: параметр \\*
Синхронизировать время по времени машины с которой запускается батник.
Обратите внимание, что для контроля правильности установки времени, вызывается вышеприведенный батник (командный файл, файл пакетной обработки)
@ECHO OFFclsif "%~1"=="" goto HELPif "%~1"=="?" goto HELPif "%~1"=="/?" goto HELPif "%~1"=="-?" goto HELP:: считываю букву диска, которую система присвоила Flash-disk,:: с него запускаются эти командные файлы и на нем в каталоге:: х:\tools лежат вспомогательные программы,:: и добавляю к переменной %PATH% путь к этим программамset path=%~d0/tools;%path%:: сейчас настроена на синхронизацию сети с часами станции:: где запускается этот командный файл:: При пустом экране будет ожидать ввода пароля пользователя:: В параметре передать имя учетной записи с административными правамиset mycomp=%computername%echo.echo Ведите пароль пользователяecho.echo Wating for account password
echo.psexec.exe -u %1 -e \\* NET TIME \\%mycomp% /SET /Yping -n 5 127.0.0.1 >nulDateTimeInMyNetwork.cmdgoto :EOF
:HELPecho.echo.echo Использование:echo.echo net_time_set.cmd USERecho.echo где USER - имя учетной записи с правами администратораecho.echo.echo.pause>>nul
Проверить sntp на машинах:
@ECHO OFFcls:: считываю букву диска, которую система присвоила Flash-disk,:: с него запускаются эти командные файлы и на нем в каталоге:: х:\tools лежат вспомогательные программы,:: и добавляю к переменной %PATH% путь к этим программамset path=%~d0/tools;%path%:: для всех станций подсетиpsexec.exe \\* NET TIME /querysntp | find "SNTP:"
:: для отдельной, имя передать в параметре.rem psexec.exe \\%1 NET TIME /querysntpecho.pause
Установить sntp для всех машин сети:
@ECHO OFFcls:: считываю букву диска, которую система присвоила Flash-disk,:: с него запускаются эти командные файлы и на нем в каталоге:: х:\tools лежат вспомогательные программы,:: и добавляю к переменной %PATH% путь к этим программамset path=%~d0/tools;%path%:: До запуска убедиться, что UDP 123 порт открыт.psexec.exe \\%1 NET TIME /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
:: пауза 5 секPing -n 5 127.0.0.1psexec.exe \\%1 net stop "Служба времени Windows"
Ping -n 5 127.0.0.1psexec.exe \\%1 net start "Служба времени Windows"
Ping -n 5 127.0.0.1psexec.exe \\%1 net time /querysntp | find "SNTP:"
Ping -n 5 127.0.0.1psexec.exe \\%1 w32tm /resync /rediscoverecho.pause
Последнее время в качестве sntp сервера, как правило использую наш ntp.time.in.ua Отличается хорошей доступностью и стабильностью.
2 комментария:
Спасибо огромное!
Вся подборка - лучшие статьи.
По синхронизации - наполненнее и короче не видел. По другим - такого вообще не видел. Хотя, казалось бы, все просто. Но это - когда прочитаешь напмсанное другим. Что особенно отличает - тут все сжато и полно. Респект.
Спасибо за отзыв. Будете использовать в работе, обратите внимание на то, что батники писались "на скорую руку" и тестировались большей частью на 32-х разрядной XP.
Отправить комментарий