我编写了一个bash脚本来获取写入/usr/local/nagios/etc/resource.cfg文件的授权标记令牌。 bash脚本工作正常,在resource.cfg中,令牌值保存如下,
ACCESS_TOKEN="Authorization: Bearer 38255d19-724a-4e2c-b8bc-1234retff13"
配置nagios服务时,我需要从上面的文件中读取授权头。
define command{
command_name check_post_https_with_args
command_line /usr/local/nagios/libexec/check_http -H $HOSTADDRESS$ -S -u $ARG1$ -k /usr/local/nagios/etc/resource.cfg echo $ACCESS_TOKEN --method=POST --post $ARG2$ -T 'application/json'
}
define service{
use generic-service
host_name www.cardgen.com
service_description post request checker
is_volatile 0
check_period 24x7
check_interval 1
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
contact_groups admin_group
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_post_https_with_args!/api/load/validatereadDetails=true!'{\"referenceId:145\",\"amount:500\"}'
}
这似乎不起作用,任何人都可以指导我如何通过读取文件来访问命令中的标头值?
答案 0 :(得分:0)
由于check_http
插件不支持直接从文件加载标题,因此您应使用resource.cfg
作为敏感数据(如用户名或宏$USERx$
中的密码)的存储空间。
因此,您的resource.cfg
文件应包含以下内容:
$USER3$=Bearer
$USER4$=38255d19-724a-4e2c-b8bc-1234retff13
这应该是你的命令定义:
define command{
command_name check_post_https_with_args
command_line /usr/local/nagios/libexec/check_http -H $HOSTADDRESS$ -S -u $ARG1$ -k "Authorization: $USER3$ $USER4$" --method=POST --post $ARG2$ -T 'application/json'
}
PS:你不能将所有这些存储在一个宏中,因为Nagios宏不能包含 space 字符。