解決zabbix的zabbix_get獲取客戶端數據爆“standard in must be a tty”

(1)如題所示,我的zabbix客戶端上有這樣一個腳本:

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

其內容如下:

#!/bin/bash

echo "/home/oracle/scripts/paymentcompletion.sh" | su - oracle

上面的腳本意思很簡單,就是以oracle用戶的身份執行一個統計腳本

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

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

添加了如下內容:

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

(3)接着我在zabbix_server上測試獲取數據時,爆瞭如題所示錯誤:

[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權限,因此自然就可以執行腳本獲取數據了。具體操作如下:

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

修改以下內容:

AllowRoot=1

再次使用zabbix_get獲取數據,顯然是不會報錯了,效果如下:

wKiom1f-6oGSwzpNAABM-XZT-1w594.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章