FreeFileSync/scripts/autorun_for_ffs.j2

74 lines
2.7 KiB
Django/Jinja
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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