0x01 前言

一些公有云服务商或使用VMware vCloud等私有化云平台可以使用模版建立虚拟机,并且启动时可以根据定义的信息自动修改系统参数,比如这篇文章里需要用到的Hostname。

在实际使用中会遇到安装zabbix agent用于系统状态监控的情况,当量少的时候还可以手动部署安装,量大的时候这就成为影响工作效率的一个严重问题。

所以提供一个全自动或半自动解决方案是有必要的。

0x02 准备

首先,从很久以前的版本开始,zabbix agent就已经有msi安装包,而这个安装包可以为我们提供安装上的便利,关于它的一些文档请留意以下地址:

在文档的底部可以看到支持的参数与简单的安装方式:

还需要准备msi安装包,建议使用最新的安装包,我们可以从以下地址找到:

建议使用包含OpenSSL的版本,当需要配置证书加密时不再需要重新安装。

0x03 Batch

我平常很少使用Windows Batch,但这次用起来感觉不错,以下是全部内容:

:: 设置变量,安装目录
SET INSTALLFOLDER=C:\Software\ZabbixAgent

:: 设置变量,获取Hostname
SET HOSTNAME=%computername%

:: 执行msi,/qn 意为:静默模式,部署出任何内容或打开任何窗口
:: 末尾的 ^ 与Shell中的 \ 类似,用于换行
msiexec /i C:\Software\tmp\ZabbixOrigin\zabbix_agent.msi /qn^
 LOGTYPE=file^
 LOGFILE="%INSTALLFOLDER%\ZabbixAgent.log"^
 ENABLEREMOTECOMMANDS=1^
 SERVER=zbx.ngx.hk^
 LISTENPORT=10050^
 SERVERACTIVE=zbx.ngx.hk^
 HOSTNAME=%HOSTNAME%^
 TLSCONNECT=cert^
 TLSACCEPT=cert^
 TLSCAFILE="C:\Software\ZabbixAgent\ssl\ca.crt"^
 TLSCERTFILE="C:\Software\ZabbixAgent\ssl\agent.crt"^
 TLSKEYFILE="C:\Software\ZabbixAgent\ssl\agent.key"^
 ENABLEPATH=1^
 INSTALLFOLDER="%INSTALLFOLDER%"

而Zabbix agent的变量请留意以下页面:

脚本内容非常简单,如果希望安装完成后删除安装目录和脚本,可以再加一行:

rmdir C:\Software\tmp\ZabbixOrigin /S /Q

但该脚本没有检测安装结果和检测服务状态的部分,如果有需要,请自行编写。

0x04 使用

首先,脚本中任何变量或参数都可以随意修改,依我的习惯,我会在C盘下创建一个名为Software的文件夹并将自行安装的软件放置其中。而安装包的完整路径为:

C:\Software\tmp\ZabbixOrigin\zabbix_agent.msi

可以看到有个tmp的目录,也就是说它是临时的,安装完成后可以删除。

首先按脚本中的内容创建相关目录并将zabbix agent msi安装包放置到指定位置,再将脚本内容都写入到一个txt文本文档中,保存后将后缀改为bat或cmd,最后双击即可。

但需要注意的是,如果有配置TLS加密,则需要将证书先放置到指定位置,否则安装后尝试启动服务时会失败,而且不会有任何提示。

待cmd窗口自动关闭后即可打开任务管理器查看zabbix agent服务的运行情况:

上图仅用于展示,如果一切正常,那么默认是处于正在运行的状态。如果发现安装完成后无法启动,请检查zabbix agent的日志。

0x05 结语

第一次使用Batch,因为目前接触的windows环境比较多,接下来Batch也是一个学习方向,另外还要学习PowerShell。