0

我有一个 sensu 客户端,我在我的一个检查脚本中调试了它的 PATH,它显示:

/sbin:/usr/sbin:/bin:/usr/bin:/etc/sensu/plugins:/etc/sensu/handlers

如何为 sensu 自定义此 PATH,例如:我想将 /usr/local/bin 添加到 PATH 的末尾,结果为:/sbin:/usr/sbin:/bin:/usr/bin:/etc /sensu/plugins:/etc/sensu/handlers:/usr/local/bin

我尝试了很多方法但没有成功,我尝试过:

  1. 将 sensu 用户的 SHELL 设置为 /bin/bash(而不是默认的 /bin/false),并在 sensu 用户的主目录 /opt/sensu 下添加 .bashrc|.profile,使用以下行:export PATH=$PATH:/usr/local/bin
  2. 编辑/etc/default/sensu,添加这一行PATH=$PATH:/usr/local/bin
  3. 通过阅读:https://sensuapp.org/docs/latest/clients,我USER=ec2-user在 /etc/default/sensu 中设置,重新启动 sensu 客户端后,我清楚地看到 sensu 客户端进程正在由 ec2-user 运行,但是,令人惊讶的是, PATH 与 ec2-user 不同

上面的所有 1,2 和 3 都不起作用,在我用 python 编写的检查脚本中,我有这些 lins:

from subprocess import call, Popen, PIPE
import os
import sys
import shlex

import platform
print os.environ["PATH"]

proc = Popen(['which', 'python'],
        stdout=PIPE,
        stderr=PIPE)
out, err = proc.communicate() #does not return until the process has terminated.
print(out)
print(err)
#print(platform.__dict__)
print(platform.python_version())

proc = Popen(['whoami'],
        stdout=PIPE,
        stderr=PIPE)
out, err = proc.communicate() #does not return until the process has terminated.
print(out)
print(err)
sys.exit(0)

输出是:

/sbin:/usr/sbin:/bin:/usr/bin:/etc/sensu/plugins:/etc/sensu/handlers
/usr/bin/python   
2.6.6 
ec2-user

更新,而我在我的 python 检查脚本中写了这一行:

proc = Popen(['bash','--login', '-x'], stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
print(out)
print(err)

我看到它输出:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sensu/plugins:/etc/sensu/handlers:/usr/local/sbin:/usr/local/bin

然而,另一个输出令人惊讶.... "which python" -> /usr/bin/python, "python --version" -> 2.6.6

请求帮助....

4

2 回答 2

0

添加以下行

  • 导出 PATH=$PATH:/usr/local/bin

在“ /etc/sysconfig/sensu-client ”中。如果不存在,请创建文件。重新启动您的客户端,您的路径将被更新。

于 2016-07-28T09:57:57.437 回答
0

那么您是否尝试将PATH添加到/etc/default/sensu

PATH=$PATH:/usr/local/bin

https://github.com/sensu/sensu-build/blob/master/sensu_configs/upstart/sensu-client.conf#L30

. /etc/default/sensu会让它工作。

于 2015-09-30T00:00:30.210 回答