标准输出没有被正确传递? [英] stdout is not being passed correctly?

查看:26
本文介绍了标准输出没有被正确传递?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

特殊问题.出于某种原因,标准输出中的值没有被正确识别.我想要做的是 grep 正在侦听的端口的值并尝试匹配.如果定义的端口存在(即,被监听产生一条消息,否则产生另一条消息).

---- 名称:check_prometheus_status_kafkashell:/usr/sbin/ss -lnt|awk '{print $4}'|grep 9071 |sed 's/\*//'|sed 's/\://'注册:prom_status- 调试:var=prom_status.stdout标签:- check_prometheus_status_kafka- 名称:post_message_prom_kafka调试:msg="Prometheus for Kafka {{ (kafka_prom_port == prom_status.stdout) | 三元 ('', 'NOT') }} 监听 {{ kafka_prom_port }} - 当前监听值为 {{ prom_status.stdout }}"标签:- post_message_prom_kafka

输出如下:

TASK [kafkanodes : check_prometheus_status_kafka] **************************************************************************************************************更改:[mifid-cnj-prod-k1.bnymellon.net]任务 [kafkanodes : debug] **********************************************************************************************************************************************好的:[mifid-cnj-prod-k1.bnymellon.net] =>{prom_status.stdout":9071"}任务 [kafkanodes : post_message_prom_kafka] ************************************************************************************************************************好的:[mifid-cnj-prod-k1.bnymellon.net] =>{"msg": "Prometheus for Kafka 不监听 9071 - 当前监听值为 9071"}

如您所见,Ansible 报告端口未被侦听,而前一个任务明确告诉我端口正在侦听9071"(以及当前任务它从 prom_status.stdout 获取值向我显示端口值).

现在,如果我替换这一行:

debug: msg="Prometheus for Kafka {{ (kafka_prom_port == prom_status.stdout) | 三元 ('', 'NOT') }} 监听 {{ kafka_prom_port }} - 当前监听值为 {{prom_status.stdout }}"

...这样:

debug: msg="Prometheus for Kafka {{ (kafka_prom_port == 9071) | 三元 ('', 'NOT') }} 监听 {{ kafka_prom_port }} - 当前监听值为 {{ prom_status.标准输出}}"

...它有效.我在这里错过了什么??

再次感谢您的帮助!!

亚历克斯

解决方案

强制将 stdout 字符串强制转换为数字:(kafka_prom_port == prom_status.stdout|int)

Peculiar problem. For some reason, the value in stdout is not being recognized correctly. What I am trying to do is to grep value of the port being listened on and try to match. If defined port exists (i.e., being listened produced one message, if not, produce another).

---
  - name: check_prometheus_status_kafka
    shell: /usr/sbin/ss -lnt|awk '{ print $4}'|grep 9071 |sed 's/\*//'| sed 's/\://'
    register: prom_status
  - debug: var=prom_status.stdout
    tags:
      - check_prometheus_status_kafka

  - name: post_message_prom_kafka
    debug: msg="Prometheus for Kafka {{  (kafka_prom_port == prom_status.stdout) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}"
    tags:
      - post_message_prom_kafka

Here is the output:

TASK [kafkanodes : check_prometheus_status_kafka] **********************************************************************************************************
changed: [mifid-cnj-prod-k1.bnymellon.net]

TASK [kafkanodes : debug] **********************************************************************************************************************************
ok: [mifid-cnj-prod-k1.bnymellon.net] => {
    "prom_status.stdout": "9071"
}

TASK [kafkanodes : post_message_prom_kafka] ****************************************************************************************************************
ok: [mifid-cnj-prod-k1.bnymellon.net] => {
    "msg": "Prometheus for Kafka NOT listening on 9071 - Current Listen value is 9071"
}

As you can see, Ansible is reporting that port is NOT being listend on, while the previous task explicitly tells me that port IS being listened on '9071' (as well as the very current task which gets value from prom_status.stdout shows me the port value).

Now, if I replace this line:

debug: msg="Prometheus for Kafka {{  (kafka_prom_port == prom_status.stdout) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}"

...with this:

debug: msg="Prometheus for Kafka {{  (kafka_prom_port == 9071) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}"

...it works. What am I missing here??

Thanks yet again for your help!!

Alex

解决方案

Forcefully cast stdout string to number: (kafka_prom_port == prom_status.stdout|int)

这篇关于标准输出没有被正确传递?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆