Массовая установка (обновление) агента Zabbix

Появилась необходимость автоматизировать установку агента Zabbix на сервера. Написал небольшой скрипт (не без помощи ИИ конечно же), который делает это. Кроме скрипта необходима небольшая обвязка вокруг него: утилита PsExec (та что от Sysinternal), а также ещё несколько файлов. Вот вся структура каталога, которая должна быть с содержимым файлов:

Файл zabbix_agent2.conf в который прописана вся необходимая информация для подключения к серверу администрирования и его работы, кроме имени клиента, которое будет автоматически подставляться в процессе работы скрипта (берите его от своих администраторов мониторинга)

Файл PsExec.exe

Файл computers.csv в котором будут прописаны в столбец только FQDN-серверов, на которые требуется установка (название столбца указывать не надо)

Файл скрипта set_zabbix_mass.bat. Вот его содержимое:
@echo off
chcp 65001
cd %~dp0
for /f "usebackq tokens=1 delims=;" %%a in ("computers.csv") do (
xcopy zabbix_agent2.conf .\install /I /Y /Q
set Hostname=%%a
set Hostname >> ".\install\zabbix_agent2.conf"
xcopy .\install \%%a\C$\Zabbix /I /S /Y /Q
PsExec.exe \%%a "C:\Zabbix\install_agent_silent.bat" -accepteula
if %errorlevel%==0 (
echo Success on %%a>> install-agent.log
) else (
echo Error on %%a>> install-agent.log
)
rmdir /S /Q \%%a\C$\Zabbix
set Hostname=
)
pause

Каталог install в котором содержится 2 файла:

Файл zabbix_agent2-7.4.11-windows-amd64-openssl.msi — то что требуется поставить на сервера. В вашем случае может быть другая версия. Тогда надо поправить название файла в скрипте install_agent_silent.bat

Файл скрипта install_agent_silent.bat со следующим содержимым:
msiexec /l*v C:\install-zabbix.log /i C:\Zabbix\zabbix_agent2-7.4.11-windows-amd64-openssl.msi /qn^
SERVER=192.168.77.85,192.168.77.86,192.168.77.63,192.168.77.77
setlocal enabledelayedexpansion
set "SERVICE=Zabbix Agent 2"
set "MAX_TRIES=3"
set "TRY=0"
:check
set /a TRY+=1
echo Attempt !TRY! of %MAX_TRIES%...
sc query "%SERVICE%" | find "RUNNING" >nul
if %errorlevel%==0 (
xcopy C:\Zabbix\zabbix_agent2.conf "C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf" /I /Y
net stop "Zabbix Agent 2" && net start "Zabbix Agent 2"
goto :success
)
if !TRY! lss %MAX_TRIES% (
rem Wait 5 sec...
ping -n 6 127.0.0.1 >nul
goto :check
)
rem === Check status service failed ===
echo [%date% %time%] Service "%SERVICE%" not started after %MAX_TRIES% checks
goto :eof
:success
echo Installation completed successfully.
goto :eof

Создайте всю необходимую структуру, как я описал, и после можно запускать скрипт set_zabbix_mass.bat, просто кликнув на него 2 раза мышкой. Учетка, под которой вы это делаете, должна иметь права администратора на удаленных серверах. Естественно нужны все сетевые доступы для такого вида установки, а также уверенность, что установку не остановит политики безопасности.

Добавить комментарий