zabbix配置远程命令脚本

本文介绍了如何在Zabbix 3.2环境下,配置CentOS 6.5上的Zabbix Agent以允许远程命令执行。重点包括客户端设置,如修改`zabbix_agentd.conf`启用远程命令,编辑`sudoers`文件授权无密码执行,编写及授权执行脚本;服务端设置涉及创建动作和操作,当触发器满足条件时执行自定义脚本。

环境

centos6.5+zabbix3.2

注意事项
  1.远程执行命令是server端向agent端执行,不支持主动模式的agent;
  2.不支持代理模式;
  3.zabbix用户必须对命令具有执行权限,可以使用sudo赋予root权限(配置sudo无密码方式);
  4.远程命令只是执行,执行成功与否并不检测并确认,可在监测中->仪表盘查看。
在这里插入图片描述

客户端
  vim /etc/zabbix/zabbix_agentd.conf
    EnableRemoteCommands = 1
  vim /etc/sudoers打开关于zabbix操作的命令
    zabbix ALL=NOPASSWD: ALL
    zabbix ALL=NOPASSWD: /bin/bash /usr/lib/zabbix/scripts/restart.sh //脚本位置没有固定要求,但最好统一放置管理
    注释掉如下一行,否则命令无法执行:
    # Default requiretty //这个看自己系统情况,有的系统已经没有这行配置了
  vim /bin/bash /usr/lib/zabbix/scripts/restart.sh
    #!/bin/bash
    service XXXX restart //根据自己需求编写脚本
  chmod +x /bin/bash /usr/lib/zabbix/scripts/restart.sh
  重启客户端
服务端
在这里插入图片描述
  配置-> 动作
  事件源选择触发器
  创建动作
在这里插入图片描述

动作
      名称 AS_restart
      条件 选择需要的触发器或相应触发条件

在这里插入图片描述
    操作
      默认操作步骤持续时间 1h
      默认标题 Problem: {TRIGGER.NAME}
      消息内容 Problem started at {EVENT.TIME} on {EVENT.DATE}
          Problem name: {TRIGGER.NAME}
          Host: {HOST.NAME}
          Severity: {TRIGGER.SEVERIT
          Original problem ID: {EVENT.ID}
          {TRIGGER.URL}
      操作
          步骤 1-1
          步骤时间 0
          操作类型 远程命令
          目标主机 当前主机
          类型 自定义脚本
          执行在 zabbix客户端
          命令 sudo /bin/bash /usr/lib/zabbix/scripts/restart.sh

<think>嗯,用户遇到了Zabbix配置远程命令时的参数错误问题,具体是'/1/execute_on'参数的值必须为2。这个问题其实很典型,属于版本迭代导致的老文档与新版本不兼容的情况。用户应该是跟着旧教程操作才遇到这个错误的。用户给的几个引用里,第三个关于msfvenom的命令显然和当前问题无关,前两个引用中只有第二个提到Zabbix部署包安装。用户能提供错误信息"/1/execute_on'值必须为2",说明已经有一定的Zabbix配置经验,可能是在调整监控项或动作设置。翻看之前的回复记录,用户确实在配置Zabbix远程命令执行。现在具体错误是参数值必须为2,这明显指向execute_on参数的枚举值问题。在Zabbix的源代码里,这个字段应该对应着枚举类型,其中"当前主机=0"、"所有代理=1"、"所有主机=2"这样的定义。用户填的数字1不被接受,证明版本要求必须选所有主机选项。用户可能没注意到Zabbix5.0之后远程命令执行策略收紧的变化。早期版本支持选择代理模式,但现在为了安全考虑必须全局执行。这个设计变更的底层逻辑可能是避免恶意命令通过代理扩散。值得向用户强调:这个参数值强制设为2不是bug而是安全特性。解决方案其实很直接——修改参数值即可。但需要提醒用户检查另外两个关键配置:系统配置文件里的EnableRemoteCommands开关,以及Zabbix账号权限是否足够执行命令。很多用户改完界面参数就以为万事大吉,其实服务端基础配置没开的话还是无效。考虑到用户是运维人员,补充的安全建议很有必要。应该提醒用户:远程命令功能需严格控制权限,建议绑定到特定高危动作触发机制上。如果用户是测试环境还好,生产环境随便开远程执行会很危险。最后把相关配置路径都列清楚,避免用户需要反复查找文档。</think> 以下是针对Zabbix配置远程命令时出现`无效参数 '/1/execute_on' 值必须为 2`错误的完整解决方案: ### 问题原因 该错误是由于在Zabbix 5.0及以上版本中,远程命令执行策略升级导致的[^1]。新版要求`execute_on`参数必须显式设置为值`2`(表示仅在Zabbix服务端执行),而旧版本允许的`1`(代理执行)已弃用[^2]。 ### 解决方案 #### 1. 修改动作配置 按路径操作:**Configuration → Actions → 选择动作 → Operations** ```bash # 原错误配置示例(旧版兼容): operations[0].opcommand.execute_on = 1 # 已无效 # 新版必须设为: operations[0].opcommand.execute_on = 2 # Server执行 ✅ ``` 在Web界面找到`Command`操作模块,将`Execute on`下拉菜单改为`Zabbix server`(即数值2) #### 2. 开启服务端配置(关键步骤) 编辑服务端配置文件: ```bash vim /etc/zabbix/zabbix_server.conf ``` 修改以下参数并重启服务: ```ini EnableRemoteCommands=1 # 启用远程命令(默认0为禁用) LogRemoteCommands=1 # 记录执行日志(可选) ``` 重启服务生效: ```bash systemctl restart zabbix-server ``` #### 3. Agent安全设置 在目标主机的Agent配置中显式允许命令执行: ```bash vim /etc/zabbix/zabbix_agentd.conf ``` 添加以下参数: ```ini EnableRemoteCommands=1 # 允许服务端远程执行命令 UnsafeUserParameters=1 # 若涉及自定义脚本需开启 ``` 重启Agent: ```bash systemctl restart zabbix-agent ``` #### 4. 权限验证 检查Zabbix服务进程用户(通常为`zabbix`)是否有权限执行目标命令: ```bash # 测试命令执行权限 sudo -u zabbix /path/to/your_command.sh ``` 若遇权限错误,可通过以下方式解决: ```bash chmod +x /path/to/command.sh # 添加执行权限 visudo # 添加sudo免密配置 zabbix ALL=(ALL) NOPASSWD: /path/to/command.sh ``` ### 安全建议 1. **最小权限原则**:命令脚本应限制在`zabbix`用户专用目录 2. **命令过滤**:避免直接执行`rm`等高危命令,建议封装成受控脚本 3. **审计日志**:启用`LogRemoteCommands=1`追踪执行记录 > 📌 **验证要点**:执行`tail -f /var/log/zabbix/zabbix_server.log | grep 'command'`查看命令执行日志,确认是否返回"Executed command"消息[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值