首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NRPE:无法读取输出权限问题

NRPE:无法读取输出权限问题
EN

Server Fault用户
提问于 2018-01-26 10:44:06
回答 1查看 5.2K关注 0票数 1

我正试着尽可能的清楚:我的大脑会爆炸,就像那些爆炸的小猫一样。

两台机器Centos 7:

代码语言:javascript
复制
[root@192.168.10.2]# cat /proc/version
Linux version 3.10.0-693.11.6.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Thu Jan 4 01:06:37 UTC 2018

以及来自EPEL的最新NRPE:

代码语言:javascript
复制
[root@192.168.10.1]# ./check_nrpe -H 192.168.10.2
NRPE v3.2.0

我正在尝试从nagios服务器重新启动一个服务,这样我就可以设置一个事件处理程序。所有这些都是从大量脚本开始的,但现在我将问题缩小到以下几个方面:

代码语言:javascript
复制
[root@192.168.10.1]# ./check_nrpe -H 192.168.10.2 -c restart
NRPE: Unable to read output

[root@192.168.10.1]# ./check_nrpe -H 192.168.10.2 -c status
(... correct service status output ...)
Loaded: loaded (/usr/lib/systemd/system/cachefilesd.service
(... correct service status output ...)

因此,我可以状态服务,但不能启动或重新启动。

代码语言:javascript
复制
[root@192.168.10.2]# cat /etc/nagios/nrpe.conf:

[...]
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=127.0.0.1,192.168.10.1
command[status]=/lib64/nagios/plugins/status.sh
command[restart]=/lib64/nagios/plugins/restart.sh
[...]


[root@192.168.10.2]# cat /lib64/nagios/plugins/status.sh

#!/bin/bash
sudo systemctl status cachefilesd
exit 0

代码语言:javascript
复制
[root@192.168.10.2]# cat /lib64/nagios/plugins/restart.sh

#!/bin/bash
sudo systemctl restart cachefilesd
exit 0

sudoers:

代码语言:javascript
复制
[root@192.168.10.2]# cat /etc/sudoers

# Defaults specification
Defaults: nrpe !requiretty
Defaults: nagios !requiretty

nagios ALL = NOPASSWD: /sbin/service,/usr/bin/systemctl,/usr/sbin/service
nrpe ALL = NOPASSWD: /sbin/service,/usr/bin/systemctl,/usr/sbin/service

如果我输入:

代码语言:javascript
复制
[root@192.168.10.2]# sudo -u nrpe -H ./restart-cachefilesd.sh

一切都很好。

我在NRPE中启用了调试,我得到:

代码语言:javascript
复制
nrpe[5431]: Host address is in allowed_hosts
nrpe[5431]: Host 192.168.10.1 is asking for command 'restart' to be run...
nrpe[5431]: Running command: /lib64/nagios/plugins/restart.sh
nrpe[5432]: WARNING: my_system() seteuid(0): Operation not permitted
nrpe[5431]: Command completed with return code 0 and output:
nrpe[5431]: Return Code: 3, Output: NRPE: Unable to read output
nrpe[5431]: Connection from 192.168.10.1 closed.

我试着strace输出,但是对我来说太多了.

EN

回答 1

Server Fault用户

发布于 2018-02-10 21:27:22

与其将sudo放入脚本中,不如将sudo包含在nrpe.cfg文件中:

代码语言:javascript
复制
command[status]=sudo /lib64/nagios/plugins/status.sh

而不是

代码语言:javascript
复制
command[status]=/lib64/nagios/plugins/status.sh
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/894226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档