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

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

问题描述

特殊问题.由于某些原因,无法正确识别stdout中的值.我正在尝试做的是grep正在监听的端口的值,并尝试匹配.如果存在定义的端口(即,正在侦听则生成一条消息,否则,则生成另一条消息).

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

以下是输出:

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"
}

如您所见,Ansible报告正在未监听端口,而上一个任务明确告诉我正在'9071'上监听端口IS(以及当前的任务是从<获取值c1>向我显示端口值.

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 }}"

...与此:

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??

再次感谢您的帮助!

亚历克斯

推荐答案

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

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

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

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