解决zabbix的zabbix_get获取客户端数据爆“standard in must be a tty”

简介:

(1)如题所示,我的zabbix客户端上有这样一个脚本:

1
[root@mpdb01 scripts] # vim /usr/local/zabbix/scripts/paycompletion12.sh

其内容如下:

1
2
3
#!/bin/bash
 
echo  "/home/oracle/scripts/paymentcompletion.sh"  su  - oracle

上面的脚本意思很简单,就是以oracle用户的身份执行一个统计脚本

(2)修改该zabbix_agentd配置文件,添加一个“UserParameter”:

1
[root@prx01 scripts] # vim /usr/local/zabbix/etc/zabbix_agentd.conf

添加了如下内容:

1
UserParameter=paycompletion12,/usr/local/zabbix/scripts/paycompletion12.sh

(3)接着我在zabbix_server上测试获取数据时,爆了如题所示错误:

1
2
[root@nmp01 ~] # /usr/local/zabbix/bin/zabbix_get -s 10.110.80.117 -k paycompletion12
standard  in  must be a  tty

问题思考

对于这个问题, zabbix爆的错是“规定必须是一个tty”。我想问题原因应该是这样的:/usr/local/zabbix/scripts/paycompletion12.sh 这个脚本我测试的时候是用的是root用户,因此 su – oracle时自然不用输入密码,但是zabbix在执行这个脚本时用的用户是zabbix,因此按正常流程执行 su – oracle 时是需要输入密码的,但是显而易见zabbix_get去获取数据是不可能给你提供一个交互界面去输入密码的,因此报错

问题解决

其他操作不变,只需要修改zabbix_agentd配置文件,将“AllowRoot”设置成1就行。这样这个zabbix_agentd就拥有了root权限,因此自然就可以执行脚本获取数据了。具体操作如下:

1
[root@prx01 scripts] # vim /usr/local/zabbix/etc/zabbix_agentd.conf

修改以下内容:

AllowRoot=1

再次使用zabbix_get获取数据,显然是不会报错了,效果如下:

wKiom1f-6oGSwzpNAABM-XZT-1w594.png



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1861367,如需转载请自行联系原作者

相关文章
|
6月前
|
监控 关系型数据库 Linux
|
6月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
JSON 监控 前端开发
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
510 0
|
消息中间件 存储 运维
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
|
6月前
|
存储 JSON 监控
源码分析Zabbix客户端如何向服务端发起请求
源码分析Zabbix客户端如何向服务端发起请求
75 2
|
监控 网络协议 Unix
zabbix通过agent客户端监控主机
zabbix通过agent客户端监控主机
105 0
|
监控 Windows
Zabbix监控Windows客户端设置
Zabbix监控Windows客户端设置
173 0
|
监控
Zabbix实战之客户端自动发现
Zabbix实战之客户端自动发现
166 0
|
存储 监控 数据可视化
Zabbix-客户端部署全过程
客户端部署全过程
317 0
|
监控 安全 Linux
Zabbix-客户端部署
Zabbix-客户端部署
143 0