前言

平台上有一应用程序需要调用百度的某个接口,需要连接外网,所以编写了脚本来对百度外网的连通性进行测试。但在server端检测时出现权限不够的问题

一. Zabbix-agent 配置自定义key

~]# vim /etc/zabbix/zabbix-agent.conf
UserParameter=baidu_network_status[*], /root/bin/baidu.sh $1

脚本放置目录为/root/bin下

需要重启zabbix-agent服务
~]# service zabbix-agent restart

二. 在Zabbix-Server端测试

Zabbix中自定义Key执行时权限不够

三. 问题排查

1. agent端查看脚本使用有执行权限

Zabbix中自定义Key执行时权限不够

我们知道脚本的执行者是zabbix,而执行权限是所有人都可执行。直接执行脚本是可以执行的,那么我们切换用户身份执行以下

2. agent端切换用户身份执行

Zabbix中自定义Key执行时权限不够

果真切换用户身份无法执行命令,这时我才猛然醒悟,zabbix用户是无法进入到root用户的家目录的,由下图可以看出,/root目录的权限是550,zabbix无法进入,更不用提执行命令了。
Zabbix中自定义Key执行时权限不够

四. 解决问题

将要运行的脚本放在zabbix用户可以执行的目录之下。为了统一规范,将所有脚本放置在/etc/zabbix/scripts目录下。

1.常见脚本目录

~]# mkdir -pv /etc/zabbix/scripts
~]# cp /root/bin/baidu.sh /etc/zabbix/scripts

2.修改zabbix-agent配置文件

Zabbix中自定义Key执行时权限不够

3.重启zabbix-agent

~]# service zabbix-agent restart

五.server端测试key

Zabbix中自定义Key执行时权限不够
可以看到此时能够获取值了。