我已经定义了一个程序来通过rsyslog文件中的omprog模块处理日志,如下所示:
module(load="omprog")
if $programname == 'myprogram' and getenv('ENV_FOO') == 'foo_value' then {
action(type="omprog" binary="/pathto/my_log_handler.py")
}
我已验证rsyslog继承环境变量ENV_FOO并启动二进制文件,但是运行my_log_handler.py的子进程似乎并未继承环境变量。我已经测试过,在my_log_handler.py中包含以下代码段时,从外壳程序运行时可以正确打印“ foo_value”,但在rsyslog的omprog模块触发时则不打印任何内容。
print(os.environ['ENV_FOO'])
是否有办法让rsyslog的omprog模块触发的二进制文件继承rsyslog的环境变量?
这是added in rsyslog v8.38(即,从该版本开始,环境已传递到子进程)。