Показать полную графическую версию : поиск процесса и установка ПО
Всем добрый день!
Помогите с написанием bat, половину сделал, но потом затык :)
Логика выполнения следующая:
Доменная сеть.
1. Необходим bat , который будет на машинах смотреть запущен ли процесс забикса агента, если да, то все хорошо.
2. если агент не установлен, то:
создать папку c:\Zabbix, в нее скопировать с ПК 1 \\server1\folder1\zabbix на ПК 2 \\server2\C$\zabbix файлы : zabbix_agentd.exe , zabbix_agentd.win.conf и zabbix_install.bat
запустить от Администратора файл zabbix_install.bat
Если установлен, но не запущен - тоже "все хорошо"?
Опять костылесипеды... Есть же GPO (https://support.microsoft.com/en-us/help/816102/how-to-use-group-policy-to-remotely-install-software-in-windows-server), ну или ansible (https://github.com/dj-wasabi/ansible-zabbix-agent), если так уж хочется. Лично я склоняюсь к GPO, особенно учитывая что для zabbix агента есть msi (https://www.zabbix.com/documentation/current/manual/installation/install_from_packages/win_msi).
Если строго по теме топика то проверить наличие процесса можно через tasklist:
tasklist /FI "imagename eq zabbix-agent.exe"
не знаю какое имя у процесса, поменять на правильное думаю понятно что нужно.
проверить наличие папки/файла и скопировать/создать можно приблизительно так:
if not exist "c:/zabbix" md "c:/zabbix"
if not exist "c:/zabbix/zabbix-agentd.exe" xcopy -Y -Q "\\server1\folder\zabbix\zabbix-agentd.exe" "c:/zabbix/zabbix-agentd.exe"
if not exist "c:/zabbix/zabbix_agentd.win.conf" xcopy -Y -Q "\\server1\folder\zabbix\zabbix_agentd.win.conf" "c:/zabbix/zabbix_agentd.win.conf"
if not exist "c:/zabbix/zabbix_install.bat" xcopy -Y -Q "\\server1\folder\zabbix\zabbix_install.bat" "c:/zabbix/zabbix_install.bat"
синтаксис и ключи нужно проверять/править, т.к. писал по памяти (лень виртуалку запускать).
здорово, есть от чего отталкиваться! Благодарствую!
уточнение, как будет выглядеть поиск именно процесса через tasklist с условием :если нет такого процесса, то ....?
чтото ввиде такого?
set ProcessName="zabbix_agent.exe"
TaskList /FI "ImageName EQ %ProcessName%" | Find /I %ProcessName%>null
Смотреть errorlevel через тот же if. в if /? есть несколько неплохих примеров.
можно даже так попробовать
TaskList /FI "ImageName EQ %ProcessName%" && (
echo действия если процесс есть (т.е. errorlevel = 0)
) || (
echo действия если процесса нет (т.е. errorlevel != 0)
)
опять же errorlevel в tasklist не помню какие при каком результате выводятся, смотреть, проверять, править.
опять же errorlevel в tasklist не помню какие при каком результате выводятся, смотреть, проверять, править. »
благодарю!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.