Появилась необходимость автоматизировать установку агента 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 раза мышкой. Учетка, под которой вы это делаете, должна иметь права администратора на удаленных серверах. Естественно нужны все сетевые доступы для такого вида установки, а также уверенность, что установку не остановит политики безопасности.
