generated from helmut/template
74 lines
2.7 KiB
Django/Jinja
74 lines
2.7 KiB
Django/Jinja
@echo off
|
||
chcp 65001
|
||
setlocal enabledelayedexpansion
|
||
echo Запуск универсальной синхронизации FreeFileSync...
|
||
echo.
|
||
|
||
:: --- НАСТРОЙКИ ---
|
||
set "FFS_PATH=C:\Program Files\FreeFileSync\FreeFileSync.exe"
|
||
set "Z_SENDER=C:\Program Files\Zabbix Agent\zabbix_sender.exe"
|
||
set "Z_SERVER=192.168.14.7"
|
||
|
||
:: --- ЛОГИКА ИМЕНИ ХОСТА ---
|
||
set "Z_HOSTNAME={{ inventory_hostname }}"
|
||
|
||
:: TLS параметры (убедись, что кавычки внутри кавычек не ломают строку)
|
||
set Z_TLS=--tls-connect psk --tls-psk-identity "%Z_HOSTNAME%" --tls-psk-file "C:\Program Files\Zabbix Agent\psk.key"
|
||
|
||
:: Путь к логам
|
||
set "LOG_DIR=%~dp0Logs"
|
||
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
|
||
|
||
:: 1. СБОР СПИСКА ФАЙЛОВ И ОТПРАВКА DISCOVERY
|
||
echo Поиск файлов .ffs_batch в %~dp0...
|
||
|
||
set "JSON={\"data\":["
|
||
set "first=1"
|
||
|
||
:: Собираем JSON для Zabbix
|
||
for %%F in ("%~dp0*.ffs_batch") do (
|
||
if !first! == 0 (set "JSON=!JSON!,")
|
||
{% raw %}set "JSON=!JSON!{\"{#FFS_NAME}\":\"%%~nF\"}"{% endraw %}
|
||
set "first=0"
|
||
)
|
||
set "JSON=!JSON!]}"
|
||
|
||
if !first! == 1 (
|
||
echo [%date% %time%] Ошибка: Файлы .ffs_batch не найдены! >> "%LOG_DIR%\sync_errors.log"
|
||
exit /b 1
|
||
)
|
||
|
||
echo Отправка списка задач в Zabbix для автообнаружения...
|
||
"%Z_SENDER%" %Z_TLS% -z %Z_SERVER% -s "%Z_HOSTNAME%" -k ffs.discovery -o "%JSON%"
|
||
|
||
echo Ожидание синхронизации Zabbix (30 сек)...
|
||
timeout /t 30 /nobreak >nul
|
||
|
||
:: 2. ОСНОВНОЙ ЦИКЛ ЗАПУСКА
|
||
:: Используем поиск файлов напрямую в цикле, чтобы избежать проблем с переменной FOUND_TASKS
|
||
for %%F in ("%~dp0*.ffs_batch") do (
|
||
set "T=%%~nF"
|
||
echo -------------------------------------------
|
||
echo Запуск задачи: !T!...
|
||
|
||
:: Запуск FreeFileSync
|
||
"%FFS_PATH%" "%%F"
|
||
|
||
:: Сохраняем код возврата
|
||
set "RET_CODE=!errorlevel!"
|
||
|
||
echo Задача !T! завершена с кодом !RET_CODE!. Отправка в Zabbix...
|
||
|
||
:: Отправка в Zabbix
|
||
"%Z_SENDER%" %Z_TLS% -z %Z_SERVER% -s "%Z_HOSTNAME%" -k ffs.status[!T!] -o !RET_CODE! -vv
|
||
|
||
:: Безопасное логирование без использования ELSE внутри скобок цикла
|
||
echo [%date% %time%] !T! завершен с кодом !RET_CODE! >> "%LOG_DIR%\sync_log.txt"
|
||
if !RET_CODE! NEQ 0 (
|
||
echo [%date% %time%] !T! ошибка !RET_CODE! >> "%LOG_DIR%\sync_errors.log"
|
||
)
|
||
)
|
||
|
||
echo.
|
||
echo Все найденные задачи выполнены.
|
||
pause |