如何使用NRPE在指定计算节点执行脚本并返回执行结果?
使用NRPE在指定计算节点执行脚本并获取结果
前提准备
- 在所有目标计算节点上安装NRPE服务与基础插件:
- Debian/Ubuntu系统:
apt install nagios-nrpe-server nagios-plugins -y - RHEL/CentOS系统:
yum install nrpe nagios-plugins -y
- Debian/Ubuntu系统:
- 在监控控制节点上安装NRPE客户端工具:
apt install nagios-plugins-nrpe -y(Debian/Ubuntu)或yum install nagios-plugins-nrpe -y(RHEL/CentOS)
配置目标计算节点的NRPE
- 编辑NRPE配置文件(路径通常为
/etc/nagios/nrpe.cfg):- 修改
allowed_hosts参数,添加监控控制节点的IP地址,限制仅允许指定节点发起请求:allowed_hosts=127.0.0.1,192.168.1.100 # 替换为你的监控节点IP - 添加自定义执行命令,配置一个允许运行指定脚本或传递命令参数的条目:
# 配置运行自定义脚本的命令,$ARG1$用于接收外部传递的参数 command[run_custom_task]=/usr/local/bin/exec_script.sh $ARG1$
exec_script.sh(用于接收参数并执行命令):#!/bin/bash # 接收传递的命令参数并执行 EXEC_CMD="$1" $EXEC_CMD exit $? - 修改
- 给脚本添加执行权限并设置正确的所属用户:
chmod +x /usr/local/bin/exec_script.sh chown nagios:nagios /usr/local/bin/exec_script.sh - 重启NRPE服务使配置生效:
# Debian/Ubuntu systemctl restart nagios-nrpe-server # RHEL/CentOS systemctl restart nrpe - 开放防火墙5666端口(NRPE默认通信端口):
# UFW防火墙 ufw allow 5666/tcp # firewalld firewall-cmd --add-port=5666/tcp --permanent firewall-cmd --reload
从监控节点发起命令执行并获取结果
使用check_nrpe工具指定目标计算节点,调用预先配置的自定义命令并传递待执行的命令内容:
# 替换为目标计算节点IP,"your_command_here"替换为实际要执行的命令 check_nrpe -H 192.168.1.200 -c run_custom_task -a "your_command_here"
执行后即可直接在监控节点的终端上获取目标节点脚本/命令的输出结果。
关键注意事项
- 安全限制:避免直接配置允许执行任意命令,尽量通过固定脚本封装执行逻辑,仅传递必要参数,防止命令注入风险。
- sudo权限:若待执行的命令需要管理员权限,需在目标节点的
sudoers文件中添加NRPE用户的免密权限:nagios ALL=(ALL) NOPASSWD: /usr/local/bin/exec_script.sh - 日志排查:若执行失败,可查看NRPE日志(路径通常为
/var/log/nagios/nrpe.log)定位问题。
内容的提问来源于stack exchange,提问作者Gopi Krishna
相关产品推荐
相关产品推荐

